`
yuanlanjun
  • 浏览: 1185315 次
文章分类
社区版块
存档分类
最新评论

计算机图形学CG 中点画圆法 画圆

 
阅读更多

画圆

姓 名:

学 号:

班 级:

日 期: 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);

}

}

分享到:
评论

相关推荐

    SDUWH计算机图形学实验--2020

    2020--SDUWH--计算机图形学实验 共20个实验 实验1 直线的绘制 实验2 直线的DDA生成算法 实验3 直线中点生成算法 实验4 直线Bresenham生成算法 实验5 中点画圆算法 实验6 中点画椭圆算法 实验7 多边形有序边表算法 ...

    计算机图形学大作业 用vc++编的,包括画线(DDA、中点画线、brasenham算法)、画圆、椭圆、梁友栋裁剪算法、中点裁剪......

    CG作业 用vc++编的,包括画线(DDA、中点画线、brasenham算法)、画圆、椭圆、梁友栋裁剪算法、中点裁剪......

    CG-中心画圆.zip_MATLAB画圆_dollfl6_matlab 画圆_ownerrvy_计算机图形学

    采用matlab语言实现了计算机图形学中的中心画圆算法,可以自动调整圆的中心与半径

    计算机图形学常用算法实现

    计算机图形学所要求的常用的五个图形算法:presenham直线法 、中心画圆法、字模显示、二位坐标变换(全部的)、种子填充法

    计算机图形学课后答案

    计算机图形学(Computer Graphics,简称CG)是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学。简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形...

    计算机图形学演示程序

    实现了计算机图形学的基本算法和功能,实现环境为MFC+VC6.0。涵盖了理论与实践的统一。

    2017级计算机图形学考试试卷A卷.doc

    计算机图形学是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学。简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形的计算、处理和显示的相关原理...

    计算机图形学CG教案(陈元琰)

    计算机图形学CG教案(陈元琰) 会有帮助的。。。。

    计算机图形学 和青芳 vc++版 打包

    计算机图形学(Computer Graphics,简称CG)是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学。简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形...

    卡耐基梅陇大学 计算机图形学 PPT 4-transform

    卡耐基梅陇大学 计算机图形学CG 4-transform

    计算机图形学图象几何变换

    几何变换是最常见的图像处理手段,通过对变形的图像进行几何校正,可以得出准确的图像。常用的几何变换功能包括图像的平移、图像的镜像变换、图像的转置、图像的缩放、图像的旋转等等。

    计算机图形学

    计算机图形学(Computer Graphics,简称CG)是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学。简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形...

    计算机图形学答案

    计算机图形学 习题的答案 原题加解答 cg答案解析

    计算机图形学图像处理

    计算机图形学图像处理,计算机图形学(Computer Graphics,简称CG)是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学。简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、...

    现代计算机图形学入门讲义及作业集合

    该项目里面含有所有的关于计算机图形学的入门性讲义和非常专业化的学习教程,而且还含有每门课程的最后作业,作业的框架代码等内容,非常适合新手学习使用。

    计算机图形学 第一章课件

    计算机图形学(Computer Graphics,简称CG)是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学。简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形...

    计算机图形学基础复习

    该文件里面有好多子文件,非常非常多,需要运行在服务器上,否则有时候会报错,当然也可以直接本地打开,打开之后同样可以看到很多非常好的关于计算机图形学基础知识的讲解。希望大家能够喜欢!

    北航研究生课程的计算机图形学课件

    北航计算机图形学的课件,对CG有兴趣的朋友可以下载,很有用。

    计算机图形学复习题目.doc

    计算机图形学(Computer Graphics,简称CG)是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学。简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形...

    计算机图形学(东南大学精华ppt).pdf

    计算机图形学(Computer Graphics,简称CG)是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学。简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形...

Global site tag (gtag.js) - Google Analytics