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

阅读: 评论:0

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

计算机图形学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 200942094;

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");

      ContentPane().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);

   }

}

 

本文发布于:2024-01-28 21:01:17,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170644688010254.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:计算机   图形学   画圆   CG
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23