计算机图形学实验一中点算法绘制圆
java实现计算机图形学中点画圆算法
计算机图形学实验一
采用中点画圆算法原理绘制1/8圆弧,然后利用圆的高度对称性,基于java的Graphics类,调用getGraphics()方法,在GUI界面上绘图,由于java的坐标位于左上角,所以我们可以将圆心移动至面板中心再进行算法进程:
package com.draw;
import javax.swing.*;
import java.awt.*;
import java.util.Scanner;public class middle extends JFrame {private Graphics ga;public middle(){ga = this.getGraphics();setBounds(0, 0, 1000, 1000);setVisible(true);setBackground(Color.WHITE);setLayout(null);setResizable(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);if (ga != null)paint(ga);}public void paint(Graphics g) {double r = 200;double x0, y0,t1,t2;x0 = 0;y0 = r;g.setColor(Color.GREEN);g.drawOval((int)x0,(int)y0,1,1);double d = 1-r;//构造判别式while(x0<y0){if(d<0){x0 = x0+1;g.drawOval((int)(x0+300),(int)y0+400,5,5);//绘制1/8圆弧Ag.drawOval((int)(x0+300), (int) ((int)400-y0),5,5);//绘制A圆弧关于y=400的对称g.drawOval((int)(-x0+300),(int)y0+400,5,5);//绘制关于x=300对称的1/8圆弧Bg.drawOval((int)(-x0+300),400-(int)y0,5,5);//绘制B关于y=400对称g.drawOval((int)y0+300,(int)x0+400,5,5); //交换x,y使得填满1/4圆Cg.drawOval((int)y0+300,400-(int)x0,5,5); //绘制C关于y=400对称g.drawOval((int)(300-y0),(int)(x0+400),5,5);//被填满的部分C的对称Eg.drawOval((int)(300-y0),400-(int)x0,5,5);//绘制E关于y=400对称d = d+2*x0+3;}else{x0 = x0+1;y0 = y0-1;d = d +2*(x0-y0)+5;g.drawOval((int)(x0+300),(int)y0+400,5,5);//绘制1/8圆弧g.drawOval((int)(x0+300), (int) ((int)400-y0),5,5);//绘制1/8圆弧关于y=400的对称g.drawOval((int)(-x0+300),(int)y0+400,5,5);//绘制关于x=300对称的1/8圆弧Bg.drawOval((int)(-x0+300),400-(int)y0,5,5);//绘制B关于y=400对称g.drawOval((int)y0+300,(int)x0+400,5,5);//交换x,y使得填满1/4圆Cg.drawOval((int)y0+300,400-(int)x0,5,5); //绘制C关于y=400对称g.drawOval((int)(300-y0),(int)(x0+400),5,5);//被填满的部分C的对称Eg.drawOval((int)(300-y0),400-(int)x0,5,5);//绘制E关于y=400对称}}}public static void main(String[] args) {new middle();}
}

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
