python - 仅使用线函数绘制分形树
问题描述
我试图弄清楚如何在不使用任何几何变换的情况下绘制分形树。
我想出了这段代码,但它不能正确旋转以用于进一步的分支。
void setup() {
size(1000,1000);
background(50);
stroke(255);
}
void draw() {
branch(100, width/2, height, 10, PI/2);
}
float angle = PI/6;
void branch(float size, float cx, float cy, int noi, float alpha) {
if(noi != 0) { //Number of increments - noi
float rx = cx + (cos(alpha) * size);
float lx = cx - (cos(alpha) * size);
float y = cy - (sin(alpha) * size);
line(cx, cy, rx, y);
line(cx, cy, lx, y);
branch(size/2, rx, y, noi-1, alpha - angle);
branch(size/2, lx, y, noi-1, alpha - angle);
} else {
return;
}
}
我使用基本的三角转换来找到下一个左右点。我认为我没有使用正确的 alpha 值进行转换。
解决方案
我解决了这个问题。
void setup() {
size(1000,1000);
background(50);
stroke(255);
}
void draw() {
branch(100, width/2, height/2, 10, PI/2);
}
float angle = PI/6;
void branch(float size, float cx, float cy, int noi, float alpha) {
if(noi != 0) { //Number of increments - noi
float rx = cx + (cos(alpha) * size);
//float lx = cx - (cos(alpha) * size);
float y = cy - (sin(alpha) * size);
line(cx, cy, rx, y);
//line(cx, cy, rx, y);
branch(size*0.66, rx, y, noi-1, alpha - angle);
branch(size*0.66, rx, y, noi-1, alpha + angle);
} else {
return;
}
}
推荐阅读
- java - 如何将字符串转换为 java.sql.Date?
- node.js - 如何使用 PostgreSQL 保存用户
- java - 检查项目中的所有类是否都有特定的注释
- instagram - 嵌入在 HTML 网页中的 Instagram Live Feed?
- pandas - 绘制从时间序列分布在几个月内的每日平均值
- javascript - 如何用 javascript 在浏览器中通过 id 替换任何现有的元素选择?
- maven - SpotBugs 忽略 src 文件夹中的整个目录
- javascript - React Material UI - 列表中的单选按钮都是可选的
- c# - 查询 webApi 时添加了 3 个新标头,但它们来自哪里?
- javascript - 在重叠的行和按钮中隔离单击侦听器