51nod 1265 四点共面

给出三维空间上的四个点(点与点的位置均不相同),判断这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
满足Ax+By+Cz+d=0就成立。
 1 #include <iostream>
 2 #include <stdio.h>
 3 #include <string.h>
 4 using namespace std;
 5 struct Point{
 6     int x, y, z;
 7 };
 8 
 9 int main(){
10     int t;
11     scanf("%d",&t);
12     while(t--) {
13         Point a, b, c, d;
14         scanf("%d%d%d%d%d%d%d%d%d%d%d%d",&a.x,&a.y,&a.z,&b.x,&b.y,&b.z,&c.x,&c.y,&c.z,&d.x,&d.y,&d.z);
15         a.x = b.x-a.x; a.y = b.y-a.y; a.z = b.z-a.z;
16         b.x = c.x-b.x; b.y = c.y-b.y; b.z = c.z-b.z;
17         c.x = d.x-c.x; c.y = d.y-c.y; c.z = d.z-c.z;
18         if(a.x*b.y*c.z+a.y*b.z*c.x+a.z*b.x*c.y-a.z*b.y*c.x-a.y*b.x*c.z-a.x*b.z*c.y == 0)
19             cout << "YES\n";
20         else cout << "NO\n";
21     }
22     return 0;
23 }

 

posted @ 2017-07-28 11:38  starry_sky  阅读(214)  评论(0编辑  收藏  举报