【发布时间】:2018-04-02 22:50:46
【问题描述】:
我需要一些帮助来使用 JavaScript 打印分形树。
我已经编写了根据为树定义的规则打印树序列的代码,但是在打印树时遇到了一些麻烦。感谢大家的帮助。
代码如下:
var sentence = "F";
var rules = [];
rules[0] = {
a: "F",
b: "F[+F]F[-F]F"
}
setup();
function setup() {
turtle();
for (i = 0; i < 2; i++){
generate();
}
}
function turtle(){
var canvas = document.getElementById("myCanvas");
var context = canvas.getContext('2d');
for (var i = 0; i < sentence.length; i++){
context.beginPath();
var current = sentence.charAt(i);
if (current == "F"){
context.stroke();
context.lineTo(50,50);
}else if (current == "+"){
context.rotate(20*Math.PI/180);
}else if (current == "-"){
context.rotate(-20*Math.PI/180);
}else if (current == "["){
context.save();
}else if (current == "]"){
context.restore();
}
}
}
function generate(){
var nextSentence = "";
for (var i = 0; i < sentence.length; i++){
var current = sentence.charAt(i);
var found = false;
for (var j = 0; j < rules.length; j++ ){
if (current == rules[j].a){
found = true;
nextSentence += rules[j].b;
console.log(nextSentence);
break;
}
}
if (!found){
nextSentence += current;
}
}
sentence = nextSentence;
turtle();
}
我能够打印树序列,但需要一些帮助来转换该树序列以便能够在画布上打印树。 输出应如下所示:
【问题讨论】:
-
我没有在其中看到问题...发生了什么事?你的预期结果是什么?如果我运行它,我只会在控制台中看到一些字符串。
-
@Jorg,我已经用我的输出应该是什么样子更新了我的答案?
标签: javascript turtle-graphics fractals