- solidify/project.c (read_face_data, save_face_data): fx/fy represent a
tangent, not a sine
- solidify/overlap.c (merge_matrix): corrected shrinkage formula to use
tangent instead of sine
- solidify/main.pov: set up a more traditional view than POV-Ray's "camera"
model
- solidify/main.pov: mark the coordinate axes with colored balls
- solidify/main.pov: make the part semi-transparent so that we can see the
coordinate axes
- solidify/solid.c (povray_face, povray): moved dumping a face from
povray() to povray_face()
- solidify/solid.c (povray_face): scale the height field to its real size
- solidify/solid.c (povray_face): rotate the face such that height is Z
- solidify/solid.c (povray_face): translate the face such that its center
is at the origin
- solidify/main.pov: change name from "Part" to "Part_batcvr"
- solidify/solid.h (povray), solidify/solid.c (sanitize, povray): use the
project name as prefix for PGM files and a suffix for the object name
- solidify/solidify.c (main): pass the project's basename to povray()
- solidify/Makefile (OBJS): added project.o
- solidify/Makefile (new): new target to create a new project
- solidify/Makefile (run): changed to resume previously created project
- solidify/util.h (stralloc): added stralloc (from fped)
- solidify/project.h, solidify/project.c: create, load, and save project
description files
- solidify/solidify.c (clicked, gui_buttons, gui, main): updated to use
project instead of solid
- solidify/solidify.c (usage, main): new invocation: four arguments to start
new project, one argument to resume old project
- solidify/face.h (struct face): record the x, y, and z step sizes
- solidify/face.c (load_file, read_file): moved file I/O from read_file to
load_file
- solidify/face.c (adjust_step, read_file): before populating the array,
determine the x/y and z step sizes
- solidify/solidify.c (main): verify that both faces have the same step
sizes
- solidify/solidify.c (main): don't use hard-coded z step size
- solidify/solidify.c (main): move call to setlocale() next to gtk_init(),
to make it clear whose damage we're trying to control
- solidify/overlap.c (do_shift, shift): instead of passing an integer
direction, pass a floating-point distance
- solidify/overlap.c (scroll_event): weight shifts as well. Closer to the
circle means faster.
- solidify/style.h (DIST_STEPS): acceleration factor for shifts
- solidify/overlap.c (draw_map): flip x-axis of bottom face (and remove
comment suggesting to flip the y axis. The x-axis is better, since this
is often how things are scanned.)
- solidify/overlap.c (overlap): added speed testing loop
- solidify/overlap.c (zmix): instead of floor/ceil, we just use
floor/floor+1. With the ramp() change below, an 18% speed increase results
- solidify/overlap.c (ramp): after the above change, w0 and w1 can never be
zero, so we don't have to test for this case
- solidify/array.h (get_bounded), solidify/array.c: inline get_bounded(),
yielding a 13% speed increase
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/Makefile: added solid.o
- solidify/solid.h, solidify.c (height_field, povray): output the part as
the intersection of two height fields
- solidify/solidify.c (main): generate POV-Ray output if stdout is
redirected
- solidify/Makefile (run, pov, disp): targets to run a test setup, render
it, and display the result
- solidify/main.pov: simple scene showing the test part
- 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
- solidify/Makefile: added verbosity control (default is silent, enable
verbose output with V=1)
- solidify/Makefile: added "spotless" target
- solidify/Makefile (CFLAGS): moved warning options to CFLAGS_WARN
- solidify/Makefile: added dependency use and generation, with friendly
permission from fped/Makefile
- solidify/level.c (draw_map): moved open-coded "almost at the same height"
parameter to constant NEAR
- solidify/level.c (draw_map): draw green and red band next to the "near"
blue band
- solidify/face.c (read_face): moved code into new function read_file
- solidify/face.c (read_face): added wrapper for cached wget of http: and
https: URLs
- solidify/face.h (struct face), solidify/face.c (read_face),
solidify/level.c (draw_map, draw_image): introduce inclination of the z0
plane
- solidify/level.c (draw_map): make blue z == z0 display more continuous
- solidify/level.c (scroll_event): moved z0 shift to scroll_z
- solidify/level.c (scroll_event, scroll_xy): added manipulation of the
z0 plane's inclination
- solidify/Makefile, solidify/histo.h, solidify/histo.c: generate a Z
histogram and find the median height
- solidify/face.c (read_face): set z_ref to the median, not the average
- solidify/face.c (read_face): uncompress .bz2 files on the fly
- solidify/face.c (read_face): don't close standard input (for style)
pending scans.
- web/index.sh: put scans of individual parts in top-down order
- web/index.sh: added placeholders for scans still missing
- index.html: regenerated with changes above
Assorted cleanup.
- web/Makefile: added index upload to downloads.qi-hardware.com
- web/index.sh, index.html: a <P> got abbreviated to just <
- data/jpg/ben-dispshell-inside-100um.jpg: image was a uncropped screenshot,
oops !
- web/Makefile: make test.html and index.html phony so that they're rebuilt
each time we run make (make doesn't know all the dependencies)
- web/index.sh: added ben-bottom-nobat-100um
- web/index.sh: added ben-kbd-top-1mm and ben-kbd-top-500um
- web/index.sh: added complete ben-bottom-inside2 series
- web/index.sh: added pointer to ben-bottom-inside2 to ben-bottom-inside
- web/style.sh (scan_set): add name anchor for each series