您的位置:首页 > 其它

51nod:1265 四点共面(数学)

2017-02-28 20:59 309 查看
1265 四点共面


基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题


收藏


关注

给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4点共线也算共面)。如果共面,输出"Yes",否则输出"No"。

Input
第1行:一个数T,表示输入的测试数量(1 <= T <= 1000)
第2 - 4T + 1行:每行4行表示一组数据,每行3个数,x, y, z, 表示该点的位置坐标(-1000 <= x, y, z <= 1000)。


Output
输出共T行,如果共面输出"Yes",否则输出"No"。


Input示例
1
1 2 0
2 3 0
4 0 0
0 0 0


Output示例

Yes

解题思路:四点共面=三个向量共面,想到了补课时候小黄书上的式子:三向量共面的条件是混合积等于0。

混合积公式为:


代码如下:

#include <cstdio>
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int x[4],y[4],z[4];
for(int i=0;i<4;i++)
{
scanf("%d%d%d",&x[i],&y[i],&z[i]);
}
int r1,r2,r3,r4,r5,r6,r7,r8,r9;
r1=x[0]-x[1],r2=y[0]-y[1],r3=z[0]-z[1];//向量1的坐标
r4=x[0]-x[2],r5=y[0]-y[2],r6=z[0]-z[2];//向量2的坐标
r7=x[0]-x[3],r8=y[0]-y[3],r9=z[0]-z[3];//向量3的坐标
int hunheji=r1*r5*r9+r2*r6*r7+r3*r4*r8-r3*r5*r7-r2*r4*r9-r1*r6*r8;//计算混合积
if(hunheji==0)
{
printf("Yes\n");
}
else
{
printf("No\n");
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数学