2

タイトルがうまく説明できなくてすみません。

私は調査を行いましたが、このトピックに関する回答は見つかりませんでした。

Point Start;
Point End;
float Distance;

これは私が助けを必要としているものです。ポイントStartをポイントEndに向かって移動する必要があります。距離だけです。

たとえば、 Start(0, 0)で、End(11, 17)で、Distance2.5であるとします。

勾配は17/11別名17 オーバー 11になります。しかし、2点間の距離は? 2点間の距離が20fだとしましょう。ポイントStartをポイントEndに向かって、Distance、つまり2.5fで移動したいと考えています。

したがって、最終的に、点Startと点Endの間の距離は17.5 (20-2.5) になります

しかし、前に述べたように、インターネットやフォーラムでこれに関する情報を見つけることができませんでした。2 点間の距離 (勾配ではない) を取得するにはどうすればよいですか? そして、距離に沿ってポイントを特定の距離だけ移動するにはどうすればよいですか?

私が自分自身を説明できることを願っています。ありがとう

4

3 に答える 3

4

古い質問に回答して申し訳ありませんが、選択した回答は完全に正しくありません。

yDiff = Math.Abs(Start.Y - End.Y);
xDiff = Math.Abs(Start.X - End.X);
distance = Math.Sqrt(yDiff * yDiff + xDiff * xDiff)

2 つの xDiff の間に、+ 記号ではなく、乗算 * 演算子があることに注意してください。

* 記号の代わりに + 記号を付けると、X 距離が実際よりも短く表示されます。このバグを見つけるのに時間がかかりました。しばらく間違った場所を探していました... -.-

于 2013-07-07T16:45:48.553 に答える
1

直角三角形の関係を使用します。

c*c = a*a + b*b

ここで、c は最長辺 (斜辺) です。

yDiff = Math.Abs(Start.Y - End.Y);
xDiff = Math.Abs(Start.X - End.X);
distance = Math.Sqrt(yDiff *yDiff + xDiff*xDiff)
于 2013-02-22T03:34:23.720 に答える
1

ポイント、スロープ、距離があります:

次の式を使用して座標を取得できます。

Y = m(d/(1+m^2)^(1/2) + x) - mx + y, x=0,y=0, d= 2.5, m=17/11

そして、次の方程式を解くことで X を得ることができます。

Y=17/11(X)
于 2013-02-22T03:43:02.393 に答える