2011-12-21 6 views
1

イメージを回転して、回転イメージに配置する新しいイメージの新しい座標を取得する必要があります。PHP - 数学 - 回転後の新しい座標

$x0 = 100; 
$x1 = 120; 
$y0 = 100; 
$y2 = 200; 

と大きな画像上で実行時計回りの回転は次のとおりです:非回転の大きな画像に小さな画像の座標を想定し

$rotation = -3.5; 

私は今の更新された座標を取得できますか大きな画像(今回転した画像)に小さな画像を配置しますか?

(免責事項:この質問は、イメージの回転後にPHPで新しい座標を計算する方法であるため、解決する方法を扱わない他の "回転後の座標"の質問と重複しませんこの問題はPHPコードで0,0が左上隅にあり、PHP関数を使用しています)。

+0

これはhttp://math.stackexchange.com/ –

+0

に属している可能性があります。これは部分的には数学的な問題ですが、PHPで実装する方法も知っている必要があるからです。 – Alasdair

答えて

1

イメージが回転する原点を知る必要があります。小さな画像座標から

  • Substract原産地:次に、あなたは古い座標系(あなたの大きな非回転画像)内の任意の点を取ると、次の手順を実行して、新しい座標系(あなたの大きな回転後の画像)にそれを翻訳することができますあなたが大規模な画像
  • が小さい画像座標(smallRotatedImageX + originX、smallRotatedImageY + originY)で再度原点を追加で行ったのと同じ方法で、
  • 回転] sthe小さな画像
  • (originY smallIMageX - - originX、smallImageY)

次に、小さな画像が回転され、以前の場所に配置されます。

私は以前、HTML Canvasでこの問題を抱えていました。この質問の最初の答えをご覧ください:Rotating a point about another point (2D)

それをどのように詳細に行う方法が記述されています。

+0

私はexactimageを使って外部的に回転しているので、それは中心の周りを回転していると仮定します。だから私は回転の前後に小さな画像の幅/ 2と高さ/ 2をとり、xとyに差を加えますか? – Alasdair

+1

元のポイントは古い画像の中心です。またはbigIMageX + bigIMageWidth/2、bigImageY + bigImageHeight/2 – Chris

+0

私は思ったより簡単です!ありがとう! – Alasdair