Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Отклонение вектора


Jkot ©   (2007-06-04 12:08:00) 

Как сделать отклонение вектора на опр. угол?
Собсно мне нужен разлёт частиц, вектор это общее направление, разлёт это насколько они теоритически  могут отклониться...


Dawn-cm   (2007-11-27 10:27:00) [1]

Удалено модератором


  (2007-08-08 20:45:00) [2]

Удалено модератором


Думкин   (2007-06-13 12:01:00) [3]


> Chemodan ©   (12.06.07 10:06) [13]

ой ли?


Жпёс   (2007-06-13 05:33:00) [4]


> Jkot ©   (12.06.07 17:37) [14]
>
> А я нашол всё нужные функции в том числе и поворот вектора
> в GLScene, надо почаше смотреть будет что там есть =)


Так покажи же нам их!


Jkot   (2007-06-12 17:37:00) [5]

А я нашол всё нужные функции в том числе и поворот вектора в GLScene, надо почаше смотреть будет что там есть =)


Chemodan   (2007-06-12 10:06:00) [6]

Решаем систему из двух уравнений:
v1.x*v0.x+v1.y*v0.y+v1.z*v0.z=Alpha
v1.x*v1.x+v1.y*v1.y+v1.z*v1.z=1

При этом:
0<=v1.x<=1
0<=v1.y<=1
0<=v1.z<=1

Где
v1 - искомый вектор
v0 - заданное направление, нормализованный вектор
Alpha - тот самый разлет, т.е отклонение получаемого вектора от задаваемого направления

Одну компоненту v1 задаем случайным образом из интервала [0, 1], в этом случае система разрешима, и будет получен вектор удовлетворяющий условию.


Леон   (2007-06-11 20:52:00) [7]

> Не 0, а 1
хм.. и для векторов тоже??


@!!ex_   (2007-06-09 08:36:00) [8]

> На сколько я знаю 4-я компонента всегда нулевая - забей
> на нее.

Не 0, а 1.
0*x = 0
1*x = x
какой из вариантов не меняетя значение? 1!
Поэтому и матрица стандартная единичная, а не нулевая.


Мысл   (2007-06-09 06:25:00) [9]

Надо сначала предположить, что допустим у нас вектор идёт вдоль оси Z на единицу, а координаты X и Y вычислить как случайные числа, из заданной области разброса.

А потом повернуть полученные векторы из направления вдоль оси Z на нужное направление.


grisme   (2007-06-08 19:42:00) [10]

4я компонента - это т.н. W-координата, забивать не стоит :o) можно с ней "поиграцо" и посмотреть что получится в результате ее изменения


Леон   (2007-06-07 19:11:00) [11]

> 4 значаний, 4-длина?
4 - время ( шутка :) )
На сколько я знаю 4-я компонента всегда нулевая - забей на нее. (т.к. используется только в матрицах преобразования для трансляции - паралелльного переноса)

а по поводу разлета... имхо нужно копать в сторону циллиндрических систем координат... и брать случайный угол при одинаковых остальных двух координатах в этой системе


Jkot   (2007-06-06 05:10:00) [12]

>Jeem   (06.06.07 01:22) [6]
>Ему же нужно вращать не вокруг осей, а отклонить вектор от заданного на >определённый угол, в случайном направлении.

Именно так.

>Jeer ©   (05.06.07 14:29) [5]
>Для этого надо знать, свойства системы частиц, что является основой для >"разлета" и в каком силовом поле это происходит.
>В итоге - математическую модель конкретного физического явления.

Для игры мне подойдет и фальш. система, в 3D Max тоже система строится вовсе не на физ. законах, а на указанных параматрах, у меня параметры примерно те-же, в данном слачае я спрашиваю как сделать аналог Spread в максе???

>Efir ©   (04.06.07 17:12) [4]
>Для поворота умножаешь свой вектор на нужную тебе матрицу поворота.

А на делфях код готовый есть, а то я токо C++ нагуглил, я переведу кончно но просто вдрег есть.. И ещё там везде говорится что вектор должен быть размерностью одинаков с матрицей, т.е он должен быть из 4 значаний, 4-длина?

P.S:Прости я просто нуб в векторах....


Jeem   (2007-06-06 01:22:00) [13]


> Efir ©   (04.06.07 17:12) [4]
>
> Матрица поворота вокруг оси Ох:

Ему же нужно вращать не вокруг осей, а отклонить вектор от заданного на определённый угол, в случайном направлении.


Jeer   (2007-06-05 14:29:00) [14]


> Собсно мне нужен разлёт частиц, вектор это общее направление,
>  разлёт это насколько они теоритически  могут отклониться.
> ..


Для этого надо знать, свойства системы частиц, что является основой для "разлета" и в каком силовом поле это происходит.
В итоге - математическую модель конкретного физического явления.


Efir   (2007-06-04 17:12:00) [15]

Матрица поворота вокруг оси Ох:
1    0        0     0
0  cos(a)  -sin(a)  0
0  sin(a)   cos(a)  0
0    0        0     1

Матрица поворота вокруг оси Оy:
cos(a)  0  sin(a)   0
 0     1    0      0
-sin(a) 0  cos(a)   0
 0     0    0      1


Матрица поворота вокруг оси Оz:
cos(a)  -sin(a)  0  0
sin(a)   cos(a)  0  0
 0        0     1  0
 0        0     0  1


Для поворота умножаешь свой вектор на нужную тебе матрицу поворота.


Jkot   (2007-06-04 15:56:00) [16]

а для Z ??


Efir   (2007-06-04 12:57:00) [17]

x = x0*cos(a)-y0*sin(a)
y = x0*sin(a)+y0*cos(a)

x0, y0 - начальные координыты
a - угол поворота


Jkot   (2007-06-04 12:10:00) [18]

Ой забыл сказать что это в 3D всё =)


Наверх

Титульная страница Поиск, карта сайта Написать письмо