跪求计算机图形学 中点分割算法 C程序
如题。谢谢!如果可以的话,+上一个运行程序的界面就更好了。尽量不要调用Open-GL的函数。...
如题。谢谢!
如果可以的话,+上一个运行程序的界面就更好了。
尽量不要调用Open-GL 的函数。 展开
如果可以的话,+上一个运行程序的界面就更好了。
尽量不要调用Open-GL 的函数。 展开
2个回答
展开全部
在MFC下 中点画圆MidPointCirle(point.x,point.y,30,RGB(0,255,0));
函数如下:
void CCricleView::MidPointCirle(int x0,int y0,int r, COLORREF color)
{
CClientDC dc(this);
int x,y,d;
x=0;
y=r;
d=5-4*r;
CirclePoint(x0,y0,x,y,color);
while (x<=y)
{
if(d<=0) d+=8*x+12;
else {d+=8*(x-y)+20;y--;}
x++;
CirclePoint(x0,y0,x,y,color);
}
}
void CCricleView::CirclePoint(int x0,int y0,int x,int y,COLORREF color)
{
CClientDC dc(this);
dc.SetPixel(x0+x,y0+y,color);
dc.SetPixel(x0+x,y0-y,color);
dc.SetPixel(x0-x,y0+y,color);
dc.SetPixel(x0-x,y0-y,color);
dc.SetPixel(x0+y,y0+x,color);
dc.SetPixel(x0+y,y0-x,color);
dc.SetPixel(x0-y,y0+x,color);
dc.SetPixel(x0-y,y0-x,color);
}
中点画线
void CLineView::MidPointLine(int x0, int y0, int x1, int y1, COLORREF crColor)
{
CClientDC dc(this);
int a,b,dt1,dt2,d,x,y;
a=y0-y1;
b=x1-x0;
d=2*a+b;
dt1=2*(a+b);
dt2=2*a;
x=x0;y=y0;
dc.SetPixel(x,y,crColor);
while (x<x1)
{
if (d<0)
{
x++;
y++;
d+=dt1;
}
else
{
x++;
d+=dt2;
}
dc.SetPixel(x,y,crColor);
}
}
函数如下:
void CCricleView::MidPointCirle(int x0,int y0,int r, COLORREF color)
{
CClientDC dc(this);
int x,y,d;
x=0;
y=r;
d=5-4*r;
CirclePoint(x0,y0,x,y,color);
while (x<=y)
{
if(d<=0) d+=8*x+12;
else {d+=8*(x-y)+20;y--;}
x++;
CirclePoint(x0,y0,x,y,color);
}
}
void CCricleView::CirclePoint(int x0,int y0,int x,int y,COLORREF color)
{
CClientDC dc(this);
dc.SetPixel(x0+x,y0+y,color);
dc.SetPixel(x0+x,y0-y,color);
dc.SetPixel(x0-x,y0+y,color);
dc.SetPixel(x0-x,y0-y,color);
dc.SetPixel(x0+y,y0+x,color);
dc.SetPixel(x0+y,y0-x,color);
dc.SetPixel(x0-y,y0+x,color);
dc.SetPixel(x0-y,y0-x,color);
}
中点画线
void CLineView::MidPointLine(int x0, int y0, int x1, int y1, COLORREF crColor)
{
CClientDC dc(this);
int a,b,dt1,dt2,d,x,y;
a=y0-y1;
b=x1-x0;
d=2*a+b;
dt1=2*(a+b);
dt2=2*a;
x=x0;y=y0;
dc.SetPixel(x,y,crColor);
while (x<x1)
{
if (d<0)
{
x++;
y++;
d+=dt1;
}
else
{
x++;
d+=dt2;
}
dc.SetPixel(x,y,crColor);
}
}
东莞大凡
2024-08-07 广告
2024-08-07 广告
在东莞市大凡光学科技有限公司,我们利用Halcon软件处理机器视觉项目时,会用到自定义标定板以满足特定需求。Halcon支持用户根据实际应用场景自定义标定板形状与标记点。这不仅可以灵活应对不同工作环境,还能提高标定精度。通过调整圆点数量、间...
点击进入详情页
本回答由东莞大凡提供
展开全部
在MFC下
中点画圆MidPointCirle(point.x,point.y,30,RGB(0,255,0));
函数如下:
void
CCricleView::MidPointCirle(int
x0,int
y0,int
r,
COLORREF
color)
{
CClientDC
dc(this);
int
x,y,d;
x=0;
y=r;
d=5-4*r;
CirclePoint(x0,y0,x,y,color);
while
(x<=y)
{
if(d<=0)
d+=8*x+12;
else
{d+=8*(x-y)+20;y--;}
x++;
CirclePoint(x0,y0,x,y,color);
}
}
void
CCricleView::CirclePoint(int
x0,int
y0,int
x,int
y,COLORREF
color)
{
CClientDC
dc(this);
dc.SetPixel(x0+x,y0+y,color);
dc.SetPixel(x0+x,y0-y,color);
dc.SetPixel(x0-x,y0+y,color);
dc.SetPixel(x0-x,y0-y,color);
dc.SetPixel(x0+y,y0+x,color);
dc.SetPixel(x0+y,y0-x,color);
dc.SetPixel(x0-y,y0+x,color);
dc.SetPixel(x0-y,y0-x,color);
}
中点画线
void
CLineView::MidPointLine(int
x0,
int
y0,
int
x1,
int
y1,
COLORREF
crColor)
{
CClientDC
dc(this);
int
a,b,dt1,dt2,d,x,y;
a=y0-y1;
b=x1-x0;
d=2*a+b;
dt1=2*(a+b);
dt2=2*a;
x=x0;y=y0;
dc.SetPixel(x,y,crColor);
while
(x<x1)
{
if
(d<0)
{
x++;
y++;
d+=dt1;
}
else
{
x++;
d+=dt2;
}
dc.SetPixel(x,y,crColor);
}
}
中点画圆MidPointCirle(point.x,point.y,30,RGB(0,255,0));
函数如下:
void
CCricleView::MidPointCirle(int
x0,int
y0,int
r,
COLORREF
color)
{
CClientDC
dc(this);
int
x,y,d;
x=0;
y=r;
d=5-4*r;
CirclePoint(x0,y0,x,y,color);
while
(x<=y)
{
if(d<=0)
d+=8*x+12;
else
{d+=8*(x-y)+20;y--;}
x++;
CirclePoint(x0,y0,x,y,color);
}
}
void
CCricleView::CirclePoint(int
x0,int
y0,int
x,int
y,COLORREF
color)
{
CClientDC
dc(this);
dc.SetPixel(x0+x,y0+y,color);
dc.SetPixel(x0+x,y0-y,color);
dc.SetPixel(x0-x,y0+y,color);
dc.SetPixel(x0-x,y0-y,color);
dc.SetPixel(x0+y,y0+x,color);
dc.SetPixel(x0+y,y0-x,color);
dc.SetPixel(x0-y,y0+x,color);
dc.SetPixel(x0-y,y0-x,color);
}
中点画线
void
CLineView::MidPointLine(int
x0,
int
y0,
int
x1,
int
y1,
COLORREF
crColor)
{
CClientDC
dc(this);
int
a,b,dt1,dt2,d,x,y;
a=y0-y1;
b=x1-x0;
d=2*a+b;
dt1=2*(a+b);
dt2=2*a;
x=x0;y=y0;
dc.SetPixel(x,y,crColor);
while
(x<x1)
{
if
(d<0)
{
x++;
y++;
d+=dt1;
}
else
{
x++;
d+=dt2;
}
dc.SetPixel(x,y,crColor);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询