Category talk:Jq-turtle: Difference between revisions

Content added Content deleted
(add preamble)
(def turtleMove())
Line 29: Line 29:
def turtleDown: .up=false;
def turtleDown: .up=false;


# Move to $xy = [$x,$y] without changing orientation
def turtleRotate($angle): .angle = (360 + (.angle + $angle)) % 360;
def turtleMove($xy):
$xy as [$x, $y]
| .svg += "M \($x),\($y)";


# Move to $xy = [$x,$y] in SVG co-ordinates and change orientation to ($angle % 360) degrees,
def turtleArcRight($r):
# but if $xy is not an array, then just adjust the orientation.
if .angle== 0 then .svg += " a\($r),\($r) 0 0 1 \($r),\($r)" # checked
def turtleMove($xy; $angle):
elif .angle== 90 then .svg += " a\($r),\($r) 0 0 1 \($r),-\($r)" # checked
if $xy|type == "array"
elif .angle==180 then .svg += " a\($r),\($r) 0 0 1 -\($r),-\($r)" # checked
then $xy as [$x, $y]
elif .angle==270 then .svg += " a\($r),\($r) 0 0 1 -\($r),\($r)" # checked
| .svg += "M \($x),\($y)"
else "turtleArcRight at \(.angle) not yet supported" | error
end
else .
end
| turtleRotate(-90);
| .angle = ($angle % 360);

def turtleArcLeft($r):
if .angle== 0 then .svg += " a\($r),\($r) 0 0 0 \($r),-\($r)" # check
elif .angle== 90 then .svg += " a\($r),\($r) 0 0 0 -\($r),-\($r)" # check
elif .angle==180 then .svg += " a\($r),\($r) 0 0 0 -\($r),\($r)" # check
elif .angle==270 then .svg += " a\($r),\($r) 0 0 0 \($r),\($r)"
else "turtleArcRight at \(.angle) not yet supported" | error
end
| turtleRotate(90);


def turtleForward($d):
def turtleForward($d):
Line 56: Line 51:
elif .angle==180 then .svg += " m -\($d),0"
elif .angle==180 then .svg += " m -\($d),0"
elif .angle==270 then .svg += " m 0,\($d)"
elif .angle==270 then .svg += " m 0,\($d)"
else ($d * (.angle|cosDegrees)) as $dx
else ($d * (.angle|cosDegrees|rnd)) as $dx
| ($d * (.angle|sinDegrees) * -1) as $dy
| ($d * (.angle|sinDegrees|rnd) * -1) as $dy
| .svg += " m\($dx),\($dy)"
| .svg += " m\($dx),\($dy)"
end
end
Line 69: Line 64:
end
end
end;
end;

def turtleRotate($angle): .angle = (360 + (.angle + $angle)) % 360;

def turtleArcRight($r):
if .angle== 0 then .svg += " a\($r),\($r) 0 0 1 \($r),\($r)" # checked
elif .angle== 90 then .svg += " a\($r),\($r) 0 0 1 \($r),-\($r)" # checked
elif .angle==180 then .svg += " a\($r),\($r) 0 0 1 -\($r),-\($r)" # checked
elif .angle==270 then .svg += " a\($r),\($r) 0 0 1 -\($r),\($r)" # checked
else "turtleArcRight at \(.angle) not yet supported" | error
end
| turtleRotate(-90);

def turtleArcLeft($r):
if .angle== 0 then .svg += " a\($r),\($r) 0 0 0 \($r),-\($r)" # check
elif .angle== 90 then .svg += " a\($r),\($r) 0 0 0 -\($r),-\($r)" # check
elif .angle==180 then .svg += " a\($r),\($r) 0 0 0 -\($r),\($r)" # check
elif .angle==270 then .svg += " a\($r),\($r) 0 0 0 \($r),\($r)"
else "turtleArcRight at \(.angle) not yet supported" | error
end
| turtleRotate(90);



def svg($size):
def svg($size):
Line 81: Line 97:
path("none"; "red"; 1) | svg($size);
path("none"; "red"; 1) | svg($size);


#################################################################################
###


def svg($size):
def svg($size):