需要一个有x y z的数据结构
class Point
{
constructor(a=0,b=0,c=0)
{
this.x=a;
this.y=b;
this.z=c;
}
}
一个计算边长的函数 就是两点间距
function distance(a,b)
{
var x1=a.x-b.x;
var y1=a.y-b.y;
var z1=a.z-b.z;
return Math.sqrt(x1*x1+y1*y1+z1*z1);
}
检测是不是共线 跟二维空间应该一样吧
function collinear_3Points(a,b,c)//是否共线 海伦公式 S=sqrt(p(p-a)(p-b)(p-c)) p=(a+b+c)/2
{
var edge_A=distance(a,b);
var edge_B=distance(b,c);
var edge_C=distance(a,c);
var p=0.5*(edge_A+edge_B+edge_C);
if(p*(p-edge_A)*(p-edge_B)*(p-edge_C))return false; //面积大于零 就是一个三角形 三点不共线
return true;
}
测试
function main()
{
var a=new Point(1,0,0);
var b=new Point(0,1,0);
var c=new Point(0,0,1);
var d=new Point(0,0.5,0.5);
var e=new Point(3,2,1);
console.log(collinear_3Points(a,b,c))//false
console.log(collinear_3Points(b,c,d));//true
console.log(collinear_3Points(a,b,e));//false
}