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

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

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.07.2010, 17:07   #1
13th
Форумчанин
 
Аватар для 13th
 
Регистрация: 31.12.2008
Сообщений: 634
Смех вычисление траектории

Всем привет. есть огромный вопрос по математическим вычислениям

Теперь сама суть

значит представтье себе координационную сетку, в центре который у нас будет центр нашего неровного круга. а на осях будет в хаотичном порядке распологаться 4 точки, которые должны между собой соединиться плавными дугами, тем самым образовав замкнутое пространство (ну представтье себе помятый круг=) ) . так вот, надо с помощью формул (ибо такие вещи будут просчитываться в джаваскрипте или в рнр) расчитать траектории , то есть определить весь путь по координатам (как полет спутника))) .

Какие данные на входе ?
Координаты центра и четрыхе точек в формает (координата х, координата у).

Что должно быть на выходе ?

массив координат по которым будет проложена это траектория.
Возможно всё
Пишу обо всем
13th вне форума Ответить с цитированием
Старый 02.07.2010, 20:10   #2
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Пусть точки по осям расположены так

A : TPoint = (x: 0; y: 100);
B : TPoint = (x:150; y: 0);
C : TPoint = (x: 0; y:-200);
D : TPoint = (x:-50; y: 0);

Вычисляем:
dx := (B.x - D.x) div 6;
dy := (A.y - C.y) div 6;
p1 := A; p1.x := dx; p8 := A; p8.x := -dx;
p2 := B; p2.y := dy; p3 := B; p3.y := -dy;
p4 := C; p4.x := dx; p5 := C; p5.x := -dx;
p6 := D; p6.y := -dy; p7 := D; p7.y := dy;
Получаем четыре кривые Безье с опорными точками:
A P1 P2 B
B P3 P4 C
C P5 P6 D
D P7 P8 A

Для каждой кривой вычисляем необходимое количество точек по формуле
p := (1-t)^3*p0 + 3t(1-t)^2*p1 + 3t^2(1-t)*p2 + t^3*p3

t = [0..1]
p0, p1, p2, p3 - опорные точки

Получаем что-то вроде этого:
Изображения
Тип файла: jpg 11.JPG (5.8 Кб, 155 просмотров)
alexBlack вне форума Ответить с цитированием
Старый 02.07.2010, 20:25   #3
13th
Форумчанин
 
Аватар для 13th
 
Регистрация: 31.12.2008
Сообщений: 634
По умолчанию

вроде все круто) но ничего не понял

что такое div в этой записи (B.x - D.x) div 6;
и поучается только несколько точек, а мне надо прям траекторию просчитать, что бы каждая точка, что бы в какой бы точке не находился некий объект - я четко мог ответить - внутри овала он или нет
Возможно всё
Пишу обо всем
13th вне форума Ответить с цитированием
Старый 02.07.2010, 20:38   #4
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Цитата:
Сообщение от 13th Посмотреть сообщение
вроде все круто) но ничего не понял
что такое div в этой записи (B.x - D.x) div 6;
Пардон, привычка к паскалю. это целочисленное деление. Остальное вроде понятно написано.
Кстати, 6 определяет натяжение. Можно попробовать другое значение - чем меньше, чем менее натянута будет кривая.

Цитата:
...и поучается только несколько точек, а мне надо прям траекторию просчитать, что бы каждая точка, что бы в какой бы точке не находился некий объект - я четко мог ответить - внутри овала он или нет
Получаем четыре точки для каждой из четырех кривых. Далее берем эти точки и по формуле вычисляем ряд точек для каждой кривой. Например, для (A P1 P2 B)

x := (1-t)^3*A.x + 3t(1-t)^2*P1.X + 3t^2(1-t)*p2.x + t^3*B.x
y := (1-t)^3*A.y + 3t(1-t)^2*P1.y + 3t^2(1-t)*p2.y + t^3*B.y

меняем t от 0 до 1 с некоторым шагом (смотря сколько точек нужно получить) и вычисляем координаты.

далее для (B P3 P4 C)

x := (1-t)^3*B.x + 3t(1-t)^2*P3.X + 3t^2(1-t)*p4.x + t^3*C.x
y := (1-t)^3*B.y + 3t(1-t)^2*P3.y + 3t^2(1-t)*p4.y + t^3*C.y

и далее для (C P5 P6 D) и (D P7 P8 A).

Последний раз редактировалось alexBlack; 02.07.2010 в 20:41.
alexBlack вне форума Ответить с цитированием
Старый 02.07.2010, 21:37   #5
13th
Форумчанин
 
Аватар для 13th
 
Регистрация: 31.12.2008
Сообщений: 634
По умолчанию

шииикарно))) плюсую сто пятьдесят тысяч раз) успехов
Возможно всё
Пишу обо всем
13th вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Движение курсора по траектории DarkHacker Помощь студентам 0 19.03.2010 18:05
Перемещение рисунка по траектории Noob333 Помощь студентам 1 28.04.2009 10:42
Движение фигуры по траектории Dgohn Общие вопросы Delphi 3 08.01.2009 09:36
Анимация движения точки по траектории ariant Microsoft Office Excel 4 25.12.2008 06:28