Конференция "Игры" » Отклонение вектора
 
  • Jkot © (04.06.07 12:08) [0]
    Как сделать отклонение вектора на опр. угол?
    Собсно мне нужен разлёт частиц, вектор это общее направление, разлёт это насколько они теоритически  могут отклониться...
  • Jkot © (04.06.07 12:10) [1]
    Ой забыл сказать что это в 3D всё =)
  • Efir © (04.06.07 12:57) [2]
    x = x0*cos(a)-y0*sin(a)
    y = x0*sin(a)+y0*cos(a)

    x0, y0 - начальные координыты
    a - угол поворота
  • Jkot © (04.06.07 15:56) [3]
    а для Z ??
  • Efir © (04.06.07 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 © (05.06.07 14:29) [5]

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


    Для этого надо знать, свойства системы частиц, что является основой для "разлета" и в каком силовом поле это происходит.
    В итоге - математическую модель конкретного физического явления.
  • Jeem (06.06.07 01:22) [6]

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

    Ему же нужно вращать не вокруг осей, а отклонить вектор от заданного на определённый угол, в случайном направлении.
  • Jkot © (06.06.07 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:Прости я просто нуб в векторах....
  • Леон © (07.06.07 19:11) [8]
    > 4 значаний, 4-длина?
    4 - время ( шутка :) )
    На сколько я знаю 4-я компонента всегда нулевая - забей на нее. (т.к. используется только в матрицах преобразования для трансляции - паралелльного переноса)

    а по поводу разлета... имхо нужно копать в сторону циллиндрических систем координат... и брать случайный угол при одинаковых остальных двух координатах в этой системе
  • grisme © (08.06.07 19:42) [9]
    4я компонента - это т.н. W-координата, забивать не стоит :o) можно с ней "поиграцо" и посмотреть что получится в результате ее изменения
  • Мысл (09.06.07 06:25) [10]
    Надо сначала предположить, что допустим у нас вектор идёт вдоль оси Z на единицу, а координаты X и Y вычислить как случайные числа, из заданной области разброса.

    А потом повернуть полученные векторы из направления вдоль оси Z на нужное направление.
  • @!!ex_ (09.06.07 08:36) [11]
    > На сколько я знаю 4-я компонента всегда нулевая - забей
    > на нее.

    Не 0, а 1.
    0*x = 0
    1*x = x
    какой из вариантов не меняетя значение? 1!
    Поэтому и матрица стандартная единичная, а не нулевая.
  • Леон © (11.06.07 20:52) [12]
    > Не 0, а 1
    хм.. и для векторов тоже??
  • Chemodan © (12.06.07 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 © (12.06.07 17:37) [14]
    А я нашол всё нужные функции в том числе и поворот вектора в GLScene, надо почаше смотреть будет что там есть =)
  • Жпёс (13.06.07 05:33) [15]

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


    Так покажи же нам их!
  • Думкин © (13.06.07 12:01) [16]

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

    ой ли?
  • имя (08.08.07 20:45) [17]
    Удалено модератором
  • Dawn-cm (27.11.07 10:27) [18]
    Удалено модератором
 
Конференция "Игры" » Отклонение вектора
Есть новые Нет новых   [134431   +10][b:0][p:0.001]