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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.09.2014, 11:33   #1
nelo_001
Пользователь
 
Регистрация: 14.01.2013
Сообщений: 58
По умолчанию Движение обьекта по траектории параболы

Суть: ( это не энгри бердс )
___________________________________ ____
Есть 2 поля поля А и Б , пользователь где его душе угодно ставит на поле 2 имеджа , (заменяющие 2 цилиндра ). Необходимо реализовать , чтобы после размещения 2 имеджей , между ними нарисовалась парабола и ровно по линии параболы от 1 имеджа к другому двигался шарик .
___________________________________ ____
Чего я не могу понять ? Как достать координаты имеджа 1 и 2 , после того как их расставил пользователь и как координаты использовать при построении параболы ?
nelo_001 вне форума Ответить с цитированием
Старый 09.09.2014, 12:17   #2
blackstrip
Форумчанин
 
Аватар для blackstrip
 
Регистрация: 21.01.2012
Сообщений: 240
По умолчанию

Проблема в том, что через две точки можно провести много парабол) В том же энгрибёрдз можно птицу пустить вперед по прямой почти, а можно дугу сделать резко вверх и потом резко вниз, и попасть в ту же точку в итоге.

По сему недостаточно данных. Надо бы иметь дополнительно, например, стартовое направление вылета хотя бы (вектор). И тогда, учитывая, что вектор этот есть касательная к параболе в точке вылета, можно записать уравнение параболы, уравнение производной от него в точке вылета (что и есть касательная) и примотать туда этот вектор.

parab.png

А вообще, если взять квадратичную параболу, то можно вроде бы решить задачку:

Уравнение квадратичной параболы "ногами вниз": y = -1 * x^2
Если даем ей двигаться по x и y, то получаем y = -1 * (x+a)^2 + b
Пусть есть координаты первой точки x1,y1 и второй точки x2,y2.
Составляем два уравнения:
y1 = -1 * (x1+a)^2 + b
y2 = -1 * (x2+a)^2 + b

Два уравнения, две неизвестных (a и b). Решаем, получаем результаты a и b (там похоже будет квадратное уравнение с вариантами корней, выбираем любые из получившихся, все равно парабола проткнет обе заданные точки), рисуем квадратичную параболу по формуле y = -1 * (x+a)^2 + b. И шарик двигаем по этой же формуле, меняя x шарика от x1 до x2 (при этом расчитывая y шарика по этой же формуле).

Последний раз редактировалось blackstrip; 09.09.2014 в 12:56.
blackstrip вне форума Ответить с цитированием
Старый 09.09.2014, 12:18   #3
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Цитата:
Сообщение от nelo_001 Посмотреть сообщение
.. Чего я не могу понять ? Как достать координаты имеджа 1 и 2 , после того как их расставил пользователь и как координаты использовать при построении параболы ?
А я не могу понять, что такое имедж.
Ну ладно, допустим есть их координаты. Но этого недостаточно. Это для прямой достаточно 2-х точек. А для параболы нужно 3. Через 2 точки можно провести бесконечное множество парабол. Надо еще какие-то требования к параболе.
type_Oleg вне форума Ответить с цитированием
Старый 09.09.2014, 13:49   #4
nelo_001
Пользователь
 
Регистрация: 14.01.2013
Сообщений: 58
По умолчанию

Цитата:
Сообщение от blackstrip Посмотреть сообщение
Проблема в том, что через две точки можно провести много парабол) В том же энгрибёрдз можно птицу пустить вперед по прямой почти, а можно дугу сделать резко вверх и потом резко вниз, и попасть в ту же точку в итоге.

По сему недостаточно данных. Надо бы иметь дополнительно, например, стартовое направление вылета хотя бы (вектор). И тогда, учитывая, что вектор этот есть касательная к параболе в точке вылета, можно записать уравнение параболы, уравнение производной от него в точке вылета (что и есть касательная) и примотать туда этот вектор.

Вложение 69852

А вообще, если взять квадратичную параболу, то можно вроде бы решить задачку:

Уравнение квадратичной параболы "ногами вниз": y = -1 * x^2
Если даем ей двигаться по x и y, то получаем y = -1 * (x+a)^2 + b
Пусть есть координаты первой точки x1,y1 и второй точки x2,y2.
Составляем два уравнения:
y1 = -1 * (x1+a)^2 + b
y2 = -1 * (x2+a)^2 + b

