2012-01-17 222 views
2

有沒有一種有效的算法來尋找一般橢圓中像素的標記?光柵化橢圓

本質上,我想要做的是在二維數組中找到對應於參數化橢圓的標記,該參數化橢圓跨越可能數組標記的「2D表面」。 這個問題可以像上面我的第一個Q那樣與橢圓的光柵化進行比較。

我發現了一些掃描線算法,可以做我想要的軸對齊的橢圓,但是現在我想知道是否有任何偏斜和旋轉的橢圓。必須有矢量圖形SW在那裏設法填補傾斜和/或旋轉的橢圓。

要clearify我的意思,我最近有這一個類似的問題在這裏得到解決:Special polygonial for loop in two dimensional array

/尼克

回答

1

你可以把你已經找到了光柵化橢圓的算法和簡單應用旋轉或傾斜變換到座標,然後測試它們是在橢圓內部還是外部。例如,如果你想測試一個橢圓形旋轉45度,你可以做這樣的事情:

for (x = 0; x < maxX; x++) 
{ 
    for (y = 0; y < maxY; y++) 
    { 
     double newX, newY; 
     Transform (x, y, rotationMatrix, &newX, &newY); 
     if (PointInEllipse (newX, newY, ellipse)) 
     { 
      ...do whatever here.... 
     } 
    } 
} 

如果簡單地變換應用於2x2的旋轉矩陣x和y,並將結果在下一頁末,newY。

0

我會建議使用標準三角形填充例程對三角形進行三角測量,因爲OpenGL和DirectX往往只能在一天結束時繪製三角形,所以機率很好,大多數圖形API都是如此。 。

橢圓的簡單三角測量看起來像比薩,除了向外縮放外。如果你需要更高的質量,你只需要增加比薩餅的切片數量。