Logocraft (was Re: [squeak-dev] 3D points?)

Bert Freudenberg bert at freudenbergs.de
Thu Feb 28 17:59:02 UTC 2013


On 2013-02-28, at 08:38, Frank Shearar <frank.shearar at gmail.com> wrote:

> On 28 February 2013 01:04, Casey Ransberger <casey.obrien.r at gmail.com> wrote:
>> Vector3D is totally it. I knew I'd seen it x at y@z somewhere, which was in
>> OpenQWAQ now that I think about it.
>> 
>> Is there a canonical MC repository for this code, or should I grab an Cobalt
>> image and start filing stuff out?
>> 
>> Eeep! I'm a step closer to Logo in Minecraft :D I did the simplest thing
>> that would work, which is something like...
>> 
>> turtle
>>    penDown;
>>    turn: #west;
>>    go: 5;
>>    turn: #up;
>>    go: 1;
>>    turn: #east;
>>    go: 5
>> 
>> This is actually good enough to make procedurally generating relatively
>> complex builds (e.g., a CPU) much less painful that even a map editor, but
>> it doesn't feel like Logo at all. I haven't used Logo since childhood, but
>> IIRC one would turn by degrees and these would be mapped onto pixel space. I
>> *think* this is why I'm wanting a 3D Point, so I can map 3D points onto
>> voxel space without reinventing the third dimension from scratch.
>> 
>> This was a fun problem to think about: I tried to get #left and #right as
>> valid params to the turn method, but wait! What does #left mean when the
>> turtle is currently traveling up? Which has me now thinking in terms of
>> roll/yaw/pitch. It's weird to think about.
> 
> Yep, that makes sense, given Logo's differential-geometry-ness.
> #left/#right are, of course, yaw: 'left a bit, up a bit, ok fly like
> that. down a bit, right a bit.' Have you heard of the TNB frame at
> all? The torsion/normal/binormal frame. Might help in getting yourself
> inside the turtle.
> 
> frank

Yep. The most important thing about turtle graphics is that almost all turtle commands are relative to the turtle's position and direction. So instead of turning "west" and "east" absolutely, you should turn "left" and "right", and if you do 4 "up + go" in a row would have made a (square) looping. "Left" and "right" make total sense if you imagine being a turtle :)

If it's just a "cursor" instead of a turtle, then using absolute directions would make sense. In that case "cursor goX: 5; goY: 5; goX: -5; goY: -5" would also draw an upright square. This might be more convenient in some cases, but you shouldn't call it "turtle".

- Bert -




More information about the Squeak-dev mailing list