`
guanxianxiao
  • 浏览: 18687 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论
收藏列表
标题 标签 来源
分形(心型)
package Demo;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;

import javax.swing.JFrame;

@SuppressWarnings("serial")
class Cardioid extends JFrame
{
	//定义窗口大小
	private static final int WIDTH = 480;
	private static final int HEIGHT = 600;
	
	//获取屏幕大小
	private static int WINDOW_WIDTH = Toolkit.getDefaultToolkit().getScreenSize().width;
	private static int WINDOW_HEIGHT  = Toolkit.getDefaultToolkit().getScreenSize().height;
	
	//构造函数 
	public Cardioid(){
		//设置窗口标题
		super("❤形线");
		//设置背景色
		this.setBackground(Color.BLACK);
		//设置窗口位置
		this.setLocation((WINDOW_WIDTH - WIDTH)/2, (WINDOW_HEIGHT - HEIGHT)/2);
		//设置窗口大小
		this.setSize(WIDTH, HEIGHT);
		//设置窗口布局
		this.setLayout(getLayout());
		//设置窗口可见
		this.setVisible(true);
		//设置窗口默认关闭方式
		this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
	}
	public void paint(Graphics g){
		
		double  x,y,r;			//横纵坐标及半径
		Image image = this.createImage(WIDTH, HEIGHT);
		Graphics pic = image.getGraphics();
		
		//绘制图形
		for (int i = 0; i < 100; i++)
		{
			for (int j = 0; j < 100; j++)
			{
				r = Math.PI / 45 + Math.PI / 45 * i * (1 - Math.sin(Math.PI / 45 * j)) * 18;  
				
				x = r * Math.cos(Math.PI / 45 * j) * Math.sin(Math.PI / 45 * i)  + WIDTH / 2;
                        
				y = -r*Math.sin(Math.PI / 45 * j) + HEIGHT / 2;
				
				pic.setColor(Color.MAGENTA);
				pic.fillOval((int)x, (int)y, 2, 2);
			}
			//生成图片
			g.drawImage(image,0,0,this);
			
		}
		
	}
}
public class CardioidDemo{
	
	public static void main(String[] args){
		
		new Cardioid();
	}
}
Global site tag (gtag.js) - Google Analytics