给出三维空间上的四个点(点与点的位置均不相同),判断这4个点是否在同一个平面内(4点共线也算共面)。如果共面,输出"Yes",否则输出"No"。
输入
第1行:一个数T,表示输入的测试数量(1 <= T <= 1000) 第2 - 4T + 1行:每行4行表示一组数据,每行3个数,x, y, z, 表示该点的位置坐标(-1000 <= x, y, z <= 1000)。
输出
输出共T行,如果共面输出"Yes",否则输出"No"。
输入样例
1
1 2 0
2 3 0
4 0 0
0 0 0
输出样例
Yes
四个点,形成三个向量,判断三个向量的行列式是否为零即可
1 #include <iostream> 2 #include <algorithm> 3 #include <cmath> 4 #include <cstdio> 5 using namespace std; 6 int t; 7 int x[4],y[4],z[4]; 8 int main() 9 { 10 cin>>t; 11 while(t--){ 12 for(int i=0;i<4;i++) cin>>x[i]>>y[i]>>z[i]; 13 for(int i=1;i<4;i++){ 14 x[i]-=x[0],y[i]-=y[0],z[i]-=z[0]; 15 } 16 if(x[1]*y[2]*z[3]+x[2]*y[3]*z[1]+x[3]*y[1]*z[2]-x[1]*y[3]*z[2]-x[2]*y[1]*z[3]-x[3]*y[2]*z[1]==0) cout<<"Yes"<<endl; 17 else cout<<"No"<<endl; 18 } 19 return 0; 20 }