私はnumpyで2-dローテーションの精度について頭を悩ましてきました。実装はそう、教科書である、と左手系のための私のアプリケーションの呼び出し:numpyで2次元回転のこの実装について不正確なことはありますか?
from numpy import sin, cos
def rotate(pathx, pathy, r):
"""
pathx and pathy are lists of np.float64's recording x and y
coordinates of points to be rotated
"""
c = cos(r)
s = sin(r)
pathx = c*pathx + s*pathy
pathy = -s*pathx + c*pathy
これをテストするために、私はベクトル(1,1)と予想され、結果とpathx=[1]
に供給され、pathy=[1]
とr=arctan2(1,1)~=pi/4~=0.78539816339744828
pi/4
私は[1.4142135623730949, -0.29289321881345221]
を取得した後、x軸に合わせる。これが不合理と思われる理由は、私が何かが多く、に近いと考えているからです。0.0
にy座標があります。私は入力とsin、cos、arctan2の出力をすべてdtype=float64
にすることで、ブーストを試みましたが、それは違いはありませんでした。
私は愚かな間違いをしていますか?それとも、数値的に不安定なものがありますか?私はちょうど...
ugh!それでおしまい!すべての間違った場所を見る。私の愚かなノッギンを回してくれてありがとう。 – rschwieb
@rschwiebあなたは大歓迎です。 – miradulo