绘制心形曲线
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}) (x2 y2−2ax)2=4a2(x2 y2) 即心形曲线,本例通过Applet绘制出笛卡尔曲线。
2.原理
笛卡尔曲线是一个圆在同样半径的圆周上滚动,在滚动的过程中一定会形成轨迹曲线。它的数学方程为 x = a ( 2 c o s ( t ) − c o s ( 2 t ) ) x=a(2cos(t)-cos(2t)) x=a(2cos(t)−cos(2t)) y = a ( 2 s i n ( t ) − s i n ( 2 t ) ) y=a(2sin(t)-sin(2t)) y=a(2sin(t)−sin(2t)) r = 2 a ( 1 c o s ( θ ) ) r=2a(1 cos(theta )) r=2a(1 cos(θ)) 算法实现:
代码语言:javascript复制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.代码
代码语言:javascript复制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.结果
运行后结果如下图所示:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/181230.html原文链接:https://javaforall.cn