Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Angle Between two 3d vectors and object's direction.

7.4K
02 июня 2005 года
werter1
7 / / 09.10.2004
Hi, I need to adjust object's direction in 3d.
I have current point vector , and destination point vector.
When current point == destination point, destination point gets a new random position.
The poblem that i can't torn and adjust object to a new direction.

i need to use function:
glRotatef (XAngle, 1.0f, 0.0f, 0.0f);
glRotatef (YAngle, 0.0f, 1.0f, 0.0f);
glRotatef (ZAngle, 0.0f, 0.0f, 1.0f);

but i can't calculate XAngle,YAngle,ZAngle.

Please help.


P.S.

function don't work
void DCreature::ComputeRPY (void)
{

float roll, pitch, yaw;

// Determine the direction of the lateral acceleration.

Dpoint lateralDir = (DestPoint % (DestPoint - CurrPoint)) % DestPoint;

lateralDir.Normalize();

// Set the lateral acceleration's magnitude. The magnitude is the vector
// projection of the appliedAcceleration vector onto the direction of the
// lateral acceleration).

float lateralMag = (DestPoint - CurrPoint) * lateralDir;

// compute roll

if (lateralMag == 0) {
roll = 0.0f;
} else {
roll = (float) -atan2(GRAVITY, lateralMag) + PI/2;
}

// compute pitch

pitch = (float) -atan(CurrPoint.y / sqrt((CurrPoint.z*CurrPoint.z) + (CurrPoint.x*CurrPoint.x)));

// compute yaw

yaw = (float) atan2(CurrPoint.x, CurrPoint.z);

// store them

XAngle = pitch;

YAngle = yaw;

ZAngle = roll;
}
247
03 июня 2005 года
wanja
1.2K / / 03.02.2003
Проецируешь векторы на плоскости X-Y, X-Z, Y-Z(берешь только две координаты),Находишь скалярные произведения проекций, делишь на длины векторов, и берешь арккосинус - всего делов-то!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог