半平交面模版

2021-09-20 10:32:53 字數 637 閱讀 1288

//半平面交(返回半平面交點的個數)

//點p在有向直線l的左邊

bool onleft(line l, point p)

//二直線交點。假定交點唯一存在

point getintersection(line a, line b)

int halfplaneintersection(line* l, int n, point* poly)

if(first < last) p[last-1] = getintersection(q[last-1], q[last]);

}while(first < last && !onleft(q[first], p[last-1])) last--;

//刪除無用平面(*)

if(last - first <= 1) return 0;//空集(**)

p[last] = getintersection(q[last], q[first]);//計算首尾兩個半平面的交點

//從deque複製到輸出中

int m = 0;

for(int i = first; i <= last; i++) poly[m++] = p[i];

return m;

}

poj 2451 半平面求交

半平面求交,按著zzy 裡的方法對著寫就可以了,這題資料還是比較厚道的 include include includeusing namespace std define eps 1e 8 const int maxn 20005 int dcmp double k struct point poi...

BZOJ3190 JLOI2013 賽車 半平面交

看了黃學長的 每輛車可以表示成乙個一次函式y kx b 按k 為第一關鍵字,b為第二關鍵字排序,然後維護乙個單調棧就好了,具體的ju dge 函式看 include define bug x cout x x define ll long long define eps 1e 7 using nam...

osg 兩個面求交線

麵用osg matrix 來表示。osg vec3 ptori osg 0,0,0 mat 面的原點 osg vec3 vecx mat.getrotate osg x axis x軸 osg vec3 vecy mat.getrotate osg y axis y軸 要求兩個面的交線,首先要判斷兩...