Welcome to the Onshape forum! Ask questions and join in the discussions about everything Onshape.
First time visiting? Here are some places to start:- Looking for a certain topic? Check out the categories filter or use Search (upper right).
- Need support? Ask a question to our Community Support category.
- Please submit support tickets for bugs but you can request improvements in the Product Feedback category.
- Be respectful, on topic and if you see a problem, Flag it.
If you would like to contact our Community Manager personally, feel free to send a private message or an email.
What is the definition of a Bridging Curve or 3D Fit Spline shape?
SledDriver
Member Posts: 117 ✭✭✭
I have just done a test to try and align a Bridging curve over a semi circle, and at no time is the bridging curve semicircular. It is always different. It seems these differences will detract from the ability to make consistent curves, edges and surfaces etc with predictable outcome.
The bridging curve with a Magnitude of 2 and a bias of 0.5 seems to coincide with a semicircle at the end points and at the mid point, but nowhere else. This tends to suggest that at any given magnitude, the resultant bridging curve is perhaps a bit 'distorted' and not a true optimum flowing curve.
Same question for 3D Fit Splines which provide a slightly different 'distortion'.
An example of each can be seen in this document.
https://cad.onshape.com/documents/0b24f32e9923800c91d90e07/w/fb091d4b161c36808427e183/e/c5293b40e6865c6593c6d014
The bridging curve with a Magnitude of 2 and a bias of 0.5 seems to coincide with a semicircle at the end points and at the mid point, but nowhere else. This tends to suggest that at any given magnitude, the resultant bridging curve is perhaps a bit 'distorted' and not a true optimum flowing curve.
Same question for 3D Fit Splines which provide a slightly different 'distortion'.
An example of each can be seen in this document.
https://cad.onshape.com/documents/0b24f32e9923800c91d90e07/w/fb091d4b161c36808427e183/e/c5293b40e6865c6593c6d014
Tagged:
0
Best Answer
-
paul_chastell Onshape Employees Posts: 126The intent of the bridging curve is to provide a simple, well behaved curve, between two points, with optional tangency. Specifically the tangent-tangent bridging curve is a cubic B-spline with four control points. As such its curvature will transition nicely along the curve and there will be no kinks or other nastiness that will show up when it is used in surfaces. One of the goals of the bridging curve was that it would behave well as the input data changes, given that Onshape is a parametric history-based system, and that the curve would have no bells or whistles, just two ends and a shape.
The b-spline's two end control points are at the ends. The other two, to provide tangency, must be on the line tangent to the end of the curve, or to be more exact the direction of the end of the curve is parallel to the line between the outer and inner control point. So then the only variables left to control the shape of the curve are the distance of those control points from the ends.
This led to a design decision. Do we let the user specify the distance of the control point in length units (or, if you like, the speed of the curve at the ends)? If we take your semi-circle example and first make the curve match as close as we can, and then make the semicircle twice as big, the resulting bridging curve would not maintain the same shape if the end distances are absolute. As the source points move further apart the curve becomes flatter, close together and it becomes sharper or even fails. Additionally how those distances relate to the curve isn't trivial to understand and in the end most users wouldn't specify the distance based on calculations, they would likely just try different numbers until something looks good. Yes, a user could scale the end vectors by the same amount you scaled the distance between the ends but that is what Onshape is doing for you through the magnitude parameter. And if the angle between the start and end directions changes it gets even more interesting.
By specifying a magnitude and bias we have controls that specify the shape of the curve, the user still tweaks the numbers until something looks good but the behavior after up-stream changes will be better. Effectively we are specifying the speed at the ends relative to the overall size of the curve. So while I'm not sure what you mean by 'pure' I do know that our bridging curves are very simple and well-behaved and will work well with downstream surfacing and I'm confident they will update well to changes earlier in the history.
A similar approach was taken with 3d fit spline, even though we originally thought that a distance-based magnitude was what we wanted at the ends, so it ended up being closer to bridging curve in that respect.
If you want more information on what magnitude/bias mean and what to get more technical then the code that turns those and the geometry inputs into b-spline control points and then a b-curve is publicly visible in the FeatureScript library.
Bridging curve: https://cad.onshape.com/documents/12312312345abcabcabcdeff/w/a855e4161c814f2e9ab3698a/e/03857d67401e3f3d767eaa44
Fit spline: https://cad.onshape.com/documents/12312312345abcabcabcdeff/w/a855e4161c814f2e9ab3698a/e/6e8d96a622de0a7cfb5ddac1
Paul Chastell
TVP, Onshape R&D6
Answers
3D fit spline fits a 3D spline through a series of points. Think of it as a smoother version of connect-the-dots.
I'm also struggling with the fact that we have these controls such as Magnitude which are totally undefined to the user. Just a number. In engineering, it would seem that we need more understanding of what these numbers mean.
The b-spline's two end control points are at the ends. The other two, to provide tangency, must be on the line tangent to the end of the curve, or to be more exact the direction of the end of the curve is parallel to the line between the outer and inner control point. So then the only variables left to control the shape of the curve are the distance of those control points from the ends.
This led to a design decision. Do we let the user specify the distance of the control point in length units (or, if you like, the speed of the curve at the ends)? If we take your semi-circle example and first make the curve match as close as we can, and then make the semicircle twice as big, the resulting bridging curve would not maintain the same shape if the end distances are absolute. As the source points move further apart the curve becomes flatter, close together and it becomes sharper or even fails. Additionally how those distances relate to the curve isn't trivial to understand and in the end most users wouldn't specify the distance based on calculations, they would likely just try different numbers until something looks good. Yes, a user could scale the end vectors by the same amount you scaled the distance between the ends but that is what Onshape is doing for you through the magnitude parameter. And if the angle between the start and end directions changes it gets even more interesting.
By specifying a magnitude and bias we have controls that specify the shape of the curve, the user still tweaks the numbers until something looks good but the behavior after up-stream changes will be better. Effectively we are specifying the speed at the ends relative to the overall size of the curve. So while I'm not sure what you mean by 'pure' I do know that our bridging curves are very simple and well-behaved and will work well with downstream surfacing and I'm confident they will update well to changes earlier in the history.
A similar approach was taken with 3d fit spline, even though we originally thought that a distance-based magnitude was what we wanted at the ends, so it ended up being closer to bridging curve in that respect.
If you want more information on what magnitude/bias mean and what to get more technical then the code that turns those and the geometry inputs into b-spline control points and then a b-curve is publicly visible in the FeatureScript library.
Bridging curve: https://cad.onshape.com/documents/12312312345abcabcabcdeff/w/a855e4161c814f2e9ab3698a/e/03857d67401e3f3d767eaa44
Fit spline: https://cad.onshape.com/documents/12312312345abcabcabcdeff/w/a855e4161c814f2e9ab3698a/e/6e8d96a622de0a7cfb5ddac1
TVP, Onshape R&D
Cheers.