1. 程式人生 > >ACM計算幾何

ACM計算幾何


Computational Geometry

計算幾何

    ACM中基本是最麻煩的部分。
    幾何程式碼都要自己寫,STL中也沒有。基本上。
    struct point
    數乘,差乘,計算幾何題目抄。一個數字由於誤差積累造成大。
    避免誤差。
    注意:
        a=b <=> |a-b| < e
        a<b <=> a-b < -e
        a<=b <=> a-b < e
        e 多10^-8
        四捨六入五差 +- e
        精度問題。(流行技巧)
        !!慎用


    向量(向量)
        主要就是向量。(不用平面幾何)
        點積
        夾角
        a.b反映的是投影。
        垂直
        正交的東西。縮放(單位長度)
        投影長度如何算?投影模。
        向量的對稱,入射出射光。
        計算幾何和解析幾何不同。


   二維叉積。叉積在二維空間裡是一個數字。
        三維空間中是一個向量。
        叉積滿足逆交換律。axb = -bxa
        !!計算幾何中最常用的概念。
        叉積可以算面積。
        絕對值的叉積很少用,一般都是基於叉積的。
        格林公式?
        邊緣積分也是這個。
        axb的正負。??
        a.b可以求出a在b的前面還是後面。(向量的前後)
        axb可以求出左右。


        將向量看成列向量。
        重新理解座標(a,b) = a * (1, 0) + b*(0,1);
        矩陣的逆制。
        cmath中-Pi, Pi


    點和向量非常不同。
        不要寫兩個結構。
        點可以假設成從(0,0)出發的向量。
        利用矢量表示。
        !!一個點和一個方向向量表示直線!!
        視實際情況而定。


    直線相交
            如果兩條直線平行則不想交
            點選=0是垂直。
            重合即平行加點相同。
            !!排除部分情況。
            
    簡單多邊形的三角化
            三角剖分
            既有正部分,也有負部分。


   求質點組的重心
            (a+b+c)/3
            把三角形轉換成為質點 


    凸集
            !!大膽猜想,不用求證。
        
    水平序Grahan掃描演算法
        不容易出錯。


    旋轉卡殼演算法
        如何計算n個點中,距離最大的兩個點的距離?
        對種點,是一個二元關係。


    半平面,一辦平面。
        高維度空間可以被n-1維空間切開。