fix turtle/path rotation, add p5 canvas transformations to adapter from web frontend

This commit is contained in:
Scott Richmond 2024-10-20 14:17:39 -04:00
parent 7dfaed11e3
commit d0a5128e0e

View File

@ -191,8 +191,11 @@ const turtle_angle = 0.385
const turtle_color = [255, 255, 255, 150] const turtle_color = [255, 255, 255, 150]
const p5_call_root = [ const p5_call_root = [
["push"],
["rotate", Math.PI],
["scale", -1, 1],
["background", ...resolve_color(background_color)], ["background", ...resolve_color(background_color)],
["stroke", ...resolve_color(turtle_init.pencolor)] ["stroke", ...resolve_color(turtle_init.pencolor)],
] ]
function rotate (vector, heading) { function rotate (vector, heading) {
@ -324,7 +327,8 @@ function p5_render_turtle (state, calls) {
const [x2, y2] = rotate(origin, turtle_angle) const [x2, y2] = rotate(origin, turtle_angle)
const [x3, y3] = rotate(origin, -turtle_angle) const [x3, y3] = rotate(origin, -turtle_angle)
calls.push(["translate", x, y]) calls.push(["translate", x, y])
calls.push(["rotate", turn_to_rad(heading)]) // need negative turtle rotation with the other p5 translations
calls.push(["rotate", -turn_to_rad(heading)])
calls.push(["noStroke"]) calls.push(["noStroke"])
calls.push(["beginShape"]) calls.push(["beginShape"])
calls.push(["vertex", x1, y1]) calls.push(["vertex", x1, y1])
@ -353,6 +357,7 @@ export function p5 (commands) {
for (const call of calls) { for (const call of calls) {
p5_calls.push(call) p5_calls.push(call)
} }
p5_calls.push("pop")
} }
p5_calls[0] = ["background", ...resolve_color(background_color)] p5_calls[0] = ["background", ...resolve_color(background_color)]
p5_render_turtle(states[states.length - 1], p5_calls) p5_render_turtle(states[states.length - 1], p5_calls)