JAVA Applet——绘制心形曲线

版权声明:DY https://blog.csdn.net/Atishoo_13/article/details/82983232

绘制心形曲线


1.要求

非常有名的笛卡尔曲线数学公式: x 2 + y 2 2 a x 2 = 4 a 2 ( x 2 + y 2 ) (x^{2}+y^{2}-2ax)^{2}=4a^{2}(x^{2}+y^{2}) 即心形曲线,本例通过Applet绘制出笛卡尔曲线。

2.原理

笛卡尔曲线是一个圆在同样半径的圆周上滚动,在滚动的过程中一定会形成轨迹曲线。它的数学方程为 x = a ( 2 c o s ( t ) c o s ( 2 t ) ) x=a(2cos(t)-cos(2t)) y = a ( 2 s i n ( t ) s i n ( 2 t ) ) y=a(2sin(t)-sin(2t)) r = 2 a ( 1 + c o s ( θ ) ) r=2a(1+cos(\theta ))
算法实现:

r=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/4;

3.语法

  • init方法,对Applet程序进行初始化,当Applet首先被加载时,该方法会自动被调用一次。
  • paint方法,将Graphics对象画出的图像打印出来.
  • Math类的方法说明:Math.PI是Math的一个final常量,表示比任何其他值更接近圆的周长与直径之比pi;Math。Sin()表示返回角的三角正弦;Math.cos()表示返回角的三角余弦。

4.代码

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.applet.*;
import java.awt.*;
public class rw32 extends Applet {
	int width,height; //声明int类型变量
	Image image;//声明图像变量
	Graphics draw_Curve;//声明图形绘制变量
	public void init(){//Applect程序初始化
		setBackground(Color.black);
		this.setSize(450,410);
		width=getSize().width;
		height=getSize().height;
		image=createImage(width,height);
		draw_Curve=image.getGraphics();
	}
	public void paint(Graphics g){
		//利用Graphics绘制组件
		draw_Curve.clearRect(0, 0, width, height);//用制定颜色填充清除指定的矩形
		draw_Curve.setColor(Color.red);
		int i,j;
		double x,y,r;
		for(i=0;i<=90;i++)//笛卡尔数学公式:(x*x+y*y-2ax)2=4a*a(x*x+y*y)
			for(j=0;j<=90;j++){
				r=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/4;
				draw_Curve.fillOval((int)x, (int)y, 2, 2);
			}
		g.drawImage(image,0,0,this);
	}
        public static void main(String[] args){
         System.out.println("笛卡尔心形曲线已成功显示");
         }

}

5.结果

运行后结果如下图所示:
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Atishoo_13/article/details/82983232