Problems with the current solution: #53, #61.
The main difficulty in finding a good description of the profile curve is to balance the two different use-cases:
Modeling the limb of an existing bow
Designing a new bow and making changes
For use case (1), cartesian coordinates (x, y) are probably the best solution, because they can be measured easily (as compared to curvature, angles, etc).
However, cartesian coordinates aren't very well-suited for use case (2).
Here, the curvature of the profile curve is much more useful.
For example, when a user wants to increase a recurve it is much easier to just add some curvature at the respective section of the profile curve than to edit the cartesian coordinates of all the points making up the recurve.
So the ideal solution would be something more flexible that makes both (1) and (2) easy.
Idea 1: Constraint-based profile curve
Users can specify a list of curve points.
Every point can have an arc-length, curvature, angle, x-coordinate and a y-coordinate, but it is not necessary to specify all of those properties.
The ones which are specified however form a set of constraints for the profile curve.
Finding the actual profile curve is then done by numerical optimization, i.e. varying the curve until it minimizes some criterion (e.g. integral of the squared curvature) while also satisfying the constraints.
Idea 2: Superposition
Specify the profile curve as a superposition of two parts:
A cartesian description, i.e. a set of (x, y) coordinates and a curvature distribution that is applied to this curve.
Gets use case (1) by specifying a curvature of zero and use case (2) by specifying a straight line as the cartesian part.
In GitLab by spfeifer on Jul 26, 2018, 13:22
Problems with the current solution: #53, #61. The main difficulty in finding a good description of the profile curve is to balance the two different use-cases:
For use case (1), cartesian coordinates (x, y) are probably the best solution, because they can be measured easily (as compared to curvature, angles, etc). However, cartesian coordinates aren't very well-suited for use case (2). Here, the curvature of the profile curve is much more useful. For example, when a user wants to increase a recurve it is much easier to just add some curvature at the respective section of the profile curve than to edit the cartesian coordinates of all the points making up the recurve. So the ideal solution would be something more flexible that makes both (1) and (2) easy.
Idea 1: Constraint-based profile curve
Users can specify a list of curve points. Every point can have an arc-length, curvature, angle, x-coordinate and a y-coordinate, but it is not necessary to specify all of those properties. The ones which are specified however form a set of constraints for the profile curve. Finding the actual profile curve is then done by numerical optimization, i.e. varying the curve until it minimizes some criterion (e.g. integral of the squared curvature) while also satisfying the constraints.
Idea 2: Superposition
Specify the profile curve as a superposition of two parts: A cartesian description, i.e. a set of (x, y) coordinates and a curvature distribution that is applied to this curve. Gets use case (1) by specifying a curvature of zero and use case (2) by specifying a straight line as the cartesian part.