[R] Turtle world
Gabriel Baud-Bovy
baud-bovy.gabriel at hsr.it
Sun Sep 28 21:45:20 CEST 2003
Dear all,
I am trying to do a "loose" implementation in R of the Turtle World (LOGO) and
need some advices on graphical issues.
In its current very simple implementation, the user can give order to the
the turtle to
move through the console. The current position and movements are displayed
graphically (see below). In the future, I would like to permit the turtle
to interact
with objects (walls, light source, another turtle, etc.) in the world.
Right now, I am using the windows device and standard plotting functions:
- plot.new() and plot.window() for setting up and clearing the world
- segments() to plot a line representing the displacement of the turtle
- polygone(x,y,border) to plot the turtle
Before the turtle is moved, I "erased" it by calling polygon with
border="#FFFFFF" before
redrawing it with another call to polygon with border=1. The problem with
this approach
is that it "erases" also any line already drawn under the turtle. To solve
this problem, I
have considered the following approaches:
- redraw the world each time the turtles moves (this would mean that I have
acess to the
display list or that I manage one). I believe that this might be possible
with the grid package
but I am not sure if this is the best option.
- if I could have access to the internal buffer that corresponds to the
window, I could store (or XrOR) the
section of the buffer when I draw the turtle to restore it when the turtle
moves.
Ideally, the approach should be take into account possible development of
the turtle world. For
example, if the turtle world is represented by a matrix (bitmap), I could
use image() (or the
package pixmap) do display it but it is quite slow to draw the entire
world each time the
world changes (e.g., the turtle move). I would also need to define a new
"line" function that would
draw the displacement of the turtle in the world.
Alternatively, objects and turtle's movements could be represented by
display lists. But I
would have to define functions to do the rendering as well as to find out
when the turtle
"intersect" with the object.
Is there any R package (tcl/tk, grid, RGL) that can be adapted to my needs?
Is there R a package
that does 2D graphics? If I need to do some programming in C, is there
anything I could use as a
starting point? Any idea, comment would be most welcome.
Gabriel Baud-Bovy
More information about the R-help
mailing list