目录
serialize —— 将vector/matrix数组展平为浮点数组
unserialize —— 将展平的浮点数组转化为vector/matrix数组
cracktransform —— 依据c值返回xform的特定分量的变换
eulertoquaternion —— 从欧拉角创建表示四元数的vector4
quaterniontoeuler —— 从表示四元数的vector4创建欧拉角
qconvert —— 将表示四元数的vector4转化为matrix3
atof —— 将字符串转化为浮点
float atof(string str)
- 忽略空格;
- 如字符串不包含数字,返回0.0;
- 字符串可包含指数(如1.25e+5);
- float a = atof("1");
- float b = atof("1.25e+5");
atoi —— 将字符串转化为整数
int atoi(string str) int atoi(string str, int base)
- 忽略空格;
- 如字符串不包含数字,返回0.0;
- 字符串可包含指数(如1.25e+5);
degrees —— 将弧度转化为角度
- float degrees(float num_in_rads)
- vector2 degrees(vector2 nums_in_rads)
- vector degrees(vector nums_in_rads)
- vector4 degrees(vector4 nums_in_rads)
radians —— 将角度转化为弧度
- //角度转化为弧度
- float radians(float num_in_degs)
- //应用了反正切atan()
radians(nums_in_degs)
hsvtorgb —— 将颜色空间从HSV转化为RGB
- vector hsvtorgb(vector hsv)
- vector hsvtorgb(float hue, float sat, float val)
rgbtohsv —— 将颜色空间从RGB转化为HSV
- vector rgbtohsv(vector rgb)
- vector rgbtohsv(float r, float g, float b)
rgbtoxyz —— 将线性sRGB转化为CIE XYZ
vector rgbtoxyz(vector rgb)
- XYZ被认为是通用颜色空间;
xyztorgb —— 将CIE XYZ转化为线性sRGB
vector xyztorgb(vector xyz)
serialize —— 将vector/matrix数组展平为浮点数组
- float[] serialize(
vectors[]) - float[] serialize(
matrices[])
- vector v[] = { {1,2,3}, {7,8,9} }; // A vector[] of length 2
- float f[];
- f = serialize(v);
- // Now f[] has a length of 6 and equals { 1,2,3,7,8,9 }
unserialize —— 将展平的浮点数组转化为vector/matrix数组
[] unserialize(float values[]) [] unserialize(float values[])
- vector v[]
- float f[] = { 1, 2, 3, 7, 8, 9 };
- v = vector(unserialize(f));
- // Now v has a length of 2 and contains { {1,2,3}, {7,8,9} }
cracktransform —— 依据c值返回xform的特定分量的变换
vector cracktransform(int trs, int xyz, int c, vector pivot, vector pivot_rotate, matrix xform) vector cracktransform(int trs, int xyz, int c, vector pivot, matrix xform)
- c=0,返回translate;
- c=1,返回rotate(单位degree,可使用radian转化为弧度);
- c=4,返回rotate(单位radian);
- c=2,返回scale;
- c=3,返回shears;
void cracktransform(int trs, int xyz, vector pivot, vector pivot_rotate, matrix xform, vector &t, vector &r, vector &s, vector &shears)
- 如需返回有多个组件,使用此更有效;
void cracktransform(int trs, int xyz, vector pivot, matrix xform, vector &t, vector &r, vector &s)
- 不支持pivot_rotate或shears;
- 如需返回有多个组件,使用此更有效;
- vector @cdir;
- vector @raydir;
- //get a matrix with the camera's transforms
- matrix cam_matrix = optransform('/obj/cam1');
- //extract out the camera position as a vector
- @cdir = cracktransform(XFORM_SRT, XFORM_XYZ, 0, {0,0,0}, cam_matrix);
- //get a vector to project point from camera
- @raydir = normalize(@P-@cdir);
eulertoquaternion —— 从欧拉角创建表示四元数的vector4
vector4 eulertoquaternion(vector rotations, int order)
- rotations表示欧拉角(X,Y,Z),单位弧度;
- 需指定旋转顺序,使用常数(被定义在$HH/vex/include/math.h),XFORM_XYZ表示旋转顺序为x、y、z;
- vector rot = chv('ang');
- @orient = eulertoquaternion(rot, XFORM_XYZ);
- @P = qrotate(@orient, @P);
quaterniontoeuler —— 从表示四元数的vector4创建欧拉角
vector quaterniontoeuler(vector4 orient, int order)
- 单位为弧度,可使用degree转化为角度;
- 需指定旋转顺序,使用常数(被定义在$HH/vex/include/math.h),XFORM_XYZ表示旋转顺序为x、y、z;
qconvert —— 将表示四元数的vector4转化为matrix3
matrix3 qconvert(vector4 quaternion)
//转化,并应用一个偏移 matrix qconvert(vector4 quaternion, vector offset)
//转化为angle/axis矢量 vector qconvert(vector4 quaternion)