51nod 1265 四点共面

来源:互联网 发布:传奇世界h5辅助软件 编辑:程序博客网 时间:2024/05/21 13:56

题目链接:传送门
给出四个点,看看是否共面。
因为三个点能确定一个平面,所以先把前三个点构成一个平面,看看第四个在不在就行了
三点确定一个平面的公式如下:
a(x-x1)+b(y-y1)+c(z-z1)=0
a=(y2-y1)(z3-z1)-(y3-y1)(z2-z1)
b=(z2-z1)(x3-x1)-(z3-z1)(x2-x1)
c=(x3-x1)(y3-y1)-(x2-x1)(y2-y1)
代码如下:

#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;int x[10],y[10],z[10];int main(){    int t,i,j,n,m;    int x1,y1,z1,x2,y2,z2,x3,y3,z3,x4,y4,z4;    cin>>t;    while(t--){           cin>>x1>>y1>>z1;           cin>>x2>>y2>>z2;           cin>>x3>>y3>>z3;           cin>>x4>>y4>>z4;           int a=(y2-y1)*(z3-z1)-(y3-y1)*(z2-z1);           int b=(z2-z1)*(x3-x1)-(z3-z1)*(x2-x1);           int c=(x2-x1)*(y3-y1)-(x3-x1)*(y2-y1);            if(a*(x4-x1)+b*(y4-y1)+c*(z4-z1)==0) cout<<"Yes"<<endl;            else cout<<"No"<<endl;    }    return 0;}
0 0
原创粉丝点击