News on Recent Fran Releases
Note: Fran used to be named "RBMH".
Last modified October 31, 1996
0.0 Sept 8, 1996
Sept 9, 1996
- Fixed inverse2 bug that messed up screen-to-world mapping
- Fixed RenderImage.draw to catch all errors and print
"Win32 drawing error" instead of bombing. When
you start seeing this message, you can kill the animation window.
- Changed ImageBTest.smoothGrowShrink to scale by "exp
(integral (changingRate t0) t0" instead of "1 + integral
(changingRate t0) t0". The result looks better the
new way and never does negative scaling.
- Added a bunch of fun examples to ImageBTest. These
examples are eyes that look at the mouse and one that chases
it. See i12 to i16.
Sept 16, 1996
- Added timeTransform to Behavior.hs. Warning: the
implementation of untilB assumes that the given time
stream does not go backwards across events. We cannot
guarantee this property, so be careful! Before, we've
said to use only monotically non-decreasing time
transforms, but non-monotonic ones are very useful at
times, and untilB is the only construct that has trouble
with them. (Even integration doesn't mind.)
- Changed ImageTest.lotus to take take the number of rings
as an argument, rather than doing using many of them.
Added example ImageBTest.i18 to show it off. Still pretty
slow. :-(
- Major change to the representation of events.
- Added some neat examples of Sigbjorn's, involving time
transforms. See i19, i20, and i21 in ImageBTest.hs. Unfortunately,
time transformation works badly with external events, and
thus with the mouse position behavior, to i20 and i21 are quite jerky.
- Renamed constructors Vector2 and Point2 to Vector2XY and
Point2XY.
- Re-implemented integral so that recursive systems (ODEs)
work efficiently! Try "disp (i17 0)" in
ImageBTest, and move the mouse around. The eyes are connected in
a chain of springs. Introduced the t0 argument to to avoid
a space leak problem. This change should be done
throughout ImageBTest.
- Removed determinant common-subexpression from inverse2.
- Renamed lerp2 to linearInterpolate2.
- Added RBMH module, which imports all the individual parts
of RBMH, and reexports those appropriate for a casual
user. (Thanks go to Alastair Reid for these last three
items.)
0.3 Sept 17, 1996
- Added StaticTypes module, which just
packages up the static modeling types. Recommended use:
"import qualified StaticTypes as S".
(As in ImageBTest.hs.)
- Added predicate for events based on
boolean behaviors.
- Added bouncing ball examples i23 and i24
to ImageBTest.hs. For i24,
do a left-click to add a new ball. They disappear after
five seconds.
- Switched all ImageBTest examples to be
functions of start time, to eliminate space leak (CAFs)
and to make them temporally composable.
- Added keyboard event primitives primKP
and primKR in PrimInteract.hs, plus a
higher-level version keyPress in Interaction.hs.
Changed i8 in ImageBTest
to use it.
- Added allDemos to ImageBTest.
This new "super demo" combines all of the others.
run "disp allDemos" to see
them all, and press <space> to go on to the next
item.
- Added lifted list formation and extraction: nilB,
consB, headB, tailB.
0.4 Sept 20, 1996
- Changed polyline from being a filled
polygon to be a set of connected line segments. Added polygon
for describing n-sided filled polygons. The inside of a polygon
is filled with the (outermost) color specified with the withColor combinator,
i.e., withColor red (polygon ls) draws a red
polygon. (default is white). Line segments are drawn with
a white pen.
- Switched color transformation combinators from using RGB
color space to HSL (removed mixRed,mixGreen,mixBlue).
- Added a fourth control point argument to bezier,
instead of having the origin2 be the implicit first
control point.
- Added a bunch of demos that uses polyline, polygon
and bezier.
0.5 Oct 8, 1996
- Added pairBSplit for taking apart
pair-valued behaviors. Sample use:
(wWidth, wHeight) = pairBSplit (vector2XYCoords aVecBehavior)
- Added projects.htm, listing non-trivial RBMH-related
projects.
- Fixed error in interpolateColor found by
Gary Shu Ling.
- Added ^* and ^^*, lifted versions of ^ and ^^. Added
lifted ^ and ^^ (exponentiation).
- Added +, -, and negate on vectors (via a Num
instance).
- Fixed the view transformation so that the origin is
always in the window center. (!)
- Added a frame to the bouncy ball examples i23
and i24.
- Added a lot of number operator overloadings and
functions, and checked in Behavior.hs.
Several couldn't be lifted because of their types, and so
have names like "roundB"
instead of "round". If you try
using something like "round", you'll
get a helpful error message.
- Added dispFps to ImageBTest.hs. This
variant of disp shows the frames per second.
- Re-activated frames-per-second counting. See dispFps
in ImageBTest.hs.
- Added showB, a lifting of show.
- Integrated Gary's fix for viewSize
behavior.
- Added example i37 showing a use of viewSize
to stretch an image to fit the window, based on a similar function
of Gary's.
- Added a frog image Media\frog.bmp from Sandra
Loosemore's frog page.
0.6 Oct 25, 1996
- Changed several of the examples in ImageBTest.hs
to use the *=>
operator, whose second argument consumes just the event
time, ignoring the data.
- Added regularPolygon and star
in Image.hs and ImageB.hs.
- Added bounce1', a new version of bounce1,
in ImageBTest.hs. The new one is simpler,
but doesn't yet work, probably because of too much
self-reactivity (snapshotting and/or predicate).
- Added UtilsB.hs. Ad hoc collection of
definitions. These are here for introductory use, to make
it easier to do some simple things. I'd like to make it
so that kids can use this simple vocabulary.
0.7 Oct 25, 1996
- Re-introduced Sigbjorn's monadic event combinators. See
especially >>, >>=, +>>=, and
joinEvent. These are very useful and complement the
previous set. The event combinators suchThat
and filterEv, which were previously
primitive, are now derived. Even predicate
is defined in terms of >>. (Interval analysis still not restored.) Check
it out!
- Big change in representation of behaviors and events. A
behavior is no longer maps time streams to value streams,
but rather maps a single time to a value and a new behavior.
Simon PJ recommended this representation as being neatly deforestable by
GHC. (Sigbjorn also suggested it a while back.)
Similarly, an event takes a query time tq and returns
either a time/value pair (te,x) with te<tq, or a new
event (non-occurrence).
- Rewrote integral to be a recursive
reactive behavior. Still uses Euler's method :-( but now
is piecewise-linear between steps.
0.8 Oct 31, 1996
- Made this version just before giving a talk at the Oregon
Center for Advanced Technology Education (OCATE).
- Added a few small images to Media\,
thanks to Pixel
Monkey.
- A bunch of new examples in a new source file Samples.hs.
These are the OCATE talk examples. Try them out!
- Added Force.hs, which defines a Forceable
type class. Helps when lazy evaluation causes space leaks(Anthony
Daniels)
- More helper functions in UtilsB.hs: TurnRight,
TurnLeft, move, biggerXY, smallerXY,
and wiggleRange. Removed moveHorizontal
and moveVertical. Removed color from the showIm
functions. Added atRate (synonym for integral).
- Added point and vector operation synonyms. .+^ .-., *^,
and ^/.
- Text display now centers.
- Text now scales and rotates properly !!!
- Made default font be times roman, rather than
"system"
- Noticed that i21, i22
now work nicely. Sigbjorn made these ones, and apparently the
version 0.7 changes let them work properly. Try them --
they're delightful!
- Added lbr, rbr, and
simplified lbp and rbp
- Doubled pixels-per-unit. You'll notice that the demo
window is now bigger.