【发布时间】:2013-10-10 18:41:02
【问题描述】:
我正在使用 Java 的 Graphics2D 库来绘制各种形状,并用线条将它们连接在一起。其中一些行的末尾需要一个箭头。形状可以在任何位置,因此箭头的角度会发生变化。
到目前为止,我的代码绘制了箭头并旋转了它,但它从来没有处于正确的角度或正确的位置。当我在屏幕上移动我的形状时,箭头似乎围绕它要指向的形状运行。 (坐标 x2, y2)
private static void drawArrow(Graphics2D g, int size, int x1, int y1, int x2, int y2) {
double dx = x2 - x1, dy = y2 - y1;
double theta = Math.atan2(dy, dx);
AffineTransform at = AffineTransform.getTranslateInstance(x2, y2);
Polygon p = new Polygon();
p.addPoint(0, 0);
p.addPoint(size, 0 - size);
p.addPoint(0 - size, 0 - size);
at.rotate(theta, x2, y2);
java.awt.Shape shape = at.createTransformedShape(p);
g.fill(shape);
}
int size - 箭头除以 2 的大小。
int x1, y1 - 首先是 x 和 y 坐标的形状。 (形状中心)
int y2, x2 - 第二个形状 x 和 y 坐标。 (形状中心)
您可以在这些图片中看到我的意思:
我感觉我快要得到这个了,因为它似乎完美地围绕形状运行,这表明它只是没有以正确的角度或点旋转。
【问题讨论】:
-
您可以在翻译之前尝试旋转它...
-
double theta = Math.atan2(dy, dx);你试过打印这个值吗?
标签: java graphics rotation polygon