我試圖爲此發佈一個不同的主題,但人們似乎並沒有真正理解我想要做什麼,所以,現在我已經關閉了那個並打開了這個一個給予更多細節,並將整個問題重新解釋。在Java中的某個點旋轉和繪製圖像
好的。
所以基本上,我有一個繪製橢圓的應用程序。現在,我有一定數量的點(可以是隨機的),其中我必須旋轉圖像並繪製。
使用數學我知道,通過使用角度來獲得基於橢圓的點我使用下面的公式:
final int radiusW = (width/2);
final int radiusH = (height/2);
final int angle = 120;
int pointX = (int) (radiusW + (radiusW * Math.cos(Math.toRadians(angle))));
int pointY = (int) (radiusH + (radiusH * Math.sin(Math.toRadians(angle))));
而且工作正常,我可以找到圍繞橢圓周長的絕對點。
但是,現在我正試圖在這一點上繪製圖像,以便圖像朝着橢圓的中心旋轉並以該點爲中心。
所以,爲了讓圖像旋轉到點的中心,我做了以下操作;
final AffineTransform at = new AffineTransform();
at.rotate(Math.toRadians(angle - 90), image.getWidth()/2, image.getHeight()/2);
final AffineTransformOp ato = new AffineTransformOp(at, AffineTransformOp.TYPE_BILINEAR);
然後我得到我新的旋轉的BufferedImage使用;
BufferedImage rotated = ato.filter(image, null);
但是,我似乎無法得到圖像的中心點了。
如果角度爲0,以便圖像是原始方向,那麼我會乾脆;
graphics.drawImage(rotated, pointX - rotated.getWidth()/2, pointY - rotated.getHeight()/2, this);
但是,我不知道如何找到中心點,並基於旋轉的圖像繪製它。
我知道它涉及到使用cos和sin來將原點x和點y乘以旋轉矩陣,但每次我嘗試並找出解決方案時,它總會引發完全錯誤。
任何幫助將非常感謝,因爲我花了一天的最佳時間來解決這個問題。
謝謝。