2010-12-16 9 views
5

四角形を形成するためにポインタの周りに4度回転させるとどうしますか?私は点の周りの点を回転させることはできますが、歪ませない矩形を作るためにはそれをオフセットすることはできません。点の周りに矩形を回転する

+2

は、あなたがこれまでのところ、それを実行しようとしましたか?いくつかのコード?ありがとう – Trufa

+3

ポインタを中心に扱うように4つのポイントを変換し、標準の回転行列メソッドで回転を行い、ポイントを元に戻します。 [説明はこちら](http://www.euclideanspace.com/maths/geometry/affine/aroundPoint/index.htm) – Michal

+0

私はそれを使用することを理解していましたが、私は単純な英語または好ましくはJavaScriptで解決策が必要です。 – Anonymous

答えて

23

ポイントを回ってポイントを回転させることができれば、四角形を回転させるのは簡単です。ちょうど4ポイントを回転させるだけです。

function rotate_point(pointX, pointY, originX, originY, angle) { 
    angle = angle * Math.PI/180.0; 
    return { 
     x: Math.cos(angle) * (pointX-originX) - Math.sin(angle) * (pointY-originY) + originX, 
     y: Math.sin(angle) * (pointX-originX) + Math.cos(angle) * (pointY-originY) + originY 
    }; 
} 

そして、あなたは各点にこれを行うことができます。ここでは

は原点を中心にポイントを回転させるjsの関数です。ここで は一例です:http://jsfiddle.net/dahousecat/4TtvU/

変更結果を確認するために角度とヒットラン...

+0

これを説明できますか? jsfiddle.net/bjhc34xk/7これは、PIの近似や多分浮動小数点数学のエラーと関係がありますか? –

+1

実験を簡単にするための動的入力用のスライダを含むFelixのフィドル - https://jsfiddle.net/brichins/0ccdd362/ – brichins

+2

@MaxMastalerz私はあなたがこれで今までに移動したと確信していますが、あなたのフィドルはおそらくあなたが思ったことをやっていない。計算の途中でエンドポイントのX座標を変更してから、中心ではなくそのオフセットポイントからY座標を回転しています。クールなゴールデンスパイラルが得られますが、これを行うつもりだと思います。https://jsfiddle.net/brichins/w2rxsbt4/ – brichins

関連する問題