如题目所示,今天讲的是如何判断两个单位法向量是同向还是反向。首先我写出已知的法向量double[] normalvector={1,0,0};和 double[] normalvector1={-1,0,0};这是已知条件。
下面我将用数学的方法来判断这两个单位法向量之间的关系。
数学方法的公式为a*a1+b*b1+c*c1>0为同向,
数学方法的公式为a*a1+b*b1+c*c1<0为反向,
下面上两种判别的代码:
同向:
double[] normalvector = new double[3];
normalvector[0] = 1;
normalvector[1] = 0;
normalvector[2] = 0;
double[] normalvector1 = new double[3];
normalvector1[0] = 1;
normalvector1[1] = 0;
normalvector1[2] = 0;
if (((normalvector[0] * normalvector1[0]) + (normalvector[1] * normalvector1[1]) + (normalvector[2] * normalvector1[2])) > 0)
{
MessageBox.Show("两个单位法向量为同向", "提示");
}
if (((normalvector[0] * normalvector1[0]) + (normalvector[1] * normalvector1[1]) + (normalvector[2] * normalvector1[2])) < 0)
{
MessageBox.Show("两个单位法向量为反向", "提示");
}
反向:
double[] normalvector = new double[3];
normalvector[0] = 1;
normalvector[1] = 0;
normalvector[2] = 0;
double[] normalvector1 = new double[3];
normalvector1[0] = -1;
normalvector1[1] = 0;
normalvector1[2] = 0;
if(((normalvector[0]* normalvector1[0])+ (normalvector[1]* normalvector1[1])+ (normalvector[2]*normalvector1[2]))<0)
{
MessageBox.Show("两个单位法向量为反向","提示");
}
if (((normalvector[0] * normalvector1[0]) + (normalvector[1] * normalvector1[1]) + (normalvector[2] * normalvector1[2])) > 0)
{
MessageBox.Show("两个单位法向量为同向", "提示");
}
两种运行效果如下所示:
同向:
反向: