2

これはいくつかの基本的な三角法の方程式で解けると確信していますが、残念ながら理解できません。

私が必要なのは:

線形ベクトルパス2d上の次の点を見つける方法

2Dの2点のx、y座標を考えると、ある点から別の点に向かってベクトル上の次の点を見つける必要があります。基本的に最も近い線形パスを見つけます。

たとえば、上の画像では2つのポイントが与えられており、パスに沿って移動する青いポイントから赤いポイントに移動したいので、到達するまで各ステップで次の(灰色のポイント)を見つける必要があります。

どんな助けでも大歓迎です!

4

2 に答える 2

4

ブレゼンハムのラインアルゴリズムをご覧ください

于 2012-05-30T22:33:36.180 に答える
0

みなさんアドバイスありがとうございます!私はついにそれを理解しました。線形ベクトルの次の点を見つけるメソッドの基本的な Java 実装を次に示します (ステップごとに 1 つの点を移動すると仮定します)。

  public int[] getNextLinePoint(int x,int y,int x2, int y2) {
    int w = x2 - x;
    int h = y2 - y;
    int dx1 = 0, dy1 = 0, dx2 = 0, dy2 = 0;
    if (w<0) dx1 = -1; else if (w>0) dx1 = 1;
    if (h<0) dy1 = -1; else if (h>0) dy1 = 1;
    if (w<0) dx2 = -1; else if (w>0) dx2 = 1;
    int longest = Math.abs(w);
    int shortest = Math.abs(h);
    if (!(longest>shortest)) {
        longest = Math.abs(h);
        shortest = Math.abs(w);
        if (h<0) dy2 = -1; else if (h>0) dy2 = 1;
        dx2 = 0;            
    }
    int numerator = longest >> 1;
    numerator += shortest;
    if (!(numerator<longest)) {
        numerator -= longest;
        x += dx1;
        y += dy1;
    } else {
        x += dx2;
        y += dy2;
    }
    int[] res = {x, y};
    return res;
}

このコードは、次の x、y 座標を 2 要素の int[] 配列の形式で返します。みんなありがとう!

于 2012-05-31T00:02:08.130 に答える