19const char* input =
"uf100+91dr180|f3+2|+89uf60+90r2$f20-90dr60|f1+6|u-90f20$-90f50-90f30d+180f60uf1000";
21struct Turtle {
float x;
float y;
float h;
bool p; } t;
26 paint.setAntiAlias(
true);
28 paint.setStrokeWidth(0);
32const char* eval(
SkCanvas* canvas,
const char*
s,
char e,
float& dist,
float& l,
bool pt) {
35 case 'u': t.p =
false;
break;
36 case 'd': t.p =
true;
break;
37 case '+': t.h += atoi(
s);
break;
38 case '-': t.h -= atoi(
s);
break;
43 float r = t.h * 0.01745329f;
44 Turtle nt = { t.x + sinf(r) *
d, t.y - cosf(r) *
d, t.h, t.p };
45 if (pt && t.p) canvas->
drawLine(t.x, t.y, nt.x, nt.y, p());
51 while (*
s >=
'0' && *
s <=
'9') { ++
s; }
53 for (
int i = 0; i < c; ++i) { n = eval(canvas,
s+1, *
s, dist, l, pt); }
64 t = { 128, 128, 0,
true };
67 eval(canvas, input, 0, totalDist, l,
false);
69 l =
frame * totalDist;
70 t = { 128, 128, 0,
true };
71 eval(canvas, input, 0, totalDist, l,
true);
VULKAN_HPP_DEFAULT_DISPATCH_LOADER_DYNAMIC_STORAGE auto & d