計算幾何之點的內包

2021-10-21 15:22:41 字數 1258 閱讀 6779

在計算幾何中,判斷點是否內包於多邊形之中,就是點的內包問題。

解決的思路就是,對於給定點p,作一條沿x軸正方向的射線,然後計算這條射線與多邊形的邊相交的次數。

首先判斷點p是否在邊上,如果在邊上的話就直接return

如果相交的次數是奇數,那麼它就是內包的。否則,點處於多邊形的外部。

具體求相交次數的方法就是

遍歷多邊形上相鄰的兩點gi gi+1 ,設向量a = gi – p, b = gi+1– p

如果a的y座標大於b的y座標,那麼就交換a、b

這時,如果a、b的外積為正,且a、b的y座標一負一正,那麼射線與線段gigi+1相交。

題目:cgl_3_c

ac**:

#include using namespace std;

#define maxn 105

const double eps = (1e-8);

class point

point(double x, double y)

double operator^(const point &p) const //叉乘

double operator*(const point &p) const //點乘

point operator*(const double &d) const

point operator/(const double &d) const

point operator-(const point &p) const

point operator+(const point &p) const

double sqr()

double abs()

double distance(const point &p)

void print()

void read()

};class line

};point pp[maxn];

int n;

int contains(point p) //內包-》2,在邊上-》1,在外部-》0

計算幾何知識點

公式描述 公式中a,b,c分別為三角形三邊長,p為半周長,s為三角形的面積。3.三角形外接圓半徑公式 公式描述 公式中a,b,c分別為三角形的三邊,s為面積。4.正多邊形外角和為360度,各個外角相等且等於各邊所對應圓心角 5.正多變形面積 sin a r r n 2 a為圓心角,r為外接圓半徑,n...

計算幾何基礎 點 向量

附上乙個講極角排序還不錯的部落格 struct point point double x,double y x x y y point operator const point a const 叉積 0是指兩向量平行 重合 point operator const point a const dou...

計算幾何演算法概覽 演算法篇之求點

二。求點 23.計算點到線段的最近點 如果該線段平行於x軸 y軸 則過點point作該線段所在直線的垂線,垂足很容易 該線段不平行於x軸也不平行於y軸,則斜率存在且不為0。設線段的兩端點為pt1和pt2,斜率為 k pt2.y pt1.y pt2.x pt1.x 該直線方程為 y k x pt1.x...