关闭

判断四点共面模版、

标签: 51nod
96人阅读 评论(0) 收藏 举报
分类:

采用混合积的方式判断四点是否共面、

混合积资料:传送门




#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;
}


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:12801次
    • 积分:1616
    • 等级:
    • 排名:千里之外
    • 原创:156篇
    • 转载:2篇
    • 译文:0篇
    • 评论:0条