Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.11.2022, 00:30   #1
TrueAlex
Пользователь
 
Регистрация: 25.11.2022
Сообщений: 16
По умолчанию Перемещение шарика по траектории

C# windows forms
Привет ребят нужно срочно задание сделать...У меня есть готовый ехе файл,но как кодом сообразить вообще не пойму(вклал файлы). Мб кто-то умеет такое? Само задание состоит в том,чтобы сделать проект, в котором происходит перемещение "шарика" по траектории заданной функцией y=sinx (окрашенного круга), при нажатии по кнопке.Окружность должна двигаться по компоненту Panel вправо и при достижении его правая граница должна появляться у левой границы и снова двигаться вправо.
Изображения
Тип файла: png Sin.png (10.1 Кб, 2 просмотров)
Вложения
Тип файла: rar Синусоида.rar (4.6 Кб, 1 просмотров)
TrueAlex вне форума Ответить с цитированием
Старый 26.11.2022, 01:26   #2
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

1) Выбираем ширину синусоиды в пикселях. рис. 1
Формула для перевода координаты X в углы функции sin radAngle = 2 * pi * x / wid
radAngle передается в функцию sin для получения позиции по y (см. пункт 2)
pi константа
x координата в окне по оси x
wid выбранный размер синусоиды (см. рис 1)

2) Выбираем высоту синусоиды в пикселях. рис. 2
Формула у вас задана: y = hei * sin(radAngle)
y координата в окне по оси y
hei выбранный размер синусоиды (см. рис 2)
sin тригонометрическая функция синуса
radAngle вычисляется в пункте 1

3) Выбираем размеры шарика (диаметр). рис. 3
Зная диаметр шарика и координаты (x, y = hei * sin(2 * pi * x / wid)), можно вычислить точки для рисования
Round = {
left = x - dia / 2,
top = y - dia / 2,
right = x + dia / 2,
bottom = y + dia / 2
}, где dia выбранный размер шарика, а Round это область рисования шарика по координатам на синусоиде (x, y)

4) Переносим эти вычисления на ось времени (выбираем скорость равномерного движения).
Координата x изменяется с течением времени следующим образом: x = (x0 + v * t) % windowWidth
x0 это начальная позиция шарика на синусоиде (до применения пункта 3)
v это количество пикселей, которое проходит шарик за единицу времени
t это время прошедшее с начала анимации
windowWidth это ширина всего окна и нужна она для того, чтобы шарик повторно проходил по синусоиде с левого края окна по достижении правого края.

5) Рисуем синусоиду. Это проще всего сделать в цикле перечисления пикселей по координате x и вычисляя по формуле из пункта 1 координат y и далее по координатам (x, y) рисуется точка выбранным цветом. Шарик же рисуется после синусоиды, чтобы затереть её часть, а для рисования используем координаты из структуры Round вычисленные в пункте 4.

6) Создаем анимацию перемещения шарика. Для этого создаем переменную значение, в которой будем приращивать на 1 каждый элементарный промежуток времени (это и будет переменной t из пункта 4). После этого достаточно выполнить перерисовку всех элементов окна.

7) Да вот вроде бы и все. Удачи в реализации.
Изображения
Тип файла: png Wid.png (19.8 Кб, 0 просмотров)
Тип файла: png Y.png (19.7 Кб, 0 просмотров)
Тип файла: png Zorb.png (19.5 Кб, 0 просмотров)
macomics вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перемещение шарика по траектории заданной функцией при нажатии по кнопке TrueAlex Windows Forms 0 25.11.2022 21:36
Перемещение шарика по траектории заданной функцией при нажатии по кнопке TrueAlex Помощь студентам 0 25.11.2022 00:20
Canvas.Движение шарика по заданной нарисованной траектории yurotchka Мультимедиа в Delphi 2 22.06.2013 20:35
Перемещение Image по заданной траектории. werrey Общие вопросы Delphi 3 01.06.2011 16:06
Перемещение рисунка по траектории Noob333 Помощь студентам 1 28.04.2009 10:42