Commit Graph

  • daba7bf90b Oops, 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
  • 2e4ec6dd04 Add 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
  • bb4b767e99 Tear 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
  • 6d7954e167 Fix 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
  • 7cf3a06274 A 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
  • ebca6130ec Early 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
  • 25ed4e1ef1 SPolyCurve (i.e., polynomial curve) vs. SPolygon got too confusing; let's call those Beziers instead. Jonathan Westhues 2009-01-18 19:51:00 -0800
  • 0e623c90c0 Generate 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
  • 7a874c20c0 Remove 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
  • f904c0fbee Entities 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
  • b8da4ed2b3 Split 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
  • ef11978d2c Add 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
  • 995e9397a8 Tolerate 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
  • 984956cbc7 Add 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
  • f9eedb4db7 Oops, Windows timers are periodic. So after displaying a tooltip, we repainted once every second thereafter... Jonathan Westhues 2009-01-04 04:52:11 -0800
  • 37795d24ba Don'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
  • 8d656bc600 Add 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
  • 441b2a36e9 Add toolbar buttons for a few more things. Jonathan Westhues 2009-01-03 05:30:12 -0800
  • bf4de993cb Split 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
  • 0a56a63417 Add 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
  • 0f228fc0fb Add 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
  • 3ae0ca8c19 Add menu items to snap view to nearest orthogonal or iso view. Jonathan Westhues 2009-01-01 20:06:47 -0800
  • 92f4c71d78 Check in toolbar icons for SolveSpace, no toolbar yet implemented. Jonathan Westhues 2008-12-20 01:33:54 -0800
  • 23a4ce3697 Auto-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
  • 69cf8d6484 Change 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
  • 816a1ee8b4 Auto-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
  • 92f55dd195 Speed 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
  • 33654c7ce7 Fix 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
  • 51ca96b821 Hide 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
  • 25aa1826ee Change wording for not licensed message. Jonathan Westhues 2008-08-21 01:47:03 -0800
  • fb33edcade Comment out the error when I generate a leaky mesh. Jonathan Westhues 2008-08-15 00:37:32 -0800
  • fe77e7cf7e Don'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
  • 4bfa48fd9f Change default chord tolerance to 1, not 2. Jonathan Westhues 2008-08-14 21:08:02 -0800
  • 285f990ad6 Make 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
  • 962cb1af4a Add 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
  • 32372aee7a Update reference manual for SolveSpace. Jonathan Westhues 2008-08-11 03:57:46 -0800
  • 96f5663d6e Add 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
  • 2a420e8400 Infer 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
  • 9119393108 Add some descriptions of the tutorials to SolveSpace's reference manual. Jonathan Westhues 2008-02-24 02:36:32 -0800
  • bd0e97bad0 Now 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
  • 1c66dca5ba Assemble 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
  • dae5cdf9b8 Change name to SolveSpace everywhere. Jonathan Westhues 2008-02-13 08:13:08 -0800
  • c42033d123 Add 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
  • ea7ffd4b2a Scroll the textwindow when the mousewheel moves. Jonathan Westhues 2008-02-10 06:06:54 -0800
  • ddf2b30b98 Remove 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
  • 22b78e4427 Assemble 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
  • 0c10efdab6 Add 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
  • 5a2803617b Previous 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
  • a58680201f Oops, 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
  • 04141aa59d Go 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
  • 7b7d2f92e9 Add 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
  • 115dbce61b Oops, wasn't closing the PNG file after exporting to it. Jonathan Westhues 2008-07-20 17:34:09 -0800
  • 304c8f8be9 Add 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
  • 8fe910da4d Add 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
  • d2c4d2cdb7 Swap 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
  • a783f14eff Add 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
  • 222007f3d8 Oops, 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
  • 98b0f65cea But still draw the edges when the faces are coplanar, if the faces are different colors. Jonathan Westhues 2008-07-15 23:08:39 -0800
  • 3765175ec3 Don't emphasize edges between coincident plane faces, and check in beginnings of reference manual. Jonathan Westhues 2008-07-15 21:45:11 -0800
  • bc2a9c11b3 Better error messages when creating groups, too. Jonathan Westhues 2008-07-13 21:20:55 -0800
  • 90133b6b5d Add 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
  • 4afc881bf2 Add 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
  • f70bbb3e7f This 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
  • 88fc69116f Add 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
  • 36870360cb Little 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
  • 6269d702fb Report the number of degrees of freedom for each group. Jonathan Westhues 2008-07-09 23:42:35 -0800
  • cdeeb67d83 Oops, 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
  • 44795175ee A suggestion when we fail to converge or go singular. Jonathan Westhues 2008-07-09 23:17:35 -0800
  • 7cf0deb9f4 Reassign 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
  • 49b6e9a74d Remove the back button from the text window, since I never used it. Jonathan Westhues 2008-07-09 22:11:56 -0800
  • 7622534b2a Make 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
  • 6852b4134f Request 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
  • dd23aa11a2 Make 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
  • 4c42f329cd Show the open filename in the title bar of the graphics window. Jonathan Westhues 2008-07-08 00:02:22 -0800
  • 9136d86bff Split 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
  • 72d188619d Add 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
  • b2f2f90a27 Add 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
  • b4a9ac993c Add export of the mesh as an STL file. That's trivial. Jonathan Westhues 2008-07-06 01:24:31 -0800
  • cad77c9c47 Add 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
  • d4d5ab578d Add 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
  • fd4abd5519 Add 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
  • 1bc68779d9 Test 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
  • 48c5018613 Add 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
  • 8a70efed05 Make sliver triangle tests work on the minimum altitude, not on area. Jonathan Westhues 2008-07-01 20:32:24 -0800
  • b77cb053e2 Move `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
  • 273339d5c4 Add 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
  • a31782e1ea If 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
  • a47a77c37c Back to opengl's tesselator for triangulation. I'll spend more time writing mine later. Jonathan Westhues 2008-06-25 23:28:29 -0800
  • 9b008ad1cd Check 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
  • 12942a74cf Add 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
  • 2ff309590e Oops, was calling glBegin() once for each triangle when showing mesh! Jonathan Westhues 2008-06-23 00:48:19 -0800
  • bc5b43de85 Split 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
  • 6eaca10e2f Clarify description of helix in text window. Jonathan Westhues 2008-06-23 00:27:11 -0800
  • 3ddd1703b1 Add 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
  • fe75efc6aa Make 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
  • a5189f7f1a Make 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
  • 5a22982e05 Add 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
  • eb0b63f5dd Beginnings of some docs for SolveSpace. Jonathan Westhues 2008-06-20 19:36:29 -0800
  • 89bb81b35c Force 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
  • ae566f0380 Link 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