计算机图形学画圆方法(范文)
第 PAGE \* Arabic 1 页第 PAGE \* Arabic 1 页
浙江大学城市学院实验报告
课程名称 计算机图形学
实验项目名称 画圆方法
实验成绩 指导老师(签名 ) 日期
一. 实验目的和要求
通过实验加深对Bresenham圆生成算法的理解。
二. 实验内容和原理
数据输入项(或者函数参数)为:圆心坐标与半径
输出圆。
三. 实验设计与分析
Besenham圆
①创建一个application,将其全部保存,
②双击划圆按扭,定义参数如下:
x,y,x0,y0,r,direction : integer;
delta,delta1,delta2 : integer;
color1 : integer;
③编写代码如下
if self.Edit1.Text = '' then
begin
Application.MessageBox('圆心坐标X没有输入!','提示',0);
abort;
end
else if self.Edit2.Text = '' then
begin
Application.MessageBox('圆心坐标Y没有输入!','提示',0);
abort;
end
else if self.Edit3.Text = '' then
begin
Application.MessageBox('圆半径没有输入!','提示',0);
abort;
end
else
x0:= strtoint(Edit1.Text);
y0:=strtoint(Edit2.Text);
r:=strtoint(Edit3.Text);
x:=0;
y:=r;
delta:=2*(1-r);
color1:= clGreen;
while y>=0 do
begin
image1.canvas.Pixels[x0+x,y0+y]:=color1;
image1.canvas.Pixels[x0-x,y0+y]:=color1;
image1.canvas.Pixels[x0+x,y0-y]:=color1;
image1.canvas.Pixels[x0-x,y0-y]:=color1;
if delta<0 then
begin
delta1:=2*(delta+y)-1;
if delta1<=0 then direction:=1
else direction:=2;
end
else if delta>0 then
begin
delta2:=2*(delta-x)-1;
if delta2<=0 then direction:=2
else direction:=3;
end
else
direction:=2;
case direction of
1 : begin
inc(x);
delta:=delta+2*x+1;
end;
2 : begin
inc(x);
dec(y);
delta:=delta+2*(x-y+1);
end;
3 : begin
dec(y);
delta:=delta+(-2*y+1);
end;
end;
end;
end;
④双击演示按扭,定义参数如下:
x,y,x0,y0,r,direction : integer;
delta,delta1,delta2 : integer;
color1 : integer;
⑤编写代码如下
if self.Edit1.Text = '' then
begin
Application.MessageBox('圆心坐标X没有输入!','提示',0);
abort;
end
else if self.Edit2.Text