有沒有人知道用厚度繪製橢圓的算法? 我GOOGLE了,但我發現只有算法,繪製一個像素寬度的橢圓,像這樣: http://homepage.smc.edu/kennedy_john/belipse.pdf橢圓厚度算法
謝謝。
有沒有人知道用厚度繪製橢圓的算法? 我GOOGLE了,但我發現只有算法,繪製一個像素寬度的橢圓,像這樣: http://homepage.smc.edu/kennedy_john/belipse.pdf橢圓厚度算法
謝謝。
通過一個厚度橢圓你是指兩個橢圓之間的差異,其中兩個軸已經延長了1/2厚度,另一個是它們縮短了1/2的厚度?
如果是這樣,那麼您可以將鏈接的算法調整爲掃描線填充算法。你想要做的一件事是隻沿短軸工作。 (沿長軸工作也是如此,但涉及冗餘計算)。
比方說它比它更寬。 (如果在繪圖時反其道而行,則只需翻轉軸。)在這種情況下,您將爲每個y位置繪製一個或兩個水平線段。
你需要多準確?
你想要真正的橢圓點在'x'像素寬度邊界的近似中心嗎?真正的橢圓點是內邊緣嗎?外邊緣?
我問b/c紳士的算法你發現儘可能堅持整數數學,所以我會追加到他的算法與整數工作以及。
內側邊緣:改變Plot4EllipsePoints子例程繪製的,而不是一個,其中,所述新的x像素進一步遠離橢圓的中心x像素。 2像素例如:
procedure Plot4EllipsePoints(X,Y:longint); http://homepage.smc.edu/kennedy_john/belipse.pdf
begin
PutPixel(CX+X, CY+Y); {point in quadrant 1}
PutPixel(CX+X+1, CY+Y+1); {point in quadrant 1}
PutPixel(CX-X, CY+Y); {point in quadrant 2}
PutPixel(CX-X-1, CY+Y+1); {point in quadrant 2}
PutPixel(CX-X, CY-Y); {point in quadrant 3}
PutPixel(CX-X-1, CY-Y-1); {point in quadrant 3}
PutPixel(CX+X, CY-Y) {point in quadrant 4}
PutPixel(CX+X+1, CY-Y-1) {point in quadrant 4}
end;
取自相同內側邊緣,但更接近橢圓中心。
設E1是半徑r +厚度/ 2的橢圓形和E2半徑r的橢圓 - 厚度/ 2。
適應Scanline Fill Algorithm填補E1無填充E2。