JSFiddle - React, Tailwind, and code Playground
by jrab227
HTML
<script src="http://d3js.org/d3.v3.min.js"></script>
JavaScript
function mergeArr(arr){
var str = ''
for (position in arr){
str = str.concat(arr[position])
}
return str
}
function vec_rotate(vector, angle, debug){
if (debug){
console.log("Vector Rotation: ")
console.log([(Math.cos(angle)*vector[0]) - (Math.sin(angle)*vector[1]) ,
(Math.sin(angle)*vector[0]) + (Math.cos(angle)*vector[1])])
}
return [(Math.cos(angle)*vector[0]) - (Math.sin(angle)*vector[1]) ,
(Math.sin(angle)*vector[0]) + (Math.cos(angle)*vector[1])]
}
function turtleMapper(axiom, start_level, rules, draw, debug){
var inner_rec = function(level, program){
if (level == 0) {
return program
} else {
var copy =[];
for(var position=0; position < program.length; position++) {
var word = program.slice(position, position+1)
if (rules[word]) {
copy.push(rules[word])
}
}
return inner_rec(level-1, mergeArr(copy))
}
}
var finished_program = inner_rec(start_level, axiom)
console.log(finished_program)
var position_state = {
direction: [1,0],
position: [0,0]
}
var positions = [[0,0]]
for(var move = 0; move<finished_program.length; move++){
if (debug){
console.log("___________________")
console.log("On Step: " + move)
console.log("Current symbol: " + finished_program[move])
}
position_state = step(finished_program[move], position_state, debug)
if (position_state.last_move_step){
positions.push(position_state.position)
}
}
return positions
}
...