📄 geometry.cpp
字号:
/*
僐儊儞僩拞偺丄m,q,v偼
m = Matrix
q = Quaternion
v = Vector
傪堄枴偡傞丅
*/
/*
#include <stdio.h>
#include <math.h>
#include <float.h>
#include <string.h>
*/
#include <monapi.h>
using namespace MonAPI;
#include "geometry.h"
float atan2(float a,float b){
return 0.0f; // 偰偒偲乕丅
}
float acos(float a){
return 0.0f; // 偰偒偲乕丅
}
void memset(void *p,int val,int len){
int i;
for(i=0;i<len;i++){
((unsigned char *)p)[i] = val;
}
}
Matrix::Matrix()
{
memset(m,0,sizeof(float)*16);
m[0][0] = 1.0f;
m[1][1] = 1.0f;
m[2][2] = 1.0f;
m[3][3] = 1.0f;
}
Matrix::~Matrix()
{
}
void
Matrix::put()
{
int i,t;
/*
printf("{\n");
for(t=0;t<4;t++)
{
printf(" ");
for(i=0;i<4;i++)
{
printf("%11.6f,",m[t][i]);
}
printf("\n");
}
printf("}\n");*/
}
void
Matrix::SetXrotate(float r)
{
memset(m,0,sizeof(float)*16);
m[1][1] = m[2][2] = (float)cos(r);
m[2][1] = -(m[1][2] = (float)sin(r));
m[0][0] = m[3][3] = 1.0f;
}
void
Matrix::SetXrotate(float s,float c)
{
memset(m,0,sizeof(float)*16);
m[1][1] = m[2][2] = (float)c;
m[2][1] = -(m[1][2] = (float)s);
m[0][0] = m[3][3] = 1.0f;
}
void
Matrix::SetYrotate(float r)
{
memset(m,0,sizeof(float)*16);
m[0][0] = m[2][2] = (float)cos(r);
m[0][2] = -(m[2][0] = (float)sin(r));
m[1][1] = m[3][3] = 1.0f;
}
void
Matrix::SetYrotate(float s,float c)
{
memset(m,0,sizeof(float)*16);
m[0][0] = m[2][2] = (float)c;
m[0][2] = -(m[2][0] = (float)s);
m[1][1] = m[3][3] = 1.0f;
}
void
Matrix::SetZrotate(float r)
{
memset(m,0,sizeof(float)*16);
m[0][0] = m[1][1] = (float)cos(r);
m[1][0] = -(m[0][1] = (float)sin(r));
m[2][2] = m[3][3] = 1.0f;
}
void
Matrix::SetZrotate(float s,float c)
{
memset(m,0,sizeof(float)*16);
m[0][0] = m[1][1] = (float)c;
m[1][0] = -(m[0][1] = (float)s);
m[2][2] = m[3][3] = 1.0f;
}
void
Matrix::SetXrotateF(float r)
{
m[1][1] = m[2][2] = (float)cos(r);
m[2][1] = -(m[1][2] = (float)sin(r));
}
void
Matrix::SetYrotateF(float r)
{
m[0][0] = m[2][2] = (float)cos(r);
m[0][2] = -(m[2][0] = (float)sin(r));
}
void
Matrix::SetZrotateF(float r)
{
m[0][0] = m[1][1] = (float)cos(r);
m[1][0] = -(m[0][1] = (float)sin(r));
}
void
Matrix::SetMagnification(float src)
{
memset(m,0,sizeof(float)*16);
m[0][0] = m[1][1] = m[2][2] = (float)src;
m[3][3] = 1;
}
void
Matrix::SetMagnification(float x,float y,float z)
{
memset(m,0,sizeof(float)*16);
m[0][0] = (float)x;
m[1][1] = (float)y;
m[2][2] = (float)z;
m[3][3] = 1;
}
void
Matrix::SetMagnification(Vector &src)
{
memset(m,0,sizeof(float)*16);
m[0][0] = src.x;
m[1][1] = src.y;
m[2][2] = src.z;
m[3][3] = 1;
}
// (0,0,1)偑丄(ix
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -