JSFiddle - React, Tailwind, and code Playground
by jrab227
JavaScript
function mergeArr(arr){
var str = ''
for (position in arr){
str = str.concat(arr[position])
}
return str
}
function vec_rotate(vector, angle){
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){
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)
var position_state = {
direction: [0,0],
position: [0,0]
}
var positions = [[0,0]]
for(var move = 0; move<2; move++){
console.log(finished_program[move])
position_state = step(finished_program[move], position_state)
positions.push(position_state.position)
}
return positions
}
function step(symbol,position_state){
var new_position, new_direction
if (symbol == "A" || symbol == "B"){
var normalizing_factor = Math.sqrt(position_state.direction[0] + position_state.direction[1])
var step = position_state.direction.map(function(dim){ return dim*normalizing_factor})
new_position = [step[0]+position_state.position[0],
step[1]+position_state.position[1]]
new_direction =...