This commit is contained in:
2025-11-18 01:22:01 +03:00
parent d04c04f028
commit 51a0a6a2eb
16 changed files with 535 additions and 5 deletions

View File

@@ -0,0 +1,62 @@
@startuml
title Диаграмма состояний фигуры
[*] --> Circle : init (по умолчанию)
Circle : Красный цвет (0xFFFF0000)
Circle : radius точек = 16
Triangle : Зелёный цвет (0xFF00FF00)
Triangle : radius точек = 3
Square : Синий цвет (0xFF0000FF)
Square : radius точек = 4
Circle --> Triangle : Клавиша '2'
Circle --> Square : Клавиша '3'
Triangle --> Circle : Клавиша '1'
Triangle --> Square : Клавиша '3'
Square --> Circle : Клавиша '1'
Square --> Triangle : Клавиша '2'
Circle : velocity движет позицию
Circle : angular_velocity вращает
Triangle : velocity движет позицию
Triangle : angular_velocity вращает
Square : velocity движет позицию
Square : angular_velocity вращает
note right of Circle
Общие свойства для всех состояний:
- position (x, y)
- velocity (vx, vy)
- angle (угол поворота)
- angular_velocity (скорость вращения)
- speed (множитель скорости: 1-30)
- radius (радиус в пикселях)
Управление:
- '+'/'-': изменение speed
- Up/Down: изменение radius
- Enter: создать новое окно
end note
state "Коллизия с границей" as Collision {
[*] --> CheckCollision
CheckCollision --> InvertVelocity : точка вышла за границу
InvertVelocity --> UpdateAngularVel : инверсия компоненты velocity
UpdateAngularVel --> CheckCollision : обновление angular_velocity
CheckCollision : проверка всех точек фигуры
InvertVelocity : vel = -vel (по оси коллизии)
UpdateAngularVel : зависит от направления движения
}
Circle --> Collision : каждый frame
Triangle --> Collision : каждый frame
Square --> Collision : каждый frame
Collision --> Circle
Collision --> Triangle
Collision --> Square
@enduml