Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- struct vertex{
- int x,y,z;
- };
- struct vector{
- int px,py,pz;
- };
- vertex X;
- void plane(vertex a, vertex b, vertex c, vertex d);
- vector cross_prod(vector a, vector b);
- int main(){
- int t; cin>>t;
- while(t--){
- vertex A,B,C,D;
- cin>>A.x>>A.y>>A.z;
- cin>>B.x>>B.y>>B.z;
- cin>>C.x>>C.y>>C.z;
- cin>>D.x>>D.y>>D.z;
- cin>>X.x>>X.y>>X.z;
- plane(B,C,D,A);
- plane(A,C,D,B);
- plane(A,B,D,C);
- plane(A,B,C,D);
- cout<<endl;
- }
- return 0;
- }
- vector cross_prod(vector a, vector b){
- vector res;
- res.px = a.py*b.pz - a.pz*b.py;
- res.py = (a.px*b.pz - a.pz*b.px)*(-1);
- res.pz = a.px*b.py - a.py*b.px;
- return res;
- }
- void plane(vertex a, vertex b, vertex c, vertex d){
- vector ab = {b.x-a.x, b.y-a.y, b.z-a.z};
- vector ac = {c.x-a.x, c.y-a.y, c.z-a.z};
- vector cross = cross_prod(ab,ac);
- //ax + by + cz + d = 0;
- double pd = 0 - cross.px*a.x - cross.py*a.y - cross.pz*a.z;
- // cout<<d<<endl;
- int res1 = cross.px * d.x + cross.py * d.y + cross.pz * d.z + pd;
- int res2 = cross.px * X.x + cross.py * X.y + cross.pz * X.z + pd;
- if((res1 > 0 && res2 < 0) || (res1 < 0 && res2 > 0)) cout<<"Y";
- else cout<<"N";
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement