3D Maтематика

Материал из NeoAxis Wikipedia.

Перейти к: навигация, поиск

Содержание

[править] Примеры кода: 3D математика

[править] Введение

Математические 3D функции это прикольно, или должно быть прикольно, но только если ты знаешь как их правильно сделать в Neoaxis.


[править] Вычисление кватернионов.

float angle = 30; 
float halfAngle = angle * 0.5f; 
Quat rot = new Quat( new Vec3( 0, 0, MathFunctions.Sin( halfAngle ) ), 
    MathFunctions.Cos( halfAngle ) ); 

или по более простому:

Quat rot = new Angles (0, 0, 30).ToQuat();

[Contributor] betauser

[Organizer] tintin


[править] Интерполяция кватернионов.

float time = XXX; //from 0 to 1 
Quat rot = Quat.Slerp( oldRot, newRot, time ); 

[Code Contributor] betauser

[Organizer] tintin

[править] Локальные и общие координаты

/// <summary> 
/// Преобразует локальное перемещение в глобальное перемещение
/// </summary> 
/// <param name="translation">Перемещение в локальном пространстве( перемещение относительно локальных координат)</param> 
/// <param name="orientation">текущая ориентация объекта который будет перемещен</param> 
/// <returns>Vector3 Возвращает вектор</returns> 
protected Vec3 GetLocalToWorld(Vec3 translation, Vec3 orientation) 
{ 
    float x, y, z;

    //укажите координаты x, y и z 
    x = translation.X; 
    y = translation.Y; 
    z = translation.Z; 

    //вычисление точек, куда будет перемещён 
    translation.X = x * orientation.Y + y * orientation.X + z * -orientation.X; 
    translation.Y = x * -orientation.X + y * orientation.Y + z * -orientation.Y; 
    translation.Z = x * orientation.Z + y * orientation.Z + z * (1 - orientation.Z);  

    //завершение перемещения 
    return translation; 
 
}

[Code Contributor] Qudeid

[Organizer] tintin

По материалам сайта neoaxisgroup.com

Личные инструменты