我试图在 webgl 中绘制一个简单的二叉分形树,但是分支没有以我想要的正确角度。我通过将顶点的点绘制到一个数组中来绘制树,然后将该数组插入一个 float32array 中,然后调用 drawArrays(LINE_STRIPE)。
这是本周一到期的编程任务。我确实记得在高中时递归地绘制二叉分形树,但它是使用scratch完成的。自从我做任何需要触发的数学运算也已经很长时间了。
下面的函数是一个递归函数,它将顶点的坐标推入一个数组,稍后将传递给一个 float32array。
function createPoints(x, y, length, depth, angle, points)
{
if(depth > 0)
{
//draws line
points.push((x + length) * Math.sin(angle));
points.push((y + length) * Math.cos(angle));
let currentx = (x + length) * Math.sin(angle);
let currenty = (y + length) * Math.cos(angle);
//draw left branch
angle += Math.PI / 4;
console.log(angle);
createPoints((x + length/2) * Math.sin(angle), (y + length/2) * Math.cos(angle), length/2, depth - 1, angle, points);
//goes back somehow
points.push(currentx);
points.push(currenty);
//draw right branch
angle -= Math.PI / 2;
console.log(angle);
createPoints((x + length/2) * Math.sin(angle), (y + length/2) * Math.cos(angle), length/2, depth - 1, angle, points);
return points;
}
return;
}
预期输出是递归深度为 2 的树,它只是一个简单的 Y 形状。树枝应从基干旋转 45 度。但是,正如您在我的输出中所见,情况并非如此:
右分支实际上不是在 45 度,尽管它看起来很近。
临摹微笑
相关分类