Liang Barsky直線段裁剪演算法

2021-08-20 19:53:56 字數 1351 閱讀 7171

考慮凸多邊形區域r和直線段p1p2:p(t)=(p2-p1)*t+p1

設a是區域r的邊界上一點,n是區域邊界在a點的內法線向量

則對於線段p1p2上任一點p(t)

n ·(p(t)-a)< 0

→ →

外側 n ·(p(t)-a)>0

→ →

內側 n ·(p(t)-a)=0

→ →

邊界或其延長線上

凸多邊形的性質:點p(t)在凸多邊形內的充要條件是,對於凸多邊形邊界上任意一點a和該點處內法向n,都有n·(p(t)-a)>0

k條邊的多邊形,可見線段引數區間的解:

ni· (p(t)-ai)>=0, i=0,…,k, 0≤t ≤1.

即:ni· (p1-ai)+ ni· (p2-p1) t>=0

令ti= ni· (p1-ai)/[ni· (p2-p1) ]

ni· (p2-p1) =0-> 平行於對應邊。

此時判斷ni· (p1-ai)

若ni· (p1-ai) <0

→ →

p1 p2在多邊形外側->不可見,

若ni· (p1-ai) >0

→ →

p1 p2在多邊形內側->繼續其它邊的判斷

如果ni· (p2-p1) >0,則計算出的值屬於下限組

上限組以ni· (p2-p1) <0為特徵,表示在該處沿p1p2方向前進將越來越遠地離開多邊形區域。

下限組以ni· (p2-p1) >0為特徵,表示在該處沿p1p2方向前進將接近或進入多邊形內側。

因此,線段可見的交點引數:

tl=max}

tu=min}

若 tl <= tu,[tl , tu]是可見線段的交點引數區間,否則,線段不可見。

當凸多邊形是矩形視窗且矩形的邊與座標軸平行時,該演算法退化為liang-barsky演算法。

Liang Barsky直線裁剪演算法的實現

liang barsky直線裁剪演算法簡介 liang barsky演算法由浙江大學的梁友棟與加州大學伯克利分校的briana.barsky共同提出。該演算法採用直線引數方程和不等式,以確定裁剪框與直線間的交點。1.在執行交點計算之前,liang barsky演算法會首先對線段進行足夠的檢測以保證其...

線段中點到另一直線距離最短 直線 射線和線段

一 概念描述 現代數學 在歐幾里得幾何學中,直線是幾何學中的基本概念,是點在空間內沿相同或相反方向運動的軌跡。或者定義為 曲率最小的曲線 以無限長為半徑的圓弧 射線亦稱為半直線,是幾何學的重要概念之一,指直線上任一點一旁的部分。這一點稱為射線的端點。射線也可以定義為 從某乙個確定的點出發,沿固定方向...

(12)裁剪之直線段裁剪

圖形裁剪的定義 確定圖形在指定區域 即裁剪視窗 內的部分並保留,以及在區域外的部分並裁掉的過程稱為圖形裁剪。假定 裁剪視窗為矩形視窗,左下點座標為 xl,yb 右上點座標為 xr,yt 定義 直線段裁剪就是保留給定線段在視窗內的部分。直線段與視窗的位置關係有以下幾種情況 直線段兩個端點在視窗內 線段...