Isecalc, Intersection Line Calculator
computes the intersection line of two sets of triangles or quads.
Each set is provided to the utility as separate LDraw files.
A third file containing the intersection lines is created.
It is a simple console application, source code
is provided below to anyone willing to integrate it in a more
palatable interface. You may also use Michael Heidemann LETGUI front-end (highly recommended!).
package, including program for Windows Linux
and Macintosh, documentation, source files (Visual C++ 6.0)
and the following sample files:
sphaxle.ldr contains a Technic
axle stuck in a sphere primitive, slightly off-center.
sphere-t.dat is the inlined sphere
axle-t.dat is the inlined axle
sphaxle.dat is the intersection
line as created by Isecalc.
sphaxle2.dat contains the intersection
line with the original axle and sphere
Note: Macintosh version (universal binary) courtesy of Jim
Note: Linux version courtesy of Mufti
V1.1: Increase angle threshold value
to improve line condensation.
V1.2: Improved output file format
V1.3: Increased array size for more
triangles/lines (January 2009)
V1.4: Used dynamic memory allocation
for more triangles/lines (memory and patience limited only).
Improved line condensation parameters for better results.
output file with 6 digits after decimal point, this precision
is excessive for most usages and values should be rounded.
Here again, LDDesignPad
does that very well.
Here is a screen shot of a sample run:
If you don't like command line, you will prefer
Jim DeVona's Isecalc
- Both input files are read and parsed. Quads are split
into 2 triangles. Quads with bad winding ("bow-tie")
will not be properly processed. All triangle vertexes are
stored in arrays.
- All triangles of one set are tested for intersection
with all triangle of the second set. If an intersection
line is found, it is stored in an array. The triangle
intersection program originate in Tomas
Möller thesis. Very short lines (length < 1e-6
ldu) are ignored.
- The lines are then sorted according to their direction,
all lines with the same direction receive the same tag (angle
tolerance is about 0.5°).
- Lines with matching direction tags are scanned for identical
endpoints. In that case they are condensed in a single line
if distance of removed endpoint to line is lower than 0.005
- Output file is created.