out*_*lou 2 java translation 2d rotation affinetransform
我是一个在Java Swing上旋转和平移形状的命令模式.平移和旋转分离得很好,但是当我做60度时.旋转然后平移,平移跟随新的旋转坐标.这意味着如果我拖动鼠标,形状移动与鼠标移动矢量60度的差距是否有任何简单的解决方案?请帮忙,我在这里碰墙
我的旋转执行方法
public void execute() {
System.out.println("command: rotate " + thetaDegrees );
Iterator iter = objects.iterator();
Shape shape;
while(iter.hasNext()){
shape = (Shape)iter.next();
mt.addMememto(shape);
AffineTransform t = shape.getAffineTransform();
t.rotate(Math.toRadians(thetaDegrees), shape.getCenter().x, shape.getCenter().y);
shape.setAffineTransform(t);
}
}
Run Code Online (Sandbox Code Playgroud)
我的翻译执行方法
public void execute() {
Iterator iter = objects.iterator();
Shape shape;
while(iter.hasNext()){
shape = (Shape)iter.next();
mt.addMememto(shape);
AffineTransform t = shape.getAffineTransform();
System.out.println("Translation x :"+x + ", Translation y :"+y);
t.translate(x,y);
shape.setAffineTransform(t);
}
}
Run Code Online (Sandbox Code Playgroud)
任何帮助都可以非常感激
要完成"就地"旋转(对象绕其自身轴旋转),您必须:
请注意,可以立即应用步骤3和4.
如果在原点以外的位置尝试旋转,则实现"旋转"效果 - 物体看起来围绕原点旋转.
| 归档时间: |
|
| 查看次数: |
9883 次 |
| 最近记录: |