Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kursovaya_физика столкновений.docx
Скачиваний:
11
Добавлен:
02.06.2015
Размер:
266.5 Кб
Скачать

1.2.3. Список идентификаторов

Таблица 1.2

Область

видимости

Идентификатор

Назначение

Тип

Form1

Глобальная

flag

Переменная, отвечающая за переключение режимов кнопки

static bool

elements

Массив шаров

int

c1

c2

int

sz

Переменная, отвечающая за количество элементов в массиве

int

nx

ny

Переменные, отвечающие за нормаль

float

tx

ty

Переменные, отвечающие за тангент-вектор

float

dist

Переменная, отвечающая за расстояние между шарами

float

sx

sy

Перемещение шара по х и у

float

vx1

vy1

vx2

vy2

Вспомогательные переменные скорости

float

x

y

Переменные, отвечающие за координаты шаров

float

dt

Переменная, отвечающая за приращение времени

float

v_res_x

v_res_x

Переменные для накапливания скорости

float

vx

компонента скорости по х

float

vy

компонента скорости по у

float

r

радиус i-го шара

float

z

Переменная, отвечающая за трение

float

dx

dy

Переменные, отвечающие за рас

стояние от курсора до центра шара

float

numcolis

Переменная для подсчёта количества столкновений с другими шарами

float

Локальная

i

j

Итератор цикла

int

d

Диаметр i-го шара

int

2. Функциональное описание приложения

Главная задача достигается двумя функциями – добавление/движение и просчёт столкновений шаров.

  1. Form1_MouseClick

Действия выполняемые при щелчке клавишей мыши(добавление и движение шаров).

Сначала вводится диаметр шаров. После этого нажатием кнопкой мыши на экран считываются координаты клика мыши и создаётся новый экземпляр класса circle. Проверяется режим активности кнопки button1. Если активна кнопка «Добавление шаров» то с помощью функции Add(gcnew circle(e->X,e->Y,d)) шары добавляются на игровое поле. При смене режима на «Движение шаров» и нажатием кнопкой мыши на экран воспроизводится движение шаров с помощью функции SetSpeed(elements[i]->GetCenterX() - e->X, elements[i]->GetCenterY() - e->Y)

  1. Dvig( )

Функция расчёта столкновения шаров.

Выбираются два любых шара с1 и с2. Рассчитываются расстояния dx и dy от курсора до центра шаров по разным координатам. Вычисляется расстояние dist между шарами.

Если скалярное произведение векторов меньше нуля, то есть шары летят друг на друга, а не в разные стороны, и если шары находятся на расстоянии меньше половины радиусов шара, вычисляется дальнейшая траектория движения шаров после их столкновения, используя нормаль и тангент-вектор.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]