[英]How to fill an ellipse shape?
我在C ++中有一個繪制橢圓的函數。 現在,我想為該橢圓添加一個填充選項。 我怎么做? 我嘗試使用泛洪填充算法,但是當表面已經包含繪畫時,它無法正常工作。
這是我當前的算法:
const double TwoPI = ( PI * 2 );
const double Step = ( PI / 180.0f );
for( double i = 0; i < TwoPI; i += Step )
{
float x_offset = ( radiusX * cos( (float) i ) );
float y_offset = ( radiusY * sin( (float) i ) );
int x = int( a_X + x_offset );
int y = int( a_Y + y_offset );
if( prevX == -1 && prevY == -1 )
Plot( x, y, color );
else
Line( prevX, prevY, x, y, color );
}
好吧,一個想法可能是只遍歷半個圓,然后計算圍繞y軸對稱放置的點。 然后在它們之間繪制一條水平線,填充所有像素。
您在兩個方向上行駛,並從一條直線到另一條直線划出一條線,就像這樣:我沒有嘗試運行它,這只是個主意,應該畫一個實心圓。
const double TwoPI = ( PI * 2 );
const double Step = ( PI / 180.0f );
double start=0;
for( double i = 0; i < TwoPI; i += Step )
{
float x_offset = ( radiusX * cos( (float)start+ i ) );
float y_offset = ( radiusY * sin( (float) start+i ) );
float x2_offset = ( radiusX * cos( (float)start - i ) );
int x = int( a_X + x_offset );
int x2 = int( a_X + x_offset );
int y = int( a_Y + y_offset );
Line( x, y, x2, y, color );
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.