Алгоритм поворота 2д фигуры, swing - Java

Узнай цену своей работы

Формулировка задачи:

Здравствуйте) Делаю лабу, необходимо данный треугольник повращать( на любое количество градусов) Пока как-то так:
Листинг программы
  1. import javax.swing.*;
  2. import java.awt.*;
  3. import static java.lang.Math.pow;
  4. public class LineStt {
  5. public static void main(String[] args) {
  6. MyJFrame myJFrame = new MyJFrame();
  7. myJFrame.setTitle("Lab3.Graphics");
  8. myJFrame.setBounds(45, 45, 600, 600);
  9. myJFrame.setResizable(false);
  10. myJFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  11. myJFrame.setVisible(true);
  12. }
  13. static class MyJFrame extends JFrame {
  14. public void paint(Graphics graphics) {
  15. //Первый треугольник
  16. int[] ax = {100, 140, 180};
  17. int[] ab = {190, 130, 190};
  18. graphics.drawPolygon(ax, ab, 3);
  19. //Вычисляем координаты центра
  20. int x0 = (ax[0] + ax[1] + ax[2]) / 3;
  21. int y0 = (ab[0] + ab[1] + ab[2]) / 3;
  22. //Вычисляем расстояние от центра до каждой из вершин
  23. int R1 = (int) Math.sqrt(pow(ax[0] - x0, 2) + pow(ab[0] - y0, 2));
  24. int R2 = (int) Math.sqrt(pow(ax[1] - x0, 2) + pow(ab[1] - y0, 2));
  25. int R3 = (int) Math.sqrt(pow(ax[2] - x0, 2) + pow(ab[2] - y0, 2));
  26. //Вычисляем координаты нового треугольника с градусным смещением( не спрашивайте, почему сделано через одно место)
  27. int a = (30);
  28. double x1 = R1 * Math.cos(Math.toRadians(a)) + x0, x2= R2 * Math.cos(Math.toRadians(a)) + x0, x3 = R3 * Math.cos(Math.toRadians(a)) + x0,
  29. y1= R1 * Math.sin(Math.toRadians(a)) + y0, y2 = R2 * Math.sin(Math.toRadians(a)) + y0, y3 = R3 * Math.sin(Math.toRadians(a)) + y0;
  30. int[] bx = {(int) (x1), (int) (x2), (int) (x3)};
  31. int[] bb = {(int) (y1), (int) (y2), (int) (y3)};
  32. graphics.drawPolygon(bx, bb, 3);
  33. }
  34. }
  35. }
Уже несколько часов сижу и не понимаю, почему не переворачивает-то

Решение задачи: «Алгоритм поворота 2д фигуры, swing»

textual
Листинг программы
  1.         public void paint(Graphics graphics) {
  2.             //Первый треугольник
  3.             int[] ax = {100, 140, 180};
  4.             int[] ab = {190, 130, 190};
  5.             graphics.drawPolygon(ax, ab, 3);
  6.  
  7.             //Вычисляем координаты центра
  8.             int x0 = (ax[0] + ax[1] + ax[2]) / 3;
  9.             int y0 = (ab[0] + ab[1] + ab[2]) / 3;
  10.  
  11.             //Вычисляем расстояние от центра до каждой из вершин
  12.             int R1x = (ax[0] - x0), R1y = (y0 - ab[0]);
  13.             int R2x = (ax[1] - x0), R2y = (y0 - ab[1]);
  14.             int R3x = (ax[2] - x0), R3y = (y0 - ab[2]);
  15.  
  16.             //Вычисляем координаты нового треугольника с градусным смещением( не спрашивайте, почему сделано через одно место)
  17.             double a = Math.toRadians(30);
  18.             double cosA = Math.cos(a), sinA = Math.sin(a);
  19.             double x1 = R1x * cosA + R1y * sinA + x0,  y1 = R1y * cosA - R1x * sinA + y0,
  20.                     x2 = R2x * cosA + R2y * sinA + x0, y2 = R2y * cosA - R2x * sinA + y0,
  21.                     x3 = R3x * cosA + R3y * sinA + x0, y3 = R3y * cosA - R3x * sinA + y0;
  22.  
  23.             int[] bx = {(int) (x1), (int) (x2), (int) (x3)};
  24.             int[] bb = {(int) (y1), (int) (y2), (int) (y3)};
  25.  
  26.             graphics.drawPolygon(bx, bb, 3);
  27.         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.667 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут