Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2015.01.18;
Скачать: CL | DM;

Вниз

Отклонение вектора   Найти похожие ветки 

 
Jkot ©   (2007-06-04 12:08) [0]

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


 
Jkot ©   (2007-06-04 12:10) [1]

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


 
Efir ©   (2007-06-04 12:57) [2]

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

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


 
Jkot ©   (2007-06-04 15:56) [3]

а для Z ??


 
Efir ©   (2007-06-04 17:12) [4]

Матрица поворота вокруг оси Ох:
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


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


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


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


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


 
Jeem   (2007-06-06 01:22) [6]


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

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


 
Jkot ©   (2007-06-06 05:10) [7]

>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:Прости я просто нуб в векторах....


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

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

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


 
grisme ©   (2007-06-08 19:42) [9]

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


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

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

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


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

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

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


 
Леон ©   (2007-06-11 20:52) [12]

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


 
Chemodan ©   (2007-06-12 10:06) [13]

Решаем систему из двух уравнений:
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], в этом случае система разрешима, и будет получен вектор удовлетворяющий условию.


 
Jkot ©   (2007-06-12 17:37) [14]

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


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


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


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


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


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

ой ли?


 
имя   (2007-08-08 20:45) [17]

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


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

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



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

Текущий архив: 2015.01.18;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.006 c
15-1402311626
KilkennyCat
2014-06-09 15:00
2015.01.18
Delphi + Asterisk


1-1329473490
pasha_golub
2012-02-17 14:11
2015.01.18
Вызов функции из DLL. Мистика


15-1402829721
Юрий Зотов
2014-06-15 14:55
2015.01.18
Диск накрылся - чем лечить?


2-1387193293
Павел
2013-12-16 15:28
2015.01.18
Проблема переноса проекта в XE2


15-1402811253
Библиарий
2014-06-15 09:47
2015.01.18
Как этот простой подход/паттерн/не знаю называется?