javafx分形算法之Arboresent(肺形)曲线

Arboresent肺也可看成是一种Koch曲线。

在线运行

源码下载

生成原理: 初始是两个顶角为钝角的等腰三角形,它们有一个公共的锐角顶点(下图中n=0的情况)。从这个顶点出发,等腰三角形的长边变成有一个夹角的两个等腰三角形,这两个小等腰三角形与原来的三角形具有相似关系,相似比为三角形的腰的长度和底边长度的比值。

javafx实现核心代码:

public void draw1(GraphicsContext gc, double x, double y, double size,
			double prate, double alfa, double theta, double t, int level) {
		double xe, ye, xa, ya, xb, yb, xc, yc, xd, yd, l;
		l = size / prate;
		xe = x;
		ye = y;
		xa = x + size * Math.cos(alfa);
		ya = y + size * Math.sin(alfa);
		xb = x + l * Math.cos(alfa - theta);
		yb = y + l * Math.sin(alfa - theta);
		xc = x + l * Math.cos(alfa - theta - t);
		yc = y + l * Math.sin(alfa - theta - t);
		xd = x + size * Math.cos(alfa - theta * 2 - t);
		yd = y + size * Math.sin(alfa - theta * 2 - t);
		if (level == 1) {
			gc.setStroke(Color.RED);
			gc.strokeLine(xa, ya, xe, ye);
			gc.strokeLine(xe, ye, xd, yd);
			gc.strokeLine(xd, yd, xc, yc);
			gc.strokeLine(xc, yc, xe, ye);
			gc.strokeLine(xe, ye, xb, yb);
			gc.strokeLine(xb, yb, xa, ya);
		} else {
			draw1(gc, xb, yb, l, prate, (alfa - theta + Math.PI), theta, t,
					level - 1);
			draw1(gc, xc, yc, l, prate, (alfa - theta - t + Math.PI), -theta,
					-t, level - 1);
		}
	}

 效果图:

在线运行

源码下载

转载于:https://www.cnblogs.com/javafx/archive/2013/04/16/3023599.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值