Weekly Dev Log - 2022-W19
I continued working on the union operation last week (#42). I implemented some building blocks for the algorithm, then hit complications (of course 😁), which prompted me to divert my attention to another cleanup effort (#568).
The short version is, up until recently, the Fornjot kernel dealt mostly with 3D coordinates. This kept things simple, but there are cases where it makes more sense to work in other coordinates systems (i.e. 2D surface coordinates and 1D curve coordinates). The simplistic "3D-mostly" approach causes problems in various areas (see #250, for an example), and now boolean operations have been added to that list.
It's unfortunate that there's another detour, but it is what it is. As always, I'd rather do things right, than build on top of an insufficient foundation.
Sponsors
Fornjot is supported by @webtrax-oz, @lthiery, @Yatekii, @martindederer, @hobofan, @ahdinosaur, @thawkins, and my other awesome sponsors. Thank you!
If you're interested in helping to make the project sustainable long-term, please consider supporting me too.
End-user improvements
Improvements to Fornjot and its documentation that are visible to end-users.
- Fix mistakes in model READMEs (#555; special thanks to first-time contributor @chrisprice!)
Ecosystem improvements
Improvements to the Fornjot ecosystem that are relevant to developers who are building on top of Fornjot components.
fj-kernel
- Replace curve types with new types in
fj_math
(#558, #578) - Expand and clean up intersection code (#560, #562)
- Improve APIs for conversion between coordinate systems (#561, #564)
- Start using local coordinates where that makes sense (#574, #575, #579, #582)
- Make minor improvements to various APIs (#580, #581, #583)
fj-math
- Add
Vector::scalar_projection_onto
(#553) - Add
Line
andCircle
(#557, #563, #577) - Improve
Aabb
API (#559)
fj-viewer
Internal Improvements
Improvements that are relevant to developers working on Fornjot itself.
- Update dependencies (#548, #549, #550, #551, #552)
- Simplify
ToShape
implementation offj::Sketch
(#554) - Make some minor cleanups (#565, #576)
- Add local build script (#569; thanks to @chrisprice)
- Add Gnome Builder configuration to
.gitignore
(#570; thanks to @freylint!)
Issue of the Week
A while ago, Fornjot gained the ability to sweep a sketch along an arbitrary vector, not just long the z-axis, as before. The bounding volume calculation for the sweep operation wasn't updated correctly, when that change was made.
If you're interested in getting a taste of how CAD operations are implemented in Fornjot, why not take a look at #566 - Bounding volume of sweep operation is incorrect?
Outlook
I'm going to continue working on #568. I've made good progress already, but there are some aspects of the solution I haven't figured out yet. We'll see how it goes.
After taking care of that, I plan to go back to working on the union operation (#42).