Два уравнения, две неизвестных (a и b). Решаем, получаем результаты a и b (там похоже будет квадратное уравнение с вариантами корней, выбираем любые из получившихся, все равно парабола проткнет обе заданные точки), рисуем квадратичную параболу по формуле y = -1 * (x+a)^2 + b. И шарик двигаем по этой же формуле, меняя x шарика от x1 до x2 (при этом расчитывая y шарика по этой же формуле).
Моя работа перебрасывание мячика из одного обьекта в другой по параболе , известны координаты имеджа 1 и имеджа 2 , что если высоту брать рандомное число ( в приделах разумного ) в нете не нашел похожих , сам нарисовал , извините кривовато ...
Скажите куда мне вставлять координаты имеджа 1 и имеджа 2 ( в какую , с учетом , того , что высота будет максимум отличаться от 1 до 5 , формулу ) ?
------------------
Предположим , что высота h:=random(5)+1;
Цитата:
x1:=image2.top;
y1:=image2.left;

x2:=image1.top;
y2:=image1.left;

Рисунок делал просто по точкам , без уравнения
Безымянный.jpg
На деле это должно соединять обьект А и Б
Снимок.JPG

Последний раз редактировалось nelo_001; 09.09.2014 в 14:45.
nelo_001 вне форума Ответить с цитированием
Старый 09.09.2014, 14:54   #5
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Так я еще раз объясняю - из точки 1 в точку 2 можно кинуть множеством способов. Можно почти прямо, как прямой выстрел из пушки, можно по навесной траектории, как из миномета.

Надо еще 3-ю точку задать.
Расчет коэффициенов по3-м точкам - вот тут - http://econom.misis.ru/s/Hel/Matem/Para_3t.htm

PS Либо, кроме координат точек 1 и 2, должна быть задана скорость. Тогда решать чисто по физике - движение тела, брошенного под углом к горизонту
Изображения
Тип файла: jpg para.jpg (12.5 Кб, 161 просмотров)

Последний раз редактировалось type_Oleg; 09.09.2014 в 15:05.
type_Oleg вне форума Ответить с цитированием
Старый 09.09.2014, 15:05   #6
nelo_001
Пользователь
 
Регистрация: 14.01.2013
Сообщений: 58
По умолчанию

3-я точка это высота ?

Последний раз редактировалось nelo_001; 09.09.2014 в 15:11.
nelo_001 вне форума Ответить с цитированием
Старый 09.09.2014, 15:12   #7
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Цитата:
Сообщение от nelo_001 Посмотреть сообщение
3 точка это высота ?
Не обязательно. 3-я - это любая точка, чере которую он должен пролететь.

Кстати , если будете задавать точку на вершине ( самую высокую), то нужно не только высоту. Высота - это координата Y, надо еще и X задать.
type_Oleg вне форума Ответить с цитированием
Старый 09.09.2014, 15:33   #8
nelo_001
Пользователь
 
Регистрация: 14.01.2013
Сообщений: 58
По умолчанию

Хмм... предположим , что у нас есть 3 точка и её координаты х3,у3.
Снимок.JPG
и теперь когда известны х1,у1,х2,у2,х3,у3
это все дело подставлять в уравнение ?
2222.JPG
nelo_001 вне форума Ответить с цитированием
Старый 09.09.2014, 15:46   #9
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Ну да. X=Left , Y=Top
Получится:
a= 0.002812913
b= -1.85542328
c= 487.0824074

Вычисления лучше - в виде процедуры оформить.

Кстати, если задавать эту среднюю точку случайно, она скорее всего не будет вершиной параболы.
В данном случае вершина:
X= 329.8045555
Y= 181.1188823
Вообще, координаты вершины X = -b/(2a); Y= подставить данный X ...

Последний раз редактировалось type_Oleg; 09.09.2014 в 15:53.
type_Oleg вне форума Ответить с цитированием
Старый 09.09.2014, 15:56   #10
nelo_001
Пользователь
 
Регистрация: 14.01.2013
Сообщений: 58
По умолчанию

О да ! это я как раз о чем я думал ! Но прошу извинить нужно лететь в Универ Вечером буду творить .
И вот , что я забабахал
Снимок (1).JPG
nelo_001 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Движение объектов по траектории Vladlena Общие вопросы C/C++ 0 19.05.2013 18:38
Задать движение шара по траектории параболы в Delphi reznor264 Помощь студентам 6 02.11.2010 19:36
Движение курсора по траектории DarkHacker Помощь студентам 0 19.03.2010 18:05
Движение фигуры по траектории Dgohn Общие вопросы Delphi 3 08.01.2009 09:36