java n个点 凸多边形_hrbustoj 1291 点在凸多边形内
分析:因為是凸多邊形,所以只要對每條邊求一下叉積即可.
設有向量P和Q則它們的叉積PXQ有以下性質:
1.PXQ>0? 時,則P在Q的順時針方向;
2.PXQ<0? 時,則P在Q的逆時針方向;
3.PXQ=0? 時,則P和Q共線,可能同向,也可能是反向;
#include
#include
#include
#include
#include
#include
#include
using namespace std;
const int maxn=100000;
struct point{
int x,y;
void read(){
cin>>x>>y;
}
}rt,f[maxn];
double cross(point p0,point p1,point p2){///叉積
return (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y);
}
int main(){
int n;
while(cin>>n){
rt.read();
for(int i=0;i
f[i].read();
f[n]=f[0];
bool ok=true;
for(int i=0;i
if(cross(f[i],f[i+1],rt)<0){///在邊的外部
ok=false; break;
}
if(ok) puts("Yes");
else puts("No");
}
return 0;
}
總結
以上是生活随笔為你收集整理的java n个点 凸多边形_hrbustoj 1291 点在凸多边形内的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java list 自定义类型转换_ja
- 下一篇: 啤酒一瓶多少钱啊?