Version 3.3.1 - 09.03.2023
- Added hip, valley and flying hip rafters to the complex roof framing module.
The first thing you will notice is that the upper ends of the hip and valley rafters are not correctly trimmed, only the bottom ends. Also flying hips are not trimmed on their upper or lower ends. The trimming algorithm for these rafters is the next thing on my todo list.
Unlike the lower end trimming, the upper end will require a much more sophisticated algorithm so it may take some time. The problem really is that there a number of possibilities for termination and the plugin needs to be be able to check for all of those possibilities. No one said complex roof are easy.
Nothing is easy with complex roofs, the math is hard, the code is hard and the topology/trigonometry can be very challenging. Fortunately I do like these sorts of hard problems but even I have to take a small break once in a while to let my head rest and regroup.
Last night I was trying to figure out how to handle the asymmetric offset (lateral and vertical) for hip and valley rafters when the adjacent roof planes are different pitches. The problem was that I did not have a good way to determine which of the two pitches was to the left or right of the rafter. I was only able to solve the problem after calling it a night and then the solution (cross product of the flattened normal vectors of the roof planes) came to me while watching another episode of "How's it Made" on the Discovery channel. Sometimes I think my best programming actually happens when I'm not actually programming
- Added hip, valley and flying hip rafters to the complex roof framing module.
The first thing you will notice is that the upper ends of the hip and valley rafters are not correctly trimmed, only the bottom ends. Also flying hips are not trimmed on their upper or lower ends. The trimming algorithm for these rafters is the next thing on my todo list.
Unlike the lower end trimming, the upper end will require a much more sophisticated algorithm so it may take some time. The problem really is that there a number of possibilities for termination and the plugin needs to be be able to check for all of those possibilities. No one said complex roof are easy.
Nothing is easy with complex roofs, the math is hard, the code is hard and the topology/trigonometry can be very challenging. Fortunately I do like these sorts of hard problems but even I have to take a small break once in a while to let my head rest and regroup.
Last night I was trying to figure out how to handle the asymmetric offset (lateral and vertical) for hip and valley rafters when the adjacent roof planes are different pitches. The problem was that I did not have a good way to determine which of the two pitches was to the left or right of the rafter. I was only able to solve the problem after calling it a night and then the solution (cross product of the flattened normal vectors of the roof planes) came to me while watching another episode of "How's it Made" on the Discovery channel. Sometimes I think my best programming actually happens when I'm not actually programming