Тригонометрия
Собсно, сабж.
Когда у нас в одной плоскости есть угол и надо найти x и y то всё просто - x=cos ; y=sin (пока что радиус опустим, будем считать что точка крутится вокруг другой точки на расстоянии единицы) А как быть в трёхмерном пространстве? крутим по roll вычисляя x и y - всё замечательно. крутим по pitch - вычисляем z... но ведь он и на y тоже влияет! А у нас уже есть значение y после roll-преобразования. Как быть? Сложить, вычесть, умножить? :dontknow: Пробовал, не помогает :wallbash: Короче, как имея pitch,yaw и roll получить x,y и z и наоборот? Заранее спасибо! |
Ответ: Тригонометрия
Имеем два угла - a и b. Отсюда:
x=sin(a)*cos(b) y=sin(a)*sin(b) z=cos(a) По-моему так :) ЗЫЖ вот еще нашел: http://ru.wikipedia.org/wiki/Сферические_координаты |
Немного не так.
roll = roll+1 ; крутим по roll vx# = ( -1*Sin(roll));*3 vy# = (Cos(roll));*3 pitch = pitch+1 ; тепер крутим по pitch vz# = ( 1*Sin(pitch))*vy;*3 vy# = (Cos(pitch))*vy;*3 z тоже надо умножать на y но всё равно спасибо что навёл на умную мысль Ещё вопрос. Имеется вектор x,y,z Как математически получить pitch,yaw,roll по аналогии с командой AlignToVector, в которую пихаешь направление вектора, а она вычисляет нужные pitch,yaw,roll и сразу же назначает их объекту? Заранее спасибо за ответ. |
Ответ: Тригонометрия
Вот давненько писал:
Entity% - объект. nx# - нормализованный x компонент вектора. ny# - нормализованный y компонент вектора. nz# - нормализованный z компонент вектора. Global% - глобально\локально манипулировать объектом. Код:
Function mAlignEntity(Entity%,nx#,ny#,nz#,Global%=0) |
Ответ: Тригонометрия
2MoKa
надо уточнить - что nx,ny,nz - отнормированные значения компонент вектора |
Ответ: Тригонометрия
impersonalis, спасибо поправил :)
Да кстати простой способ но он черезуоперный, как получить вектор исходя из градусов или наоборот. Создаём 2 Pivot'a, P0 и P1. P1 привязываем к P0 и двигаем на 1 единицу вперёд (0,0,1). Далее чтобы первести градусы в вектор, крутим P0, и координаты P1 будут вектором. А наоборот нужно позиционировать (глобально) на координаты вектора P1, и направить (PointEntity) P0 на P1, градус P0 и будет переведённый вектор. Варриант ужастно черезуоперный и корявый, а всё по причине отсутсвий нормальной работы с матрицами в б3д, хотя там есть пару функций, и вроде очень хороших и с ними можно орудовать, но я не вникал.. |
Ответ: Тригонометрия
Цитата:
|
Ответ: Тригонометрия
Скажите как перемещать позиции в 3д пространстве в направлении углов X и Y. Если быть точнее, то мне надо в Mascot Capsule двигать камеру вперёд, тоесть туда куда она смотрит.
|
Ответ: Тригонометрия
Вложений: 1
Помогите найти a :)
|
Ответ: Тригонометрия
Atan(y2-y1, x2-x1 )
*как то так, по памяти пишу. |
Ответ: Тригонометрия
попралю Жокера, atan2, ток как парвило называют эту функцию с двухаргументым интерфейсом
|
Ответ: Тригонометрия
Чёто не в какую...
PHP код:
|
Ответ: Тригонометрия
Извиняюсь :) А на Blitz3D всё работает.
Код:
x1 = 0 |
Ответ: Тригонометрия
Всё :) И с PHP разобрался.
В PHP функция ATan2 возвращает результат в радианах, так что надо ещё перевести в градусы: PHP код:
|
Часовой пояс GMT +4, время: 12:31. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot