题解 P4894 【GodFly求解法向量】
SuperJvRuo
2018-09-25 18:23:30
这题没个题解,来补一篇。
直接输出两个向量的向量积(叉积)即可AC。
设三个轴上的单位向量分别为$i,j,k$,两个向量分别为$\vec{a}=(x_1,y_1,z_1)$和$\vec{b}=(x_2,y_2,z_2)$。向量积即为$\vec{n}=\vec{a}\times\vec{b}=\begin{vmatrix} i & j & k \\ x_1 & y_1 & z_1 \\ x_2 & y_2 & z_2 \end{vmatrix}$。
换成普通初高中生能看懂的:$\vec{n}=(y_1z_2-y_2z_1,z_1x_2-z_2x_1,x_1y_2-x_2y_1)$。
这个东西的性质之一是可以作为法向量,不信可以带进去试试。三维计算几何经常用这个性质。另一个性质是模长等于$|\vec{a}||\vec{b}|\sin<\vec{a},\vec{b}>$,也就是这两个向量形成的平行四边形的面积,二维计算几何比较常用。数学考试做立体几何的时候,别人解方程求法向量,OIer、MOer和PhOer早就用这个口算出结果了。
```
#include<cstdio>
#define LL long long
int main()
{
LL a,b,c,d,e,f;
while(scanf("%lld%lld%lld%lld%lld%lld",&a,&b,&c,&d,&e,&f)!=EOF)
printf("%lld %lld %lld\n",b*f-c*e,c*d-a*f,a*e-b*d);
return 0;
}
```
~~是不是只有我沙雕地交了好几发才发现是多组数据~~