1
我寫了一個支持3個動作的程序:旋轉,平移和縮放。如何在自己周圍旋轉2D對象?
翻譯&縮放工作很好,但我有一些旋轉問題。
在代碼的開頭,我從文件中解析原點,然後在2D平面中繪製初始對象。然後,物體圍繞原點旋轉,而不是繞自身旋轉。
我檢查所有的矩陣和數學公式,但找不到確切的錯誤,有什麼想法我在哪裏出錯了嗎?
我附加旋轉的部分代碼,沒有縮放和變換。
下面是代碼的SSCCE:
import java.awt.BasicStroke;
import java.awt.BorderLayout;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.util.ArrayList;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.geom.Point2D;
import java.awt.geom.Line2D;
import java.io.IOException;
import javax.swing.JFrame;
public class SSCCE {
public static void main (String[] args) throws IOException
{
ClippingView1 CC = new ClippingView1();
CC.start();
}
}
- 這SSCCE僅支持旋轉,因爲這是我的主要問題。
任何想法的問題將不勝感激!
問候
的方法你能肯定嗎?它仍然在中心附近旋轉,即使我如上所述改變了..謝謝。將其更改爲:'currentLine = m_transforms.translate(-this.m_orX,-this.m_orY,currentLine);','currentLine = m_transforms.rotate(m_direction,currentLine);''''currentLine = m_transforms.translate(this.m_orX ,this.m_orY,currentLine);','this.m_currentLines.set(i,currentLine);' – ron 2013-04-27 19:50:51
呃,我沒有嘗試,它已經有一段時間了,但基本的旋轉總是圍繞原點,所以..但是我收集到了,你已經有所作爲了,那麼好:) – hyde 2013-04-28 05:34:41