Добавил:
надеюсь это добро кому-то поможет Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
практика лето 25 Программирование графического интерфейса и основы визуализации структур данных.docx
Скачиваний:
0
Добавлен:
09.07.2025
Размер:
4.9 Mб
Скачать
  1. Второй раздел

  2. Индивидуальное Задание 1

2.1. Первый подраздел второго раздела Формулировка задания:

Реализовать приложение, которое обеспечивает движение заданного объекта по заданной траектории.

Объект (точка касания с линией траектории – любая вершина фигуры или произвольная точка фигуры). Обеспечить задание геометрических параметров фигуры указанной формы и движение геометрического объекта по траектории.

Объект и траектория заданы на рисунках 23, 24.

Наличие у объекта цвета: Заданные (разные) цвета контура и заливки.

Рисунок 23 - Объект

Рисунок 24 - Траектория

Математическую постановка:

Построение кривой:

Задача состоит в визуализации движения шестиугольника вдоль замкнутой кривой, описывающей форму яйца Хюгельшеффера. В данной работе за точку касания с линией фигуры выбран центр объекта, который постоянно перемещается по заданной траектории. Формула, описывающая контур яйца:

Координаты отрисовки задаются пользователем и вычисляются по формулам:

Где - координаты, заданные пользователем.

S - задает масштаб.

В программе формула сначала применяется для построения верхней половины с отрицательным множителем, затем для нижней половины с множителем больше нуля. Соблюдается симметрия по оси OX.

На каждом шаге вычисляется координата y, из чего складывается последовательность точек . Поскольку рисование происходит в пиксельных координатах, точки преобразуются с помощью масшатабного коэффициента относительно центра области рисования.

Затем происходит расчет длин относительно всех точек по формуле:

Построение правильного шестиугольника:

Объект строиться вокруг текущей точки P с использованием координат в полярной системе:

Где k = 0...5 - количество углов многоугольника.

Каждая вершина имеет координату:

Где r - текущий радиус (размер), а - центр шестиугольника.

Модель движения по траектории:

Текущее положение центра шестиугольника принадлежит отрезку от 0 до вычисленной длины кривой траектории:

Она изменяется по формуле:

Где v - скорость перемещения, которая задается пользователем

Когда значение выходит за пределы границ, берется модуль по длине.

То есть:

Интерполяция позиции объекта на траектории:

Для определения точного положения по заданной длине происходит поиск сегмента i такого что:

Затем производится линейная интерполяция:

И высчитывается точка P, которая будет являться центром текущего положения шестиугольника.

Пульсация:

В случае, когда пульсация активна, реализуется функция:

Где R(t) - текущий радиус шестиугольника

Если , то обновляется флаг

Иначе фигура уменьшается

Если , то обновляется флаг

Поворот фигуры:

Текущий угол поворота вычисляется как:

После обновления следует нормализовать угол:

Итого:

Описание используемых элементов для интерфейса и их настройка (свойства):

Интерфейс программы построен с помощью элементов из пространства имен System::Windows::Forms для управления визуализацией и параметрами фигуры. Ниже в таблицах представлен полный список используемых элементов.

  1. Область отрисовки PictureBox - отражение графики траектории и шестиугольника.

Свойство

Значение

Name

pictureBox1

Size

791 x 581 пикселей

Location

X=21, Y=65

BackColor

White

BorderStyle

FixedSingle