This project simulates wave motion within a membrane. The
four edges of the membrane are fixed to a frame. A selected
rectangular area is connected to a plate that moves up and down,
exhibiting sinusoidal motion.

Controls of membrane properties:

The FRICTION slider controls the amount of friction or
attenuation in the membrane. The STIFFNESS slider controls
the force exerted to a turtle by a unit deflection difference
between the turtle and its four neighbors.

Controls of the driving force:

The FREQUENCY slider controls the frequency at which the
selected area of the membrane (the driving force) moves up and
down. The AMPLITUDE slider controls the maximum height of
the green area of the membrane. 

The X-D-POINT slider controls the x-coordinate of the center
of the driving force. The Y-D-POINT slider controls the
y-coordinate of the center of the driving force. The WIDTH
slider controls the width of the selected driving force.

Controls for viewing:

The THREE-D? switch controls the view point of the
projection. Value 0 is for isometric view (3-D tilted at
an angle), and value 1 is for the top view (2-D looking down).

Click the SETUP button to set up the membrane. Click GO to make
the selected area of the membrane (the green turtles) begin
moving up and down.

The membrane is made up of lines of turtles. Each turtle acts
as it were connected to its four neighboring turtles by
springs. In these model, turtles move only up and down- thus
the forces' direction are only up and down. The greater the
distance between a turtle and his neighbors, the stronger
the force.

When the selected area of the membrane (the green turtles) moves up, 
they "pull up" the turtles to their neighbors, which in turn pull
up the turtles to their neighbors, and so on. In that way, a wave
moves within the membrane. When the wave reaches the edges
of the membrane (the blue turtles), the wave is reflected back to
the center of the membrane.

The green turtles (within the selected area) continue to put more
energy into the membrane. If there were no friction in the membrane,
the waves in the membrane would keep getting bigger and bigger.   

Try different membranes. Soft membranes have smaller
stiffness values and hard membranes have larger stiffness

Try different driving forces, or try changing the frequency
or amplitude. It is very interesting to change the size
and the position of the driving force to see symmetrical and
asymmetrical wave motions.

Try to create a "standing wave," in which some points in
the membrane do not move at all.

In this model, the movement of the turtles is only in the
vertical direction perpendicular to the membrane.
Modify the model such that the movement is within the
membrane plane, i.e. the x-y plane.

You can also try to add additional driving forces to make a
multi-input membrane model. Another thing you can try is to
apply different waveforms to the driving-force to see how the
membrane reacts to different inputs. Try changing the
overall shape of the driving force.

Try to build a solid model, that is, a model of waveforms
within all three dimensions.

A key step in developing this model was to create an
invisible coordinate system of x1, y1, and zpos (the
variable names used to indicate the x, y, and z coordinates).
"x1, y1, zpos" are just three turtles-own variables. You 
can imagine that turtles are placed in and move around this
illusionary 3-space. Turtles are projected into the
graphical field with different prospectives- in 'membrane',
there are the isometric views and the top view.

A projected point on the graphic field may correspond to
more than one point in the invisible coordinate system. Thus the
StarLogoT feature "scale-color" is used to differentiate
those points. "scale-color" takes four arguments- a color
(such as red, or cyan), a variable (against which the color
is scaled), a minimum value for the variable, and a maximum value.

In 'membrane', it does not make sense for the turtles to
"wrap" when they get to the top or bottom of the screen. So
the y-position of the turtles is kept in a new variable
(YPOS), and the turtle is hidden if its y-position moves
outside the boundary of the screen.