| 1 |
/////////////////////////////////////////////////////////// |
|---|
| 2 |
// MobSurgeon // |
|---|
| 3 |
// Ðåäàêòîð mob-îâ äëÿ Ïðîêëÿòûõ Çåìåëü // |
|---|
| 4 |
// Copyright (C) 2005-2007 Gipat Group // |
|---|
| 5 |
// Ðàñïðîñòðàíÿåòñÿ íà óñëîâèÿõ // |
|---|
| 6 |
// Gipat Group's opened EI-editor-utility license // |
|---|
| 7 |
// âåðñèè 1.0 // |
|---|
| 8 |
// // |
|---|
| 9 |
// www.gipatgroup.org // |
|---|
| 10 |
/////////////////////////////////////////////////////////// |
|---|
| 11 |
|
|---|
| 12 |
//Ê ðàáîòå íàä äàííûì ôàéëîì ïðèëîæèëè ðóêè, íîãè.... êîðî÷å àôôòàðû: |
|---|
| 13 |
// 1) Sagrer (sagrer@yandex.ru) |
|---|
| 14 |
|
|---|
| 15 |
//////////////////////////////////////////////////////////////////////// |
|---|
| 16 |
|
|---|
| 17 |
///////////////////////////////////////////////// |
|---|
| 18 |
// Íó òèïî òóò êëàññ äëÿ ðàáîòû // |
|---|
| 19 |
// ñ êâàòåðíèîíàìè â OpenGL // |
|---|
| 20 |
// ver 0.1 // |
|---|
| 21 |
// // |
|---|
| 22 |
// crafted by Sagrer // |
|---|
| 23 |
///////////////////////////////////////////////// |
|---|
| 24 |
|
|---|
| 25 |
//--------------------------------------------------------------------------- |
|---|
| 26 |
|
|---|
| 27 |
#ifndef glQuaternionsH |
|---|
| 28 |
#define glQuaternionsH |
|---|
| 29 |
|
|---|
| 30 |
#include <Classes.hpp> |
|---|
| 31 |
|
|---|
| 32 |
#include <GL/gl.h> |
|---|
| 33 |
#include <GL/glu.h> |
|---|
| 34 |
|
|---|
| 35 |
#include "math.h" |
|---|
| 36 |
//#include "math.hpp" |
|---|
| 37 |
#include "mathlib.h" |
|---|
| 38 |
|
|---|
| 39 |
//Íó, òèïî, îáúÿâëåíèÿ... |
|---|
| 40 |
|
|---|
| 41 |
//Âåêòîð 2 |
|---|
| 42 |
//class TVec2 |
|---|
| 43 |
|
|---|
| 44 |
|
|---|
| 45 |
//Êâàòåðíèîí |
|---|
| 46 |
class TQuaternion |
|---|
| 47 |
{ |
|---|
| 48 |
public: |
|---|
| 49 |
//Ïåðåìåííûå... |
|---|
| 50 |
float QuatW; |
|---|
| 51 |
float QuatX; |
|---|
| 52 |
float QuatY; |
|---|
| 53 |
float QuatZ; |
|---|
| 54 |
|
|---|
| 55 |
//Ôóíêöèè... |
|---|
| 56 |
//Êîíñòðóêòîðû-äåñòðóêòîðû... |
|---|
| 57 |
virtual ~TQuaternion(); //äåñòðóêòîð |
|---|
| 58 |
TQuaternion(); //Äåôîëòíûé êîíñòðóêòîð |
|---|
| 59 |
TQuaternion(float &w, float &x, float &y, float &z); //Êîíñòðóêòîð íà ïðîèçâîëüíûé êâàòåðíèîí |
|---|
| 60 |
TQuaternion(float w, float x, float y, float z); //Êîíñòðóêòîð íà ïðîèçâîëüíûé êâàòåðíèîí |
|---|
| 61 |
//Âñÿêèå "ìåëêèå" îïåðàöèè ñ ñàìèìè êâàòåðíèîíàìè... |
|---|
| 62 |
void ident(); //Ïîñòàâèòü êâàòåðíèîíó ïóñòîå çíà÷åíèå. |
|---|
| 63 |
void scale(float s); //Òèïî ìàñøòàáèðîâàòü. Â ïðèíöèïå - óìíîæåíèå íà ñêàëÿð. |
|---|
| 64 |
float norm(); //Íîðìà. |
|---|
| 65 |
float magnitude(); //Ìîäóëü. |
|---|
| 66 |
void StabilizeLength(); //Òèïî ñòàáèëèçèðîâàòü äëèíó êâàòåðíèîíà - ýòî âûïîëíÿåòñÿ áûñòðåå íîðìàëèçàöèè. |
|---|
| 67 |
void normalize(); //Íîðìàëèçîâàòü. Ìåäëåííåå ñòàáèëèçàöèè, íî â ðåçóëüòàòå åäèíè÷íûé êâàòåðíèîí. |
|---|
| 68 |
//Îïåðàöèè ñ ìàòðèöàìè... |
|---|
| 69 |
void GetGLMatrix(GLfloat *matrix); //Ïîëó÷èòü OpenGL-øíóþ ìàòðèöó ïîâîðîòà èç êâàòåðíèîíà. |
|---|
| 70 |
void Mult(float W, float X, float Y, float Z); //Òèïî óìíîæèòü íà äðóãîé êâàòåðíèîí... |
|---|
| 71 |
void SetAxisAngle(float VecX, float VecY, float VecZ, float angle); //Òèïî âûñòàâèòü êâàòåðíèîíó óãîë èç Axis-Angle ïðåäñòàâëåíèÿ. |
|---|
| 72 |
void RotateByAxisAngle(float VecX, float VecY, float VecZ, float angle); //Ñäåëàòü óêàçàííûé ïîâîðîò âîêðóã óêàçàííîé îñè (â äîáàâêó ê èìåþùåéñÿ îðèåíòàöèè). |
|---|
| 73 |
|
|---|
| 74 |
}; |
|---|
| 75 |
|
|---|
| 76 |
//--------------------------------------------------------------------------- |
|---|
| 77 |
#endif |
|---|