您的位置:首页 > 其它

判断四点共面模版、

2016-08-30 21:54 141 查看
采用混合积的方式判断四点是否共面、

混合积资料:传送门






#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cmath>
using namespace std;
struct Point{
double x,y,z;
Point operator - (const Point &a){
Point tmp;
tmp.x = x - a.x;
tmp.y = y - a.y;
tmp.z = z - a.z;
return tmp;
}
}point[5];
Point Cross_product(Point a, Point b){
Point tmp;
tmp.x = a.y*b.z-a.z*b.y;
tmp.y = a.z*b.x-b.z*a.x;
tmp.z = a.x*b.y-a.y*b.x;
return tmp;
}
double Dot_product(Point a, Point b){
Point tmp;
tmp.x = a.x*b.x;
tmp.y = a.y*b.y;
tmp.z = a.z*b.z;
return tmp.x+tmp.y+tmp.z;
}
int main(){
int t;scanf("%d",&t);
while(t--){
for(int i=0; i<4; ++i)
scanf("%lf%lf%lf",&point[i].x,&point[i].y,&point[i].z);
puts(Dot_product(point[3]-point[0], Cross_product(point[1]-point[0], point[2]-point[0]))==0.0?"Yes":"No");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  51nod