1. 程式人生 > >【增量演算法】三維凸包

【增量演算法】三維凸包

很長一段時間沒有寫總結了,隨著冬令營的結束,最近對大幅度的總結。

最後一天LRJ講了下計算幾何我才發現3D凸包原來如此簡單。

主要講了兩個演算法:包裹法和增量演算法。

個人感覺增量法比較好,整個過程只用到了+-*這集中運算,不涉及實數運算。

包裹法:首先確定一條一定為凸包上的線段,然後由這條線段為軸,像包紙一樣的往順時針(逆時針)包,碰到的第一個點就是凸包上的點,這時候又可以確定兩條直線,遞迴操作;

增量法:首先任選4個點形成的一個四面體,然後每次新加一個點;

            分兩種情況:1.在凸包內,無視;

                              2.在凸包外,找到從這個點可以“看見”的面,刪除這些面,然後對於一邊沒有面的線段,和新加的這個點新建一個面;

            至於這個點可以看見的面,就是求出這個面的方程(可以直接求法向量)。

明天就是冬令營了,{$RP++}!

code: