|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
10.01.2010, 20:57 | #1 |
Пользователь
Регистрация: 05.01.2010
Сообщений: 42
|
движение графических объектов
Как можно описать движение объекта по по дуге с центром в нижнем левом углу экрана? Какие циклы нужно создать? А то у мне ничего, кроме координат нижнего левого угла не приходит на ум...
|
10.01.2010, 21:49 | #2 |
Delphi/C++/C#
Участник клуба
Регистрация: 29.10.2006
Сообщений: 1,972
|
Любая дуга имеет свою математическию формулу. Для начала возьмите параболу, хотите большего - в математику придётся углубиться. По формуле кривой будете вычислять координаты отрисовки объекта.
Нужно из левого нижнего угла? его кооридинаты известны, делаем смещение при отрисовке на эти координаты и всё. Пример координаты левого нижнего угла dХ, dY. Координаты отрисовки: (X + dX) и (Y - dY), где X - вычисляется в зависимости от шага (например изначально = 0 и потом инкрементируется на какой-то коэффициент), Y = f(X), где f - функция кривой. Последний раз редактировалось zetrix; 10.01.2010 в 21:55. |
10.01.2010, 22:10 | #3 |
Пользователь
Регистрация: 05.01.2010
Сообщений: 42
|
А примера программки какого-нить движения есть?
|
11.01.2010, 10:38 | #4 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
А если по дуге окружности, то можно сделать равномерное по ней движение:
Код:
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
16.01.2010, 02:59 | #5 |
Пользователь
Регистрация: 05.01.2010
Сообщений: 42
|
А как тогда сделать движение по окружности туда-сюда?? Чтоб фигурка не начинала свое движение заново, а шла обратно из финиша к старту??
Там наверное какие-то циклы дописываются?? |
16.01.2010, 10:13 | #6 | |
Регистрация: 16.01.2010
Сообщений: 5
|
Цитата:
Чтобы движение было не циклическим по окружности, а лишь по четверти цикл делаем с проходом по 2*pi а на сдвиг накладываем модуль. То есть когда объект прошел pi/2 и должен начать движение по второй четверти окружности мы меняем знак смещения и он движется по той же ветке но в сторону убывания. for (double phi = 0; phi < 2 * Pi; phi += dphi) { X = Rx * abs( cos(phi) ); Y = ScreenHeight - abs (Ry * sin(phi) ); DrawYourFigureHere(X, Y); } P.S. Если нужно чтобы объект все время перемещался по этой дуге туда-сюда, то цикл, естественно, нужно сделать бесконечным. |
|
25.01.2010, 21:58 | #7 |
Пользователь
Регистрация: 05.01.2010
Сообщений: 42
|
классно)) так хитро и двигается !!
|
03.04.2012, 01:45 | #8 |
Новичок
Джуниор
Регистрация: 02.04.2012
Сообщений: 2
|
Доброго времени суток.
Поднимаю данную тему, т.к. у меня проблемка по существу такая же. Но движение должно осуществляться не по известному заранее уравнению какой-либо геометрической фигуры, а: Нужно смоделировать траекторию спутника массой m=5000 кг в поле центрального тела M=10^25 при радиусе r0=7000км с начальной скоростью V0. Написать уравнение эллипса не выход, нужно из каких-либо физических соображений. Есть идеи? З.Ы. Могу математические и физические данные связанные с движением тел в поле центральных тел прикрепить |
03.04.2012, 02:16 | #9 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
В каждый момент находим ускорение тела:
F = G * m * M / r0^2 a = G * M / r0^2 Сила направлена по радиусу, находим из геометрии проекции ax и ay. Затем в каждый следующий момент Vx_(i+1) = Vx_i + ax_i; Vy_(i+1) = Vy_i + ay_i; X_(i+1) = X_i + Vx_(i+1); Y_(i+1) = Y_i + Vy_(i+1); Вот вам положение тела в каждый следующий момент времени. Масса спутника, к слову, тут значения не имеет (предполагая, что центральное тело покоится, т.к. его масса много больше массы спутника и тот его не телепает).
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
25.04.2012, 17:24 | #10 |
Новичок
Джуниор
Регистрация: 02.04.2012
Сообщений: 2
|
Налистал материала, где всё сводится к R, а её в своё время проектируешь на X и Y, но вот не задача Visual с++ отказывается работать с константой 10^25.
Может быть есть библиотека разрешающая проблему с максимально возможным типом данных? =) Последний раз редактировалось 4uTePoK; 25.04.2012 в 19:49. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
макрос форматирования графических объектов | darklumen | Microsoft Office Word | 2 | 24.12.2009 05:09 |
Вывод графических объектов | rocky7 | Общие вопросы C/C++ | 2 | 20.08.2009 12:27 |
Перемещение графических объектов на форме | bush007 | Помощь студентам | 3 | 05.04.2009 17:43 |
Условное форматирование графических объектов | FAKDIM | Microsoft Office Excel | 1 | 16.01.2009 06:45 |
Перемещение графических объектов по форме | Klyacksa | Общие вопросы Delphi | 15 | 20.06.2008 12:58 |