参考博客: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(