Breseham椭圆绘画算法演变出来的程序![1]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 handwolf 的 blog

这个程序主要的思想来自breseham算法,
演变的东西就是增加了旋转!
算法描述就不写了,敲打起来很累!

把程序罗列出来吧!

mfc 代码如下:

////////////////////////////////////////////////////////////////////////////////////

//breellipse

//(xc,yc)----------椭圆中心

//fla,flb----------横轴和纵轴的半径

//double-----------旋转的角度

////////////////////////////////////////////////////////////////////////////////////

void breellipse(cdc *pdc,float xc ,float yc,float fla,float flb,double angle)

{

int i;

float a,b,x,y;

    double dx,dy,di,aa,bb,sina,cosa;

cosa=cos(angle);

sina=sin(angle);

a=fla;

    b=flb;

aa=a*a;

bb=b*b;

float flx[4],fly[4];

x=0;

y=b;

dx=0;

dy=2*aa*y;

di=bb-aa*b+aa/4;

flx[0]=xc+x*cosa-y*sina;

flx[1]=xc+x*cosa+y*sina;

flx[2]=xc-x*cosa-y*sina;

flx[3]=xc-x*cosa+y*sina;

fly[0]=yc+y*cosa+x*sina;

fly[1]=yc-y*cosa+x*sina;

fly[2]=yc+y*cosa-x*sina;

fly[3]=yc-y*cosa-x*sina;

i=0;

while(dx<dy)

{

i++;

if(i==5)

{

pdc->moveto(flx[0],fly[0]);

pdc->lineto(xc+x*cosa-y*sina,yc+y*cosa+x*sina);

本文关键:Breseham椭圆绘画算法演变出来的程序!
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top