簡體   English   中英

如何填充橢圓形?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM