1

2 つの点があるとし(x1,y1)o----------------o(x2,y2)ます。

私がやろうとしているのは、(x1,y1) から距離 d だけ線に沿って移動するときに新しい座標を取得することです。しかし、(x1,y1) から離れれば離れるほど、新しい座標がますます不正確になり始める (つまり、元の線から外れてしまう) ことに気付きました。私の解決策は、 https://math.stackexchange.com/questions/25286/2d-coordinates-of-a-point-along-a-line-based-on-d-and-m-で提供された最後の回答に基づいています。どこにいるの?私はここで何か間違っていますか?または、objective-c に同じことができるクラスはありますか?

ありがとう!

float signu, signv;
float x, y;
float x1 = cp1.x;
float y1 = cp1.y;
float x2 = cp2.x;
float y2 = cp2.y;
float d = noOfSteps*pixelsPerStep;
float m = (y2-y1)/(x2-x1);
float u = d/ABS(sqrt(m*m+1));
float v = m*u;
if(x1-x1<=0)
    signu = -1;
if(y2-y1<=0)
    signv = -1;
x = x1 + signu*u;
y = y1 + signv*v;
4

1 に答える 1

1

ベクトル代数の標準的な方法を試してください:

Norm = sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1))
Assert Norm != 0

//components of direction vector
Dir_X = (x2 - x1) / Norm
Dir_Y = (y2 - y1) / Norm

x = x1 + d * Dir_X
y = y1 + d * Dir_Y
于 2012-08-18T17:38:49.453 に答える