Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 23.12.2015
Сообщений: 11

Не получается сделать поворот фигуры

23.12.2015, 13:16. Показов 1702. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!

Не получается сделать квадратную спираль от самых краев к центру – каждый квадрат все меньше и меньше.

Вот код.

4 класса и класс для запуска приложения RobotManager

// 1 класс

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package Robot4;
 
import java.util.ArrayList;
import java.util.List;
 
public class Robot {
    
    private double x = 0;
    private double y = 0;
    protected double course = 0;
    
     // Список для хранения линий, по которым перемещался робот
    // Пока будем использовать его без подробностей n 
    private ArrayList<RobotLine> lines = new ArrayList<RobotLine>();
    
    //конструктор
    public Robot(double x, double y){
        this.x = x;
        this.y = y;
        
    }
 
     public void forward(int distanse){
         // Запоминаем координаты робота перед перемещением
         final double xOld=x;
         final double yOld=y;
         
        // Меняем координаты
        //звезда
        // x += distanse * Math.cos(course / 50 * Math.PI);
        // y += distanse * Math.sin(course / 50 * Math.PI);
         //спираль
         x += distanse * Math.cos(course/ 180 * Math.PI);
         y += distanse * Math.sin(course/ 180* Math.PI);
         
         // Запоминаем координаты пройденного пути в списке
         // Класс List позволяет добавить объект и хранить его
         
         lines.add(new RobotLine(xOld, yOld, x, y));
         
     }
     
  
     public double getX() {
         return x;
     }
  
     public double getY() {
         return y;
     }
  
     public double getCourse() {
         return course;
     }
     public void setCourse(double course) {
         this.course = course;
     }
    
  
     public ArrayList<RobotLine> getLines() {
         return lines;    
}    
}
// 2 класс

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package Robot4;
 
import Robot4.Robot;
import javax.swing.JFrame;
 
 
public class RobotFrame extends JFrame {
 
            
        public RobotFrame(Robot robot) {
            // Устанавливаем заголовок окна
            setTitle("Robot Frame");
            // Добавляем компонент для рисования пути робота
            add(new RobotPathComponent(robot));
            // Устанавливаем размеры окна
            setBounds(100, 100, 500, 500);
 
        }
    
}
// 3 класс

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package Robot4;
 
//Класс для хранения одной линии, которую проехал робот
public class RobotLine {
 
    private double x1;
    private double y1;
    private double x2;
    private double y2;
    
    //конструктор
    public RobotLine(double x1, double y1, double x2, double y2) {
        this.x1 = x1;
        this.y1 = y1;
        this.x2 = x2;
        this.y2 = y2;
    }
    
    public double getX1() {
        return x1;
    }
 
    public double getY1() {
        return y1;
    }
 
    public double getX2() {
        return x2;
    }
 
    public double getY2() {
        return y2;
}
}
// 4 класс


Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package Robot4;
 
import Robot4.Robot;
import Robot4.RobotLine;
import java.awt.Graphics;
import javax.swing.JComponent;
 
public class RobotPathComponent extends JComponent {
 
    private Robot robot;
    
    public RobotPathComponent(Robot robot){
        this.robot = robot;
        
    }
    
    @Override
    protected void paintComponent(Graphics g){
        super.paintComponent(g);
        
        // Перебираем все линии, которые сохранились у робота
        // Несколько позже мы разберем эту конструкицю подробно
        for (RobotLine rl : robot.getLines()) {
            // Для каждой линии получаем координаты
            int x1 = (int) Math.round(rl.getX1());
            int y1 = (int) Math.round(rl.getY1());
            int x2 = (int) Math.round(rl.getX2());
            int y2 = (int) Math.round(rl.getY2());
            // И рисуем линию с координатами
            g.drawLine(x1, y1, x2, y2);
        
        
        }
        
    }
    
}
// и класс для запуска

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package Robot4;
 
import Robot4.RobotFrame;
import javax.swing.JFrame;
 
 
public class RobotManager {
 
    
    public static void main(String[] args) {
        // Количество сторон многоугольника
         final int COUNT = 4;
         //final int COUNT = 9;//звезда
        // Длина стороны
        final int SIDE = 178;
        
         Robot robot = new Robot(100, 150);
           //  Создаем замкнутую фигуру с количеством углов COUNT
            for (int i = 0; i < COUNT;i++) {
                
                robot.forward(SIDE);
                        
                robot.setCourse(robot.getCourse() + 360 / COUNT);
              
           }
    
            // Создаем форму для отрисовки пути нашего робота
            RobotFrame rf = new RobotFrame(robot);
            rf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            rf.setVisible(true);
    }
 
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.12.2015, 13:16
Ответы с готовыми решениями:

Почему не получается совершить поворот фигуры?
Не получается повернуть фигуру по заданным параметрам из формы CSHARP] else if (radioButton3.Checked) { ...

Не могу сделать поворот матрицы на каждое нажатие, и её нормальный поворот
var Form1: TForm1; m, n: integer; i, j: byte; b, a: array of integer; implementation uses Unit2, Unit3;

Поворот фигуры
Подскажите , как сделать поворот фигуры. Хочу чтобы она поворачивалась на значение записанное в Edit или хотя бы на определённое. ...

1
0 / 0 / 0
Регистрация: 23.12.2015
Сообщений: 11
25.12.2015, 09:49  [ТС]
Кто поможет! Не получается
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.12.2015, 09:49
Помогаю со студенческими работами здесь

Поворот фигуры
Необходимо реализовать афинное преобразование поворота относительно центра фигуры, аналог glRotate opengl public void Rotate(double...

Поворот фигуры
Помогите повернуть фигуру. PROGRAM Zadanie_4b; Uses Crt,Graph; VAR gd,gm,n,m:Integer; Mas:Array Of PointType; BEGIN ...

Поворот фигуры
Добрый день. Необходима программа на С++ поворота треугольника вокруг заданной точки. То есть, что бы в начале предлагалось ввести...

Поворот фигуры
Всем привет, нужна ваша помощь: Я сделал функцию для поворота фигуры, но после многократного применения фигура трансформируется,...

Поворот фигуры
необходимо повернуть фигуру на 45 градусов но кроме поворота фигура почему то изменяется в масштабе помогите разобраться! uses...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru