Java绘制心形曲线(笛卡尔曲线)

概要:

笛卡儿曲线是一个圆在同样半径的圆周上滚动,在滚动的过程中一定会形成轨迹曲线。它的数学方程为x=a(2cos(t)-cos(2t));y=a(2sin(t)-sin(2t));r=2a(1+cos(θ))。

算法实现:r=Math.PI/45*i*(1-Math.sina(Math.PI/45*j))*18;x=r*Math.cos(Math.PI/45*j)*Math.sina(Math.PI/45*i)+AppletWidth/2;y=r*Math.sin(Math.PI/45*j)+AppletHeight/4。

| |目录

代码

package net.xsoftlab.baike;
import java.applet.*;
import java.awt.*;
public class CartesianCurve extends Applet {
	int width, height;// 声明int类型变量
	Image image;// 声明图像变量
	Graphics draw_Curve;// 声明图形绘制变量
	public void init() {// Applect程序初始化
		setBackground(Color.black);
		this.setSize(350, 310);
		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;
		// 笛卡儿数学公式:(x*x+y*y-2ax)2=4a*a(x*x+y*y)
		for (i = 0; i <= 90; i++)
			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);
	}
}


评论关闭
评论 还能输入200
评论关闭
评论 还能输入200
  • 全部评论(0)
资料加载中...
已关注 , 取消