题解给了一个比较复杂难想的方法
请问各位神犇有没有其他好想的方法
#include <iostream>
#include <cstdio>
using namespace std;
struct pt{
double x,y;
void read(){
cin>>x>>y;
}
};
struct line{
pt s,e;
double a,b,c;
line(){}
double f(pt p){
return a*p.x+b*p.y+c;
}
line(pt ss,pt ee):s(ss),e(ee){
a=ss.y-ee.y;
b=-ss.x+ee.x;
c=0;
c=-f(ss);
}
bool side(pt p,pt q){
return f(p)*f(q)>=0;
}
};
int main(){
pt a,b,c,d;
a.read();b.read();c.read();d.read();
line l1(a,b),l2(b,c),l3(c,d),l4(d,a);
puts(l1.side(c,d)&&l2.side(d,a)&&l3.side(a,b)&&l4.side(b,c)?"Yes":"No");
}
看到一份这样的代码,有神犇可以解释一下是用什么方法做的吗