画圆
姓 名:
学 号:
班 级:
日 期: 2012-4
实验: 画圆
实验内容:
我使用的是中点画圆法(改进(2)算法)
核心算法:
//画8个对称的点
public
static void drawEightPoint(int x,int y,Graphics g)
{
g.fillOval(offsetX+x,offsetY+y,pointSize,pointSize);
g.fillOval(offsetX+x,offsetY-2*r+(offsetY-y),pointSize,pointSize);
g.fillOval(offsetX-3*r+(offsetX-x),offsetY+y,pointSize,pointSize);
g.fillOval(offsetX-3*r+(offsetX-x),offsetY-2*r+(offsetY-y),pointSize,pointSize);
g.fillOval(offsetX+y,offsetY+x,pointSize,pointSize);
g.fillOval(offsetX+y,offsetY-2*r+(offsetY-x),pointSize,pointSize);
g.fillOval(offsetX-3*r+(offsetX-y),offsetY+x,pointSize,pointSize);
g.fillOval(offsetX-3*r+(offsetX-y),offsetY-2*r+(offsetY-x),pointSize,pointSize);
}
//中点画圆核心算法
public
staticvoiddrawCircle(Graphics g) {
int x, y, d;
x= 0;
y= r;
int deltax = 3;
int deltay = 2 -r -r;
d= 1 - r;
drawEightPoint(x,y,g);
while (x <= y) {
if (d < 0) {
d+= deltax;
deltax+= 2;
}else{
d+= deltax + deltay;
deltax+= 2;
deltay+= 2;
y--;
}
x++;
drawEightPoint(x,y,g);
}
实验结果:(截图)
程序源代码:
package cs0904.no200942094;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public
classDrawCircle extendsJPanel {
private
static int frameWidth = 600;
private
static int frameHeight = 600;
private
static int offsetX = 300,offsetY = 200;
// 起点和重点的坐标
// 半径
private
static int r = 100;
// 定义点的大小
private
static int pointSize = 5;
// 每20格算一个小格
private
static int turnBigger(int temp) {
return temp * 20;
}
public
static void main(String[] args) {
JFrameframe = newJFrame("DrawLine");
frame.getContentPane().add(new DrawCircle());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(frameWidth,frameHeight);
frame.setLocation(200,10);
frame.setVisible(true);
}
//画8个对称的点
public
static void drawEightPoint(int x,int y,Graphics g)
{
g.fillOval(offsetX+x,offsetY+y,pointSize,pointSize);
g.fillOval(offsetX+x,offsetY-2*r+(offsetY-y),pointSize,pointSize);
g.fillOval(offsetX-3*r+(offsetX-x),offsetY+y,pointSize,pointSize);
g.fillOval(offsetX-3*r+(offsetX-x),offsetY-2*r+(offsetY-y),pointSize,pointSize);
g.fillOval(offsetX+y,offsetY+x,pointSize,pointSize);
g.fillOval(offsetX+y,offsetY-2*r+(offsetY-x),pointSize,pointSize);
g.fillOval(offsetX-3*r+(offsetX-y),offsetY+x,pointSize,pointSize);
g.fillOval(offsetX-3*r+(offsetX-y),offsetY-2*r+(offsetY-x),pointSize,pointSize);
}
public
static void drawCircle(Graphics g){
int x, y, d;
x= 0;
y= r;
int deltax = 3;
int deltay = 2 -r -r;
d= 1 - r;
drawEightPoint(x,y,g);
while (x <= y) {
if (d < 0) {
d+= deltax;
deltax+= 2;
}else{
d+= deltax + deltay;
deltax+= 2;
deltay+= 2;
y--;
}
x++;
drawEightPoint(x,y,g);
}
g.drawString("", x+20, y+20);
}
protected
void paintComponent(Graphicsg) {
super.paintComponent(g);
for (int i = 0; i <frameHeight; i +=turnBigger(1)){
g.drawLine(0,i, frameWidth,i);
}
for (int i = 0; i <frameWidth; i +=turnBigger(1)){
g.drawLine(i,0, i, frameHeight);
}
drawCircle(g);
}
}
分享到:
相关推荐
2020--SDUWH--计算机图形学实验 共20个实验 实验1 直线的绘制 实验2 直线的DDA生成算法 实验3 直线中点生成算法 实验4 直线Bresenham生成算法 实验5 中点画圆算法 实验6 中点画椭圆算法 实验7 多边形有序边表算法 ...
CG作业 用vc++编的,包括画线(DDA、中点画线、brasenham算法)、画圆、椭圆、梁友栋裁剪算法、中点裁剪......
采用matlab语言实现了计算机图形学中的中心画圆算法,可以自动调整圆的中心与半径
计算机图形学所要求的常用的五个图形算法:presenham直线法 、中心画圆法、字模显示、二位坐标变换(全部的)、种子填充法
计算机图形学(Computer Graphics,简称CG)是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学。简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形...
实现了计算机图形学的基本算法和功能,实现环境为MFC+VC6.0。涵盖了理论与实践的统一。
计算机图形学是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学。简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形的计算、处理和显示的相关原理...
计算机图形学CG教案(陈元琰) 会有帮助的。。。。
计算机图形学(Computer Graphics,简称CG)是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学。简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形...
卡耐基梅陇大学 计算机图形学CG 4-transform
几何变换是最常见的图像处理手段,通过对变形的图像进行几何校正,可以得出准确的图像。常用的几何变换功能包括图像的平移、图像的镜像变换、图像的转置、图像的缩放、图像的旋转等等。
计算机图形学(Computer Graphics,简称CG)是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学。简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形...
计算机图形学 习题的答案 原题加解答 cg答案解析
计算机图形学图像处理,计算机图形学(Computer Graphics,简称CG)是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学。简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、...
该项目里面含有所有的关于计算机图形学的入门性讲义和非常专业化的学习教程,而且还含有每门课程的最后作业,作业的框架代码等内容,非常适合新手学习使用。
计算机图形学(Computer Graphics,简称CG)是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学。简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形...
该文件里面有好多子文件,非常非常多,需要运行在服务器上,否则有时候会报错,当然也可以直接本地打开,打开之后同样可以看到很多非常好的关于计算机图形学基础知识的讲解。希望大家能够喜欢!
北航计算机图形学的课件,对CG有兴趣的朋友可以下载,很有用。
计算机图形学(Computer Graphics,简称CG)是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学。简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形...
计算机图形学(Computer Graphics,简称CG)是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学。简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形...