Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2004.03.05;
Скачать: [xml.tar.bz2];

Вниз

Как работать с векторами?   Найти похожие ветки 

 
Norlin   (2003-08-17 19:43) [0]

Подскажите, плз, как работать с векторами в Дельфи?


 
VitGun   (2003-08-17 20:38) [1]

type
TVector=record
x,y:real;
end;

function AddVector(Vector1, Vector2: TVector): TVector; //Сложение векторов
function SubVector(Vector1, Vector2: TVector): TVector;//вычитание векторов
function MultVector(Vector: TVector; Num: GLfloat): TVector;//умножение векторов
function NormalizeVector(Normal: TVector): TVector;//деление? векторов

function AddVector(Vector1, Vector2: TVector): TVector;
begin
Result.X := Vector1.X + Vector2.X;
Result.Y := Vector1.Y + Vector2.Y;
end;

function SubVector(Vector1, Vector2: TVector): TVector;
begin
Result.X := Vector1.X - Vector2.X;
Result.Y := Vector1.Y - Vector2.Y;
end;

function MultVector(Vector: TVector; Num: GLfloat): TVector;
begin
Result.X := Vector.X * Num;
Result.Y := Vector.Y * Num;
end;
function NormalizeVector(Normal: TVector): TVector;
var Magnitude: GLfloat;
begin
Result.X := Normal.X / Magnitude;
Result.Y := Normal.Y / Magnitude;
end;


 
Micah'GF   (2003-08-18 16:40) [2]

ээээээээ.... интересная тема, но несовсем понятно для чего сложение, вычитаение, ... IMHO это не самое важное..

Появилась надобность смоделировать путь в двухмерном пространстве... вот начал работать с векторами. Путь представляю как массив координат точек, между которыми прокладываются вектора...
Теперь нужно смоделировать движение точки по этому пути... Может у кого уже есть готовые решения?!?!?!


 
ооооооооооооооооооооо   (2003-08-18 18:43) [3]

что значит " прокладываются вектора"?? на уроках физики спали чтоль?

помни что координата обьекта через промежуток времени dt будет равна

в векторах одно, двух, трехмерных...

X(ч-з dt) = X(сейчас) + V(скорость сейчас)*dt
вот затем и сложение и умножение векотров на число!
если V изменяется со временем, то и для него пишем

V(ч-з dt) =V(сейчас) + A(ускорение сейчас)*dt
если и ускорение изменяется то тоже самое пишем и для него.

и все! никаких массивов!


 
Micah'GF   (2003-08-18 21:52) [4]

эээээ... у меня не совсем хорошо с геометрией+физикой :]
можно поподробнее как в коде реализовать?!?!?
а массив точек у меня потому что путь должен быть ужасно кривой...
(мысль: надо бы какнить на картинке изобразить что хочу сделать) :]


 
Дмитрий В. Белькевич   (2003-08-19 01:42) [5]

>прокладываются вектора...
>Теперь нужно смоделировать движение точки по этому пути... >Может у кого уже есть готовые решения?!?!?!

Тебе нужно посчитать все точки между векторами или что? Ну так ищи рассчет положения точек на линии. В чем проблема-то?


 
ооо   (2003-08-19 15:52) [6]

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


 
NailMan   (2003-08-19 16:44) [7]

Насколько я понял - у тебя есть набор вейпонтов, и тебе хоцца получить промежуточные значения в пространстве для более гладкого движения. Это можно сделать с помощью линейной интерполяции.

Вот эта функция из Direc3D
// Linear interpolation. V1 + s(V2-V1)
function D3DXVec3Lerp(out vOut : TD3DVector3; const v1, v2 : TD3DXVector; const s : Single) : TD3DXVector3;
begin
with vOut do
begin
x := v1.x + s * (v2.x - v1.x);
y := v1.y + s * (v2.y - v1.y);
z := v1.z + s * (v2.z - v1.z);
end;
Result:= vOut;
end;


 
Micah'GF   (2003-08-20 09:32) [8]

2NailMan
s это скорость ?

Вообщето конечная цель даже сложнее.. вот картинка (не поленитесь посмотреть.. всего 8кб) http://200mb.org/coding/path.gif

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


 
NailMan   (2003-08-20 09:52) [9]

To -> Micah"GF
Это шаг интерполяции. В принципе это можно понимать как dS или скорость учитывая что dS объект проходит за известное дискретное время.



Страницы: 1 вся ветка

Форум: "Игры";
Текущий архив: 2004.03.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.007 c
6-12464
Незнающий
2003-12-30 19:46
2004.03.05
броадкаст датаграммы


14-12499
syte_ser78
2004-02-13 11:28
2004.03.05
недокачанный zip


1-12385
DarkBox
2004-02-25 07:14
2004.03.05
StayOnTop


14-12538
slippery
2004-02-13 21:42
2004.03.05
Помогите найти!!!


3-12284
bespasian
2004-02-06 17:20
2004.03.05
Изменить цвет строки в DBGrid.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский