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.
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.
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!)
Improvements to the Fornjot ecosystem that are relevant to developers who are building on top of Fornjot components.
- Replace curve types with new types in
- 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)
Circle(#557, #563, #577)
Improvements that are relevant to developers working on Fornjot itself.
- Update dependencies (#548, #549, #550, #551, #552)
- 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?
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).