椭圆算法求助,关于我的图形库的

Areslee 2004-09-12 03:46:27
基本功能在WINDOWS平台下都能跑了,不过偶没找到椭圆的算法*_*
哪位有的给贴个算法上来,写好了偶就放到实模式下测试了
...全文
200 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
梧桐168 2004-09-27
  • 打赏
  • 举报
回复
archer_hao(凤凰天舞) 还是称呼袁峰为“大侠”比较好。
:)
梧桐168 2004-09-27
  • 打赏
  • 举报
回复
由椭圆4个顶点,计算出13个Bezier顶点的,然后调用polyBezier绘制即可
程序员大本营98版有详细介绍
archer_hao 2004-09-23
  • 打赏
  • 举报
回复
袁峰!我拜读了你的大作,真是佩服你的技术功底!其实我本来正想回答说用4段Bezier来模拟的,因为你的书中就是这样说的。呵呵,既然大师现身,我还是好好学习吧。
FengYuanMSFT 2004-09-23
  • 打赏
  • 举报
回复
Ellipse is often approximated using 4 sections of Bezier curves.

You should be able to find code in http://safariexamples.informit.com/0130869856/
Areslee 2004-09-22
  • 打赏
  • 举报
回复
Areslee 2004-09-22
  • 打赏
  • 举报
回复
Areslee 2004-09-14
  • 打赏
  • 举报
回复
能不能来份不用SQRT之类的东西的?
Areslee 2004-09-14
  • 打赏
  • 举报
回复
研究下先,谢了
AI1982 2004-09-14
  • 打赏
  • 举报
回复
这是从别人哪里粘贴过来的.要是看不明白我就把整个程序发过去
void ellipse(DDSURFACEDESC* ddsd,int xx1,int yy1,int xx2,int yy2,WORD color)
{ int xx,yy,x1,x2,x3,x4,y1,y2,y3,y4,pk;
int xc,yc,rx,ry,rx2,ry2,tworx2,twory2,px,py;
xc = (xx1 + xx2) >> 1;
yc = (yy1 + yy2) >> 1;
if(xx1 > xx2)
rx = (xx1 - xx2) >> 1;
else
rx = (xx2 - xx1) >> 1;
if(yy1 > yy2)
ry = (yy1 - yy2) >> 1;
else
ry = (yy2 - yy1) >> 1;
rx2 = rx * rx;
ry2 = ry * ry;
tworx2 = rx2<<1;
twory2 = ry2<<1;
xx = 0;
yy = ry;
px = 0;
py = tworx2 * yy;
pk = ry2 - rx2*ry + rx2>>2;
x1 = xc , y1 = yc + ry;
x2 = xc , y2 = yc + ry;
x3 = xc , y3 = yc - ry;
x4 = xc , y4 = yc - ry;
writePixel(ddsd,x1,y1,color);
writePixel(ddsd,x2,y2,color);
writePixel(ddsd,x3,y3,color);
writePixel(ddsd,x4,y4,color);
while(px < py)
{ xx++;
px+= twory2;
x1++,x2--,x3++,x4--;
if(pk < 0)
pk+= ry2 + px;
else
{ yy--;
y1--,y2--,y3++,y4++;
py -= tworx2;
pk+= ry2 + px - py;
}
writePixel(ddsd,x1,y1,color);
writePixel(ddsd,x2,y2,color);
writePixel(ddsd,x3,y3,color);
writePixel(ddsd,x4,y4,color);
}
pk = (int)sqrt(((ry2*(xx*2+1)*(xx*2+1))>>2) + rx2*(yy-1)*(yy-1) - rx2*ry2);
while(yy>0)
{ yy--;
y1--,y2--,y3++,y4++;
py-=tworx2;
if(pk>0)
{ pk+=rx2 - py;
}
else
{ xx++;
x1++,x2--,x3++,x4--;
px+=twory2;
pk+=rx2-py+px;
}
writePixel(ddsd,x1,y1,color);
writePixel(ddsd,x2,y2,color);
writePixel(ddsd,x3,y3,color);
writePixel(ddsd,x4,y4,color);
}
}
Areslee 2004-09-14
  • 打赏
  • 举报
回复
......
朋友,偶要的是图形学和椭圆算法,不是数学的,数学那个上过高中的都知道
wangziz 2004-09-14
  • 打赏
  • 举报
回复
偶以为那有代码,不好意思,因为我搜的时候加了“code”
wangziz 2004-09-13
  • 打赏
  • 举报
回复
http://www.phy6.org/stargaze/Sellipse.htm
这个很具体
wangziz 2004-09-13
  • 打赏
  • 举报
回复
http://graphics.pku.edu.cn/material/courses/Graphics2001Spring/Example/ComputerGraphicsHomework.ppt

http://www.magic-software.com/Documentation/IntersectionOfEllipses.pdf

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