JavaScript分形树

本文介绍了如何利用JavaScript和canvas来绘制分形树。通过算法描述,解释了从主干开始,通过计算坐标和角度来生成树枝的过程。接着是代码展示,详细呈现了绘制分形树的实现细节。最后,提供了运行效果的截图,展示了一种递归绘制分形树的视觉效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考博客:c++分形树绘制
js 利用canvas绘制直线、曲线

1、算法描述

假设A点坐标为(x,y),B点坐标为(x0,y0),C点坐标为(x1,y1),D点坐标为(x2,y2),α为主干和枝干的夹角(父枝干和子枝干的夹角),angle为当前要描绘的树干与x轴正方形的夹角(注意angle与α的关系),L为主干的长度。

初始状态下,angle=π/2

实现的算法步骤:
1、画出主干AB,即线段(x,y)-(x0,y0)。

2、计算出D点的坐标,由于屏幕坐标系x正方向为水平向右,y正方向为水平向下,因此
x2 = x0 + 2/3L * cos(angle-α) y2 = y0 - 2/3L * sin(angle-α) (注意是减号)。

3、计算出C点的坐标, x1 = x0 - 2/3L * cos(angle+α) y1 = y0 - 2/3L * sin(angle+α)

4、将D点替换B点,B点替换A点,重复步骤1,画出枝干BD(也即新的“AB”)

5、将C点替换B点,B点替换A点,重复步骤1,画出枝干BC(也即新的“AB”)

6、重新计算枝干长度(应为L乘以一个小于1的系数),这里举例2/3,
则将L设为2/3L,angle分别设为angle+α和angle-α,重复步骤2-6,画出以BC和BD为父枝干的子枝干,直至递归终止条件满足(L小于某个值)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值