  X-BASED TRIANGLES
  ================= Triangles X widget, V5.5.4

Primary site: ftp://ftp.tux.org/pub/tux/bagleyd/xpuzzles
Secondary site: ftp://ftp.x.org/contrib/games/puzzles
Web page: http://www.tux.org/~bagleyd/puzzles.html
Maintainer: David A. Bagley <bagleyd@tux.org>

  It has been tested on the following platforms:
    Sun Ultra       SunOS 5.6-5.7
    PC  Pentium     Linux 2.0.9
    IBM PowerPC     AIX 4.3.1.0
    HP  898         HP-UX 10.20

  Previous versions tested on:
    Sun SPARC       SunOS 5.5.1 (X11R5 & X11R6)
    Sun SPARC       SunOS 4.1.3
    PC  486         Linux 1.2.13(*)
    DEC VAX & ALPHA VMS 6.1
    HP  3xx & 700   HP-UX 9.01

    * Keypad may not work, since various keycodes may not be defined
      by default.  Check that "KP_1 - KP_9, Home, Up, Prior, Left,
      Begin, Right, End, Down, Next" are defined towards the end of
      /usr/lib/X11/etc/xmodmap.std .  If not defined
      cp /usr/lib/X11/etc/xmodmap.std /usr/lib/X11/xinit/.Xmodmap
      and then motify this or create your own at ${HOME}/.Xmodmap .
      You should just have to uncomment them (get rid of some '!').
      This should be done before X is started.  Also it may work better
      with the Num-Lock on.

  If you have to do any editing to get this to work, please mail me
  the changes.

HOW TO BUILD?

  An ANSI C compiler is required for build.

  To build, it should be easy.  There are 3 choices.

    configure:
      Relatively new so there is a good possiblity that it is not set up
      correctly on your system.  You may want to set SCOREFILE and DATAFILE
      in Makefile.in .

      configure ; make

    imake:
      Sometimes this is not setup correctly by the distributer ... i.e. not
      my fault.  You may want to set SCOREFILE and DATAFILE in Imakefile .
      If you have Motif you may want to do this quick edit in the Imakefile:
        Uncomment line "#define XmLibrary".

      xmkmf ; make

    make.com (VMS users only):
      You may want to set SCOREFILE and DATAFILE in make.com .

      @make

  Then just run "xtriangles" (or "xmtriangles" if you have Motif).
  If you do a "make install" "SCOREFILE" and "DATAFILE" must be
  set correctly.

  You should have Triangles.ad copied to $(HOME)/Triangles or
  /usr/lib/X11/app-defaults/Triangles to run, especially if the background
  is similar to one of the faces. Edit this file for your preferences.
  You might want to move xtriangles into /usr/bin/X11 (or wherever your
  X binaries are).
  You might also want to move xtriangles.man to /usr/man/man6/xtriangles.6

  If you were looking for a auto-solver, sorry.

  Keep in mind that Triangles is a widget that can be simply stuck in
  other X programs. (If you find a use for this, let me know).

  Refer to the man page for detailed command line options.

  If you want further information on puzzles, I'll be glad :-) to send
  it to you.

MATHEMATICAL STUFF USED IN CONSTRUCTION
 
  Assuming it is a triangle of i triangles in each row and the
  numbering starts from 1.
    Corner 1-> 1
           2-> i^2-2i+2
           3-> i^2

    Center -> i%3 =>
           0: None
           1: j(j+1)+1 where j=2(i-1)/3 
           2: j(j+1)+1 where j=2(i-2)/3+1

    Max_Width -> i units
    Max_Height -> 3^(1/2)i/2 units

    Start -> x= i/2 units
             y=0
             side=UP
             fin=1
             step=1
    Next -> (fin==n) =>
         true: x+= -step/2 units; y+=3^(1/2)/2 units; side=UP;
               step+=2; fin+=step
         default: side=!side; x+=1/2 unit;
               y+= (side==UP)?-3^(1/2)/2:3^(1/2)/2

    Same row? -> (m'==n') where s'=sqrt_trunc(s-1) {k}
    Same trbl? -> (((m-1) - m'*m')/2 == ((n-1) - n'*n')/2)) {i}
    Same tlbr? -> (((m'+1)(m'+1) - m)/2 == ((n'+1)(n'+1) - n)/2) {j}
 
FOUND A BUG?

  Send bugs reports and fixes to the author. For bugs, please include
  as much information as to their location as possible, since I may not
  have the resources to duplicate the them.

HISTORY

  [Sep 01, 2001]  V5.5.4: g++ 3.0 warnings removed.
  [Mar 27, 2001]  V5.5.3: Infinite loop fix for ARM thanks to Matej Vela
    <mvela@public.srce.hr>.
  [Aug 11, 1999]  V5.5.2: Fixed runtime library problems when using configure.
  [Jul 31, 1999]  V5.5.1: Imakefile fix for xtriangles, and removed HP usleep
    warning.
  [Jun 20, 1999]  V5.5: Added -rv, -mono, -base
  [Jan 01, 1997]  V5.4: Username, concurrency check, configure, man page
    updates.
  [Apr 08, 1996]  V5.3: Minor changes.
  [Jan 31, 1996]  V5.2: Tiles will invert, when selected.
    Now using dynamic allocation, so there is no maximum size.
  [Dec 15, 1995]  V5.1: Minor updates, RNG for 32/64 bit, border color
    to make faces look more realistic.
  [Oct 01, 1995]  V5.0: Xt/Motif, your choice.
  [May 16, 1995]  V4.10: Warnings removed from Sun's cc and lint and now
    include a random number generator.
  [Mar 13, 1995]  V4.4: Removed lint warnings and added a VMS make.com .
  [Nov 11, 1994]  V4.3: Conservative guess for random number generator.
  [Oct 30, 1994]  V4.2: Now allows undos, saves, and recalls, also fixed a bug
    where multiple moves were logged for certain single moves.
  [Jun 28, 1994]  V4.1: Can accommodate a auto-solver.
  [Jun 07, 1994]  V4.0: Xt version.
    I got some good ideas from oclock.
  [Apr 01, 1993]  V3.0: Motif version.
    I got some good ideas from Douglas A. Young's
    book: "The X Window System Programming and Applications
    with Xt OSF/Motif Edition", particularly his dial widget.
    I got some good ideas on presentation from Q. Zhao's
    tetris.
  [Jan 06, 1992]  V2.0: XView version.
  [Sep 05, 1991]  V1.0: SunView version.
