Brandon Martin-Anderson - May 2012
This tool has several principal components: script-based CAD, web-based CAD, boolean functional representations, and marching triangles approximation.
Tinkercad - https://tinkercad.com/home/
3dtin - http://www.3dtin.com/
F-rep editor - http://fab.cba.mit.edu/classes/S62.12/people/keeter.matt/gui/index.html
I learned how to warp coordinate spaces; how to find the circumcenter of a triangle using barycentric coordinates; a whole lot of vector math, including how to rotate one vector around another; how to display and rotate 3d models using webgl; how to find the surface and normal of an f-rep-defined implicit surface.
F-RAD could potentially enable a great deal of collaboration on three-dimensional design. First, it is an exceptionally expressive and extensible solid design tool. Through a combination of mathematical primitives, coordinate transformations, and scripting nearly every shape is expressible. Second, since the canonical form of a F-RAD object is a textual document, distributed design projects can use text-native content versioning systems (eg git, mercurial) to manage project development. Lastly, since F-RAD runs completely in-browser without any server-side components, F-RAD scales nearly infinitely and presents very little barrier to entry for a new user.
There are a number of meshing bugs and improvements that are needful before wide deployment. Subdivision in places with higher detail and decimation in places with low detail, for example. The next step after that is an STL export feature. Eventually I’d like to start an open source project to completely specify a 3d printer design using F-RAD. Open source projects are able to produce high quality artifacts without central coordination by hill-climbing up the design space by accepting or rejecting a large number of diffs according to an objective function. If the objective function is well-defined, can be applied to project diffs easily, and the project receives a large number of diffs, the project tends to rise in quality fairly fast. A 3d printer project using F-RAD could potentially satisfy all those requirements - the objective function is well-defined, F-RAD could enable a large number of contributions, and the 3d-printer itself would enable easy testing of diffs by allowing the printing of the contributions. What’s especially exciting about this project in particular, is that as the project improves the rate at which diffs can be evaluated will increase, increasing the rate of improvement of the project.
Code for F-REP is in the class repository, and at http://fab.cba.mit.edu/classes/S62.12/people/martinanderson.brandon/solver3.html.
Draw lines - solver.html
Evaluate and triangulate 2d shapes - solver2.html
Fit polynomials to points - curvefit.html