fix turtle/path rotation, add p5 canvas transformations to adapter from web frontend
This commit is contained in:
parent
7dfaed11e3
commit
d0a5128e0e
|
@ -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)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user