在java swing中围绕圆弧旋转矩形
我想把这个小长方形绕着圆的圆周移动,这样我看起来和移动起来都像一个佳能
代码
private void doDrawing(Graphics g){
g.setColor(Color.BLUE);
g.fillArc(-CANON_RADIUS/2, this.getHeight()-CANON_RADIUS/2, CANON_RADIUS, CANON_RADIUS, 0, 90);
Graphics2D g2d = (Graphics2D) g;
g2d.setColor(Color.BLUE);
Rectangle rect = new Rectangle(CANON_RADIUS/2, this.getHeight()-CANON_RADIUS/2, CANON_WIDTH, CANON_HEIGHT);
AffineTransform transform = new AffineTransform();
transform.rotate(Math.toRadians(-60), rect.getX() + rect.width/2, rect.getY() + rect.height/2);
Shape transformed = transform.createTransformedShape(rect);
g2d.fill(transformed);
}
此代码围绕其中心旋转矩形。如何绕圆周旋转矩形
# 1 楼答案
首先,您可以使用转换矩阵,就像您已经在使用: http://en.wikipedia.org/wiki/Transformation_matrix
编辑: 看看你的代码,你想旋转你的佳能围绕一个锚。请查看javadocs: http://docs.oracle.com/javase/7/docs/api/java/awt/geom/AffineTransform.html
第一个参数是你的旋转,最后两个参数必须是你大炮基地的中间!就像屏幕一样。高度和0对于您的示例:
第二种方法是围绕底面半径移动旋转矩形的中间部分
like(伪代码):