daba7bf90bOops, wasn't setting line width for the tool tips on the toolbar; and with the naked edge stuff I just added, that was wrong.
Jonathan Westhues
2009-01-25 03:25:40 -0800
2e4ec6dd04Add sin and cos to the expression entry (for dimensions etc.), with the same precedence as sqrt. Add the code to find naked edges, and draw them highlighted on the model. And make the direction of trim curves consistent, always ccw with normal toward viewer; so there's no need to fix the directions before triangulating.
Jonathan Westhues
2009-01-25 01:19:59 -0800
bb4b767e99Tear everything apart, moving away from meshes and toward shells. Add stubs for functions to perform Booleans, and get rid of mesh stuff, including the kd tree accelerated snap to vertex (which should not be required if the shell triangulation performs as it should).
Jonathan Westhues
2009-01-22 19:30:30 -0800
6d7954e167Fix an issue with edge intersection testing: if a vertex from edge A touches edge B, but does not share a vertex with edge B, then that's an intersection.
Jonathan Westhues
2009-01-22 02:02:46 -0800
7cf3a06274A very rough set of routines to triangulate by ear clipping. This is O(n^2), not perfectly robust, and the bridge-finding code is particularly bad. But it works, triangulates, and shouldn't ever generate zero-area triangles like gl does.
Jonathan Westhues
2009-01-20 21:04:38 -0800
ebca6130ecEarly attempts at rational polynomial surfaces. I can create one from an extrusion, with piecewise linear trim curves for everything (that are shared, so that they appear only once for the two surfaces that each trims). No Boolean operations on them, and the triangulation is bad, because gl seems to merge collinear edges.
Jonathan Westhues
2009-01-19 02:37:10 -0800
25ed4e1ef1SPolyCurve (i.e., polynomial curve) vs. SPolygon got too confusing; let's call those Beziers instead.
Jonathan Westhues
2009-01-18 19:51:00 -0800
0e623c90c0Generate the group's polygon from the exact curves, not from edges; so now we've got the exact curve loops, with their direction standardized so that we can tell which direction is out. We still need the polygon in any case, since that's a convenient way to find each curve's winding number.
Jonathan Westhues
2009-01-18 19:33:15 -0800
7a874c20c0Remove old sweep/helical sweep code for meshes, and add some untested stuff to start making exact surface shells.
Jonathan Westhues
2009-01-16 21:28:49 -0800
f904c0fbeeEntities now generate rational polynomial curves instead of piecwise linear segments. These are piecewise linear approximated for display, and currently for the mesh too, but that's the first step to replace the mesh with exact curved surfaces.
Jonathan Westhues
2009-01-14 19:55:42 -0800
b8da4ed2b3Split export DXF command into export section and export view, and add framework for additional vector output formats (ps, pdf).
Jonathan Westhues
2009-01-13 21:10:42 -0800
ef11978d2cAdd menu item to center view at a point; and move non-ID list data structure from polygon.h into dsc.h, since it is used outside the polygon/mesh code.
Jonathan Westhues
2009-01-12 22:56:05 -0800
995e9397a8Tolerate files with \r characters in them; we would never write such a file, but mailers might mangle them.
Jonathan Westhues
2009-01-10 00:18:54 -0800
984956cbc7Add a constraint to make line length equal arc length. That's quite tricky; can't just use the dot product, since that blows up when you cross pi radians. A gear shift approach, use either sin or cos, same kind of thing as the 3d-parallel constraint.
Jonathan Westhues
2009-01-08 09:22:59 -0800
f9eedb4db7Oops, Windows timers are periodic. So after displaying a tooltip, we repainted once every second thereafter...
Jonathan Westhues
2009-01-04 04:52:11 -0800
37795d24baDon't let the user create workplanes locked in another workplane; that is almost surely a mistake.
Jonathan Westhues
2009-01-04 04:39:55 -0800
8d656bc600Add feature to find the degrees of freedom; strike the corresponding to each param from the Jacobian, and see if it loses rank. If it does then that one was important, so it's bound. Then display a big blue square around its point until the next normal solve.
Jonathan Westhues
2009-01-04 04:01:46 -0800
441b2a36e9Add toolbar buttons for a few more things.
Jonathan Westhues
2009-01-03 05:30:12 -0800
bf4de993cbSplit constraint.cpp into two files: one for building the constraint structures based on user input, and one for generating equations from the constraints.
Jonathan Westhues
2009-01-03 04:31:19 -0800
0a56a63417Add a trim command. I can now do circles (or arcs) against lines, or lines against lines. The constraints get rather screwed up afterwards, of course.
Jonathan Westhues
2009-01-03 04:27:33 -0800
0f228fc0fbAdd a toolbar. This requires a tool to convert my PNG icons to tables in the code, which I have written in perl and am checking in.
Jonathan Westhues
2009-01-02 02:38:36 -0800
3ae0ca8c19Add menu items to snap view to nearest orthogonal or iso view.
Jonathan Westhues
2009-01-01 20:06:47 -0800
92f4c71d78Check in toolbar icons for SolveSpace, no toolbar yet implemented.
Jonathan Westhues
2008-12-20 01:33:54 -0800
23a4ce3697Auto-show the text window when stepping a dimension, in addition to auto-showing when a solve fails. And accept expressions, not just numbers, for that new dimension value.
Jonathan Westhues
2008-09-17 02:13:37 -0800
69cf8d6484Change fudging when I select edges to generate a section from the shell. That seems less prone generating stray lines, though it does sometimes generate gaps.
Jonathan Westhues
2008-09-08 21:19:54 -0800
816a1ee8b4Auto-remove point-on-line constraints when at-midpoint constraints are added. There was already precedent for that, since I auto-remove horiz/vert constraints when symmetry constraints are added.
Jonathan Westhues
2008-09-06 13:36:31 -0800
92f55dd195Speed up the inconsistent constraint detection; there's no reason not to solve by substitution before rank testing. And report the unsatisfied constraints when we don't converge.
Jonathan Westhues
2008-09-05 03:25:53 -0800
33654c7ce7Fix the mystery bug where the display disappears. That would happen when I get a mouse moved event with the middle button down before I got a middle button down event; orig.proj{Right,Up} were invalid.
Jonathan Westhues
2008-08-23 17:32:25 -0800
51ca96b821Hide the sweep and helical sweep for now. Exact surfaces feel more and more necessary, and that complicates those.
Jonathan Westhues
2008-08-21 20:24:51 -0800
25aa1826eeChange wording for not licensed message.
Jonathan Westhues
2008-08-21 01:47:03 -0800
fb33edcadeComment out the error when I generate a leaky mesh.
Jonathan Westhues
2008-08-15 00:37:32 -0800
fe77e7cf7eDon't enable GL_POLYGON_SMOOTH. That looks awful on my other laptop, for some graphics card reason.
Jonathan Westhues
2008-08-14 23:37:19 -0800
4bfa48fd9fChange default chord tolerance to 1, not 2.
Jonathan Westhues
2008-08-14 21:08:02 -0800
285f990ad6Make the mousewheel work in whichever window the mouser is over, and not whichever is the foreground window.
Jonathan Westhues
2008-08-14 20:55:03 -0800
962cb1af4aAdd cutter radius compensation. That's a bolt on thing at the end; just applies an offset to the DXF before exporting. Useful enough to be worth the ugliness, though.
Jonathan Westhues
2008-08-14 00:28:25 -0800
32372aee7aUpdate reference manual for SolveSpace.
Jonathan Westhues
2008-08-11 03:57:46 -0800
96f5663d6eAdd a configuration option to hide the back faces; that gets rid of stray red pixels sometimes, if the mesh is leaky or the graphics card isn't perfect.
Jonathan Westhues
2008-08-11 02:56:08 -0800
2a420e8400Infer the correct supplementary angle from the sketch. Equal angle applies to whichever is closer to original position, and angle constraint, if the two vectors are lines that share an endpoint, applies to vectors out from that shared point.
Jonathan Westhues
2008-02-26 04:48:31 -0800
9119393108Add some descriptions of the tutorials to SolveSpace's reference manual.
Jonathan Westhues
2008-02-24 02:36:32 -0800
bd0e97bad0Now I can suppress an imported part; so the entities still show up, but the mesh doesn't get combined. That effectively hides it, good for looking inside and such.
Jonathan Westhues
2008-02-15 03:35:15 -0800
1c66dca5baAssemble polygons from imported groups too; so that lets you draw a section, import it, and extrude it.
Jonathan Westhues
2008-02-13 08:15:33 -0800
dae5cdf9b8Change name to SolveSpace everywhere.
Jonathan Westhues
2008-02-13 08:13:08 -0800
c42033d123Add a configuration item to specify the maximum number of piecewise linear segments to generate, irrespective of the chord tolerance. That used to be hard-coded, and it needs to be small enough to avoid lags while working interactively, but I also need to export fine geometry.
Jonathan Westhues
2008-02-12 05:00:26 -0800
ea7ffd4b2aScroll the textwindow when the mousewheel moves.
Jonathan Westhues
2008-02-10 06:06:54 -0800
ddf2b30b98Remove some of the oops() calls that tend to blow because of issues in the numerical code.
Jonathan Westhues
2008-02-10 05:34:32 -0800
22b78e4427Assemble the group polygon ourselves when exporting a DXF; that lets us export open curves, if the user drew them that way.
Jonathan Westhues
2008-02-10 04:43:48 -0800
0c10efdab6Add a simple license key: I take the CRC of the license info, plus some magic numbers. This would be trivial to break, but still more difficult than patching the binary to skip the check...
Jonathan Westhues
2008-02-09 05:52:01 -0800
5a2803617bPrevious speedup for regenerating vertex-to-vertex mesh was broken; it did nothing when GenerateAll got called with an explicit range (vs. with no args, to run on the dirty groups), so the emphasized edges ended up out of date. I think this is better.
Jonathan Westhues
2008-02-07 09:44:27 -0800
a58680201fOops, didn't clear the hover when auto-deleting horiz/vert constraints when adding symmetric constraints. So that could blow up and trigger an oops.
Jonathan Westhues
2008-02-07 09:17:09 -0800
04141aa59dGo back to randomizing the faces before adding to the BSP, rather than sorting by area. I had hoped that would help with normal accuracy, but I don't think it helped much, and it sometimes became very slow.
Jonathan Westhues
2008-02-07 01:57:59 -0800
7b7d2f92e9Add code to evaluate the volume of a mesh, thanks to the divergence theorem; it's evaluated as a surface integral over each triangle.
Jonathan Westhues
2008-02-07 01:53:52 -0800
115dbce61bOops, wasn't closing the PNG file after exporting to it.
Jonathan Westhues
2008-07-20 17:34:09 -0800
304c8f8be9Add equal-angle constraints. These are implemented by brute force, as the difference between the cosines of the two angles. All of the angle stuff generates huge expressions (Expr *), but doesn't seem noticeably slow.
Jonathan Westhues
2008-07-20 04:24:43 -0800
8fe910da4dAdd feature to trace a point; so I can show the path that a linkage traces out, and export the coordinates.
Jonathan Westhues
2008-07-20 03:27:22 -0800
d2c4d2cdb7Swap meaning of middle and right mouse buttons (now center means drag, right means pan), and extend reference manual.
Jonathan Westhues
2008-07-18 05:31:22 -0800
a783f14effAdd an icon file (ugly, but at least it's not the default anymore). And add the manifest that gets us visual styles on the controls under Win32.
Jonathan Westhues
2008-07-18 01:50:52 -0800
222007f3d8Oops, make path relative routine was broken when the filenames shared a prefix (/path/abc.slvs, /path/abcdef.slvs).
Jonathan Westhues
2008-07-16 21:29:10 -0800
98b0f65ceaBut still draw the edges when the faces are coplanar, if the faces are different colors.
Jonathan Westhues
2008-07-15 23:08:39 -0800
3765175ec3Don't emphasize edges between coincident plane faces, and check in beginnings of reference manual.
Jonathan Westhues
2008-07-15 21:45:11 -0800
bc2a9c11b3Better error messages when creating groups, too.
Jonathan Westhues
2008-07-13 21:20:55 -0800
90133b6b5dAdd better error messages when creating constraints, and add a link when creating requests to cancel operation (works same as Esc).
Jonathan Westhues
2008-07-13 20:29:43 -0800
4afc881bf2Add a command to create an arc that's tangent to two line segments. This was possible before (by drawing everything explicitly), but now it's easy.
Jonathan Westhues
2008-07-13 18:45:11 -0800
f70bbb3e7fThis BSP split and simplify thing is stupid, but a hard-coded limit on the number of pieces that we know how to reassemble is even stupider. Now dynamically allocated.
Jonathan Westhues
2008-07-13 04:58:52 -0800
88fc69116fAdd tangency constraints, for line segments against arcs or cubics. These are just a convenience, since it would be possible to get the same result by drawing a construction line.
Jonathan Westhues
2008-07-13 04:44:05 -0800
36870360cbLittle stuff: show polygon assembly errors only for draw-in-plane groups, rename "drawing" groups to "sketch" groups, and keep assembling even after finding an open curve.
Jonathan Westhues
2008-07-13 01:57:46 -0800
6269d702fbReport the number of degrees of freedom for each group.
Jonathan Westhues
2008-07-09 23:42:35 -0800
cdeeb67d83Oops, the ASCII codes for some characters I was using overlapped with the VK codes for some keys that I wasn't. Ugly, but work around that.
Jonathan Westhues
2008-07-09 23:26:41 -0800
44795175eeA suggestion when we fail to converge or go singular.
Jonathan Westhues
2008-07-09 23:17:35 -0800
7cf0deb9f4Reassign the keyboard shortcuts so that the constraints don't all start with Shift, since that's hard to type.
Jonathan Westhues
2008-07-09 23:06:07 -0800
49b6e9a74dRemove the back button from the text window, since I never used it.
Jonathan Westhues
2008-07-09 22:11:56 -0800
7622534b2aMake the piecewise linear stuff for cubics and quadratics adaptive, based on a chord tolerance. And rewrite the pwl circles to work against a chord tolerance too (which they really were doing before, but in funny units).
Jonathan Westhues
2008-07-09 21:26:08 -0800
6852b4134fRequest a deeper z buffer and color depth. Doesn't seem like that could hurt, but still make offsets work as if it's a 16 bit buffer, since I don't seem to actually get 24 bits.
Jonathan Westhues
2008-07-08 22:41:42 -0800
dd23aa11a2Make rotations default to 360/n degrees (uniform about a circle) if no constraints set the rotation.
Jonathan Westhues
2008-07-08 22:13:49 -0800
4c42f329cdShow the open filename in the title bar of the graphics window.
Jonathan Westhues
2008-07-08 00:02:22 -0800
9136d86bffSplit solvespace.cpp; leave the file menu and general-purpose stuff where it was, move the export (DXF, PNG, STL) stuff to export.cpp, and move the regen/solve stuff to generate.cpp.
Jonathan Westhues
2008-07-07 23:45:47 -0800
72d188619dAdd a scale factor when exporting; the user specifies a number, and all coordinates are divided by that number as we export.
Jonathan Westhues
2008-07-07 23:41:29 -0800
b2f2f90a27Add DXF export. The complexity comes from all the different ways to specify the plane from which we want to grab the triangles. Shared edges are then removed with the same code used to check for watertight meshes, and the remaining edges are assembled into polygons.
Jonathan Westhues
2008-07-07 22:30:13 -0800
b4a9ac993cAdd export of the mesh as an STL file. That's trivial.
Jonathan Westhues
2008-07-06 01:24:31 -0800
cad77c9c47Add routines to remove T intersections from the mesh, which are introduced by the bsp routines. It's usually, though not always, possible to generate a watertight mesh. The occasions where it's not look ugly, floating point issues, no quick fix.
Jonathan Westhues
2008-07-05 23:56:24 -0800
d4d5ab578dAdd a special case when raising quaternions almost equal to (+/-1, 0, 0, 0) to some power; that was failing if the magnitude of w was slightly greater than 1, so that acos() returned NaN.
Jonathan Westhues
2008-07-02 01:52:32 -0800
fd4abd5519Add a perpendicular constraint; identical to constraining a ninety degree angle, but shows with a right angle symbol instead of a numerical angle you can edit.
Jonathan Westhues
2008-07-02 01:21:29 -0800
1bc68779d9Test the rank of the Jacobian by Gram-Schmidt, instead of by a questionable tolerance on the pivot while row reducing.
Jonathan Westhues
2008-07-02 00:18:25 -0800
48c5018613Add symmetric about line constraint. This applies only when locked in a workplane, since it would otherwise be ambiguous.
Jonathan Westhues
2008-07-01 22:59:49 -0800
8a70efed05Make sliver triangle tests work on the minimum altitude, not on area.
Jonathan Westhues
2008-07-01 20:32:24 -0800
b77cb053e2Move `Solve Once Now' to the Edit menu, and call it `Regenerate'; and fix some other problems with the menu labels.
Jonathan Westhues
2008-06-30 01:34:03 -0800
273339d5c4Add TrueType font support to SolveSpace. This uses a modified version of the code from SketchFlat, with all arbitrary limits removed.
Jonathan Westhues
2008-06-30 01:09:17 -0800
a31782e1eaIf any equations are soluble in a single variable, then handle them separately, even before doing the rank test. In some cases, that's a huge speedup.
Jonathan Westhues
2008-06-26 01:34:26 -0800
a47a77c37cBack to opengl's tesselator for triangulation. I'll spend more time writing mine later.
Jonathan Westhues
2008-06-25 23:28:29 -0800
9b008ad1cdCheck in a broken triangulation code (by stupid ear clipping), which I will shortly revert. gl does a much better job, and I'll have to spend more time to get something reasonable.
Jonathan Westhues
2008-06-25 23:25:42 -0800
12942a74cfAdd logic to remember imported files' relative filenames, and use that to try to find them if we can't find them by absolute path. This is intended to make everything still work if you copy an entire directory tree of files that import each other.
Jonathan Westhues
2008-06-24 21:14:49 -0800
2ff309590eOops, was calling glBegin() once for each triangle when showing mesh!
Jonathan Westhues
2008-06-23 00:48:19 -0800
bc5b43de85Split the BSP stuff off the mesh stuff, and the text screens themselves of the text window utility functions.
Jonathan Westhues
2008-06-23 00:37:12 -0800
6eaca10e2fClarify description of helix in text window.
Jonathan Westhues
2008-06-23 00:27:11 -0800
3ddd1703b1Add helical sweeps. These aren't as parametric as I would have liked, but my more parametric attempts were very difficult to use. The pitch (both axial and radial) gets specified by typing a distance in a textbox.
Jonathan Westhues
2008-06-23 00:25:17 -0800
fe75efc6aaMake the point-on-circle constraints work on the infinite cylinder, not the sphere; that's more logical behaviour out of plane.
Jonathan Westhues
2008-06-21 23:32:50 -0800
a5189f7f1aMake step and repeats step the mesh, as well as the entities. This requires new entitiy types for the faces, by translation or by axis-angle rotation.
Jonathan Westhues
2008-06-21 14:49:57 -0800
5a22982e05Add sweeps. The user specifies a trajectory and a section, in two separate groups. The section is swept normal to the trajectory, producing a mesh. I'm doing the triangles only now, not copying over any entities.
Jonathan Westhues
2008-06-21 02:18:20 -0800
eb0b63f5ddBeginnings of some docs for SolveSpace.
Jonathan Westhues
2008-06-20 19:36:29 -0800
89bb81b35cForce the numerical guess for a normal to be exactly correct when a same orientation constraint is applied; this makes convergence easy. And don't hover faces or constraints while dragging something.
Jonathan Westhues
2008-06-18 01:18:51 -0800
ae566f0380Link against libpng and zlib, and use that to export graphics; basically just a screenshot, get the image from the framebuffer.
Jonathan Westhues
2008-06-18 00:35:14 -0800