で
おかげで私は、部分的にあなたの質問が、幾何学的なものであると@ImportanceOfBeingErnestに同意します。しかし、numpyはあなたが最初にやろうとしているすべての三角関数の作業を避けることができるので、私は答えを加えています。何をしたい
は(x_prev,y_prev)
と3点が同じライン上にあると(x_prev,y_prev)
と(x_new,y_new)
の間の距離が、予め設定されd
あるように(x_now,y_now)
に基づいてポイント(x_new,y_new)
を見つけることです。
適切な2次元ベクトルで作業できる場合は、三角法は必要ありません。ベクトル(x_now,y_now) - (x_prev,y_prev)
を正規化して、から移動する必要がある行の方向ベクトルを取得して、(x_new,y_new)
になります。
import numpy as np
x_prev,y_prev = (1.5, 3)
x_now,y_now = (2, 3.2)
d = 0.5
# use 2d arrays for elegant vector operations
# of course we can directly define these from coordinates if we want to
p_prev = np.array([x_prev,y_prev])
p_now = np.array([x_now,y_now])
# compute the unit direction vector for p_new - p_prev
t = p_now - p_prev
t /= np.linalg.norm(t) # use Euclidean norm by default
# p_new is simple now:
p_new = p_prev + d*t
print(p_prev)
print(p_now)
print(p_new)
(x_new,y_new)=(1.96423835,3.18569534)
上記の結果:numpyのは、あなたがエレガントにこれを処理することができます。あなたのポイントは実際に(x_now,y_now)
がからほとんど0.5
の距離にあるようなものなので、結果のベクトルは元のものとほとんど変わりません。しかし、とにかく、上記の手順は常に同じ角度で(x_prev,y_prev)
から(x_now,y_now)
までの一定の距離の新しいポイントを与えます。
'np.sinc()'の変数 'angle_'とは何ですか? – Craig
これは誤字です。それは同じ角度です – varun
あなたが何を求めているかは完全にはっきりしていません。 「アングル」とは何ですか?そしてなぜそれを2つのポイントの間に角度差と呼んでいますか?距離 'd'とは何ですか?何から距離?オリエンテーションは何ですか?オリエンテーションは何に比べて?いずれにしても、この質問はプログラミングとは関係なくジオメトリと関係しています。だから、いくつかの数学フォーラムで尋ねられるべきです。 – ImportanceOfBeingErnest