Я использую библиотеки Graphics2D от Java, чтобы рисовать различные фигуры с помощью линий, соединяющих их вместе. Некоторым из этих строк понадобится стрелка в конце строки. Формы могут находиться в любом положении, чтобы угол стрелки изменился.Как повернуть многоугольник около точки
Пока мой код рисует стрелку и вращает ее, за исключением того, что она не находится под прямым углом или в правильном месте. Когда я перемещаю фигуры вокруг экрана, стрелка появляется на орбиту формы, на которую он указывает. (Коорд х2, у2)
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 размер - размер стрелки делят 2.
INT x1, y1 - первые формы х и у Coords. (центр формы)
int y2, x2 - вторая фигура x и y координаты. (Центр формы)
Вы можете увидеть, что я имею в виду в этих картинах:
У меня есть чувство, что я близок к тому это, потому что, кажется, орбитальное форму идеально, который говорит мне, что он просто не вращается под прямым углом или точкой.
Вы можете попробовать и повернуть его, прежде чем перевести его ... – MadProgrammer
'double theta = Math.atan2 (dy, dx); 'вы пробовали распечатать это значение? – Cruncher