paradigm.
- solidify/overlap.c (scroll_event): make weighting of rotation exponential,
so we can both adjust precisely and spin rapidly. Also reverse weighting
to rotate more quickly on the outside.
- solidify/style.h (SLOWEST_ROT, FASTEST_ROT): parameters for weighting of
rotation
- solidify/overlap.c (rotate): don't reverse y shift either
- solidify/overlap.c (scroll_event): reverse rotation (since we've fixed
the math of the coordinate transformation)
- solidify/overlap.c (scroll_event): reverse rotation if mouse is on the
left side
- solidify/overlap.c (shift): reversing the direction in the "down"
quadrant is systematic but quite confusing, so don't do it
them once.
- solidify/matrix.h, solidify/matrix.c: 2D matrix operations
- solidify/Makefile (OBJS): added matrix.o
- solidify/face.h (struct matrix): moved to solidify/matrix.h
- solidify/overlap.c (point, merge_matrix, draw_map): precalculate a single
vA+b transformation instead of stepwise transforming the vector inside
the loop
- solidify/overlap.c (do_shift): now that the math is right (or at least
better), reverse the shift
- solidify/face.h (struct matrix), solidify/face.c (read_file): also record
the face's center
- solidify/overlap.c (point): reference faces to the screen center
- solidify/overlap.c (point): use correct model coordinates for z0
calculation
- solidify/overlap.c (BORDER, sx, sy), solidify/style.h (OVERLAP_BORDER):
moved and renamed
- solidify/overlap.c (r_center, scroll_event): moved center radius
calculation to separate function
- solidify/overlap.c (draw_image): renamed to draw_map
- solidify/overlap.c (draw_image): draw an on-screen display (OSD)
- solidify/level.c (expose_event, overlap): propagate OSD on/off switch
- solidify/overlap.c (osd_proximity, scroll_event, motion_notify_event,
overlap): enable OSD when approaching the center circle or a diagonal
- solidify/overlap.c (scroll_event): reversed the direction of rotation
- solidify/overlap.c (scroll_event): use center of canvas as center, not
center of the top face
- solidify/overlap.c (do_shift, shift, scroll_event): added translation
(shifting)
- solidify/face.h (face_z0): calculate height of z0 plane
- solidify/level.c (draw_image): use face_z0 instead of open-coding the
calculation
- solidify/overlap.c (draw_image, point): moved per-point processing from
draw_image() to point()
- solidify/overlap.c (point): show differences between both faces
- solidify/solidify.c (usage, main): load both faces
- solidify/solidify.c (usage, main): accept distance between faces as third
argument
- solidify/solid.h: definition of a solid made from two opposing faces
- solidify/overlap.h (overlap), solidify/overlap.c (draw_image,
scroll_event, overlap): operate on solid instead of face
- solidify/overlap.c (sx, sy, draw_image, overlap): helper functions sx()
and sy() to determine canvas size
- solidify/overlap.c (BORDER, sx, sy): added a border around the piece,
to help with positioning
- solidify/solidify.c (clicked, gui_buttons, gui, main): use solid instead
of faces
- solidify/Makefile (OBJS): added overlap.o
- solidify/Makefile (CFLAGS): added -O9 to speed up rotation a little
- solidify/array.h, solidify/array.c (get_bounded): like get(), but returns
UNDEF if the indices are outside the array
- solidify/face.h (struct face, struct matrix), solidify/face.c (read_file):
added a 2D transformation matrix to "struct face"
- solidify/overlap.h, solidify/overlap.c: show a face with 2D transformation