Fornjot

early-stage b-rep CAD kernel, written in Rust

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.

Ecosystem improvements

Improvements to the Fornjot ecosystem that are relevant to developers who are building on top of Fornjot components.

fj-kernel

fj-math

fj-viewer

Internal Improvements

Improvements that are relevant to developers working on Fornjot itself.

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).