传送门:1265
三个向量的混合积可以用行列式计算,而三个向量的混合积表示的是以这三个向量为三个相邻棱的平行六面体的体积。故为零即表示四点共面。
嘁--现在就让我们把行列式和矩阵学完了---大二还让我们听课吗----
ACMer 最后是不是都是一个全能的孩呀----无奈-.-
代码:
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
struct node{
double x[3];
void in()
{
scanf("%lf%lf%lf",&x[0],&x[1],&x[2]);
}
}dian[4];
struct no{
double shu[3];
}op[6];
int main()
{
int t;scanf("%d",&t);
while (t--)
{
for (int i=0;i<4;i++)
dian[i].in();
for (int i=0;i<3;i++)
{
for (int j=0;j<3;j++)
op[i].shu[j]=dian[j].x[i]-dian[3].x[i];
}
op[3]=op[0];op[4]=op[1];op[5]=op[2];
double s=0;
for (int i=0;i<3;i++)
{
double pp=1.0;
for (int j=0;j<3;j++)
pp*=op[i+j].shu[j];
s+=pp;
}
for (int i=3;i<6;i++)
{
double pp=1.0;
for (int j=0;j<3;j++)
pp*=op[i-j].shu[j];
s-=pp;
}
printf("%s\n",s?"No":"Yes");
}
return 0;
}