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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.004 c
15-1401961291
Minsk City
2014-06-05 13:41
2015.01.18
Delphi and C#


15-1402170178
Kerk
2014-06-07 23:42
2015.01.18
WinXP


2-1387549252
Вова
2013-12-20 18:20
2015.01.18
ListView DrawItem


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


2-1383842662
MultIfleX
2013-11-07 20:44
2015.01.18
XE5 Android LocationListener





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский