2016-03-31 22 views
0

特定の点(上端と左端)の回転を計算します。それは少し複雑です。私は元の上と左を知っています。次にスケーリングが追加され、回転が計算されます。回転した左上座標と左座標を取得

私はこれをします。 (orginal左:-350、orginalトップ:-10、f1_scale:0.544444、回転角:-30deg)

function sin(x) { 
    return Math.sin(x/180 * Math.PI); 
} 

function cos(x) { 
    return Math.cos(x/180 * Math.PI); 
} 

function rotate(x, y, a) { 
    var x2 = cos(a) * x - sin(a) * y; 
    var y2 = sin(a) * x - cos(a) * y; 
    return [x2, y2]; 
} 

var scaledLeft = -350 * f1_scale; 
var scaledTop = -10 * f1_scale; 

var rotateOut = rotate(scaledLeft, scaledTop,-30); 

これは左(x)は座標のために働くが、Y座標が遠く離れています。

誰かが私が間違っていたことを見ることができますか、誰かがこれを試しましたか?

ありがとうございます。

+1

あなたは何を回転させていますか、そして回転のポイントはどこですか? –

答えて

0

あなたはそれの背後にある数学を理解する必要があります。

  1. (x0, y0)
  2. (x1, y1)
  3. (p, q)(x1, y1)を見つけるために回転

の点の座標で回転後の座標である出発点の座標である:まず、この画像http://prntscr.com/amd2it(p, q)の値、(x0、y0)と角度aを知る必要があります。

sin(a)(q - y0) = q - y1 
y1 = q - sin(a)(q - y0) 

cos(a)(p - x0) = p - x1 
x1 = p - cos(a)(p - x0) 

かが第2の値のためにピタゴラスの定理を使用することができます。私たちが初等幾何学を適用した場合、我々はこれを取得します。

これを理解すると、コードに変換することは問題にはならないと思います。

関連する問題