title: 数字化方法基础_常用函数
date: 2019-10-29 21:12:14
description: 数字化方法基础_常用函数1.叉乘2.单位化矢量3.矩阵乘法4.矩阵乘法。
categories:

  • 程序设计
  • OpenGL
    tags:
  • 笔记
  • 数字化方法

1. 叉乘

1
2
3
4
5
6
 void crossproject(float vec1[3],float vec2[3],float n[3])
{
n[0] = vec1[1]*vec2[2]-vec1[2]*vec2[1];
n[1] = vec1[2]*vec2[0]-vec1[0]*vec2[2];
n[2] = vec1[0]*vec2[1]-vec1[1]*vec2[0];
}

2. 单位化矢量

1
2
3
4
5
6
7
void Normalize(float n[3])
{
float length;
length = sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);
for(int i = 0;i < 3;i++)
n[i] /= length;
}

3. 矩阵乘法4×4 × 4×1

1
2
3
4
5
void ApplyMatrix(float *P0,float *translation,float *P1)
{
for(int i = 0;i < 3;i++)
P1[i] = P0[0]*translation[i]+P0[1]*translation[i+4]+P0[2]*translation[i+8]+translation[i+12];
}

4. 矩阵乘法 4×4 × 4×4

1
2
3
4
5
6
7
void mul(float *rotation,float *translation,float *tran)
{
for(int i = 0;i < 4;i++)
for(int j = 0;j < 4;j++)
for(int k = 0;k < 4;k++)
tran[4*i+j] += rotation[4*k+j]*translation[4*i+k];
}