discuss@lists.openscad.org

OpenSCAD general discussion Mailing-list

View all threads

Modelling a flexible strip

MS
Mark Schafer
Fri, Dec 22, 2017 8:34 PM

I just wish we could add these lofting and sweeps to the base distro - with docs :)

On 12/21/2017 7:02 AM, Ronaldo Persiano wrote:

2017-12-19 20:19 GMT-02:00 nop head <nop.head@gmail.com>:

I used Frenet-Serret for the strip because it has two vertical sections that the minimum angle solution doesn't like. I used minimum angle for the cable because Frenet-Serret goes wild when the at the fold.

​Yes, the original Oskar Linde´s sweep may generate very wild twists in some vertical path ​segments. You may find useful a version I wrote based on Oskar Linde's suggestions that have never being included in his original code. It can be found in https://github.com/RonaldoCMP/list-comprehension-demos/blob/master/sweep.scad. It works fine and better than Frenet frames.

TP
Torsten Paul
Fri, Dec 22, 2017 9:21 PM

On 22.12.2017 21:34, Mark Schafer wrote:

I just wish we could add these lofting and sweeps to the base
distro - with docs :)

I'm sure pretty much everyone can agree on that.

I'd love to help with that, but my math knowledge is not nearly
good enough to do that. Are there any pointers to tutorials that
would help understand what's needed?

So far I only found basic 3d tutorials or scientific papers that
are not comprehensible to me. Somehow the path from basic stuff
to the more advanced topics has a huge gap with not much
explanation on how to get to the other side.

ciao,
Torsten.

On 22.12.2017 21:34, Mark Schafer wrote: > I just wish we could add these lofting and sweeps to the base > distro - with docs :) > I'm sure pretty much everyone can agree on that. I'd love to help with that, but my math knowledge is not nearly good enough to do that. Are there any pointers to tutorials that would help understand what's needed? So far I only found basic 3d tutorials or scientific papers that are not comprehensible to me. Somehow the path from basic stuff to the more advanced topics has a huge gap with not much explanation on how to get to the other side. ciao, Torsten.
NH
nop head
Fri, Dec 22, 2017 9:59 PM

Are we taking about sweeps and lofts or modelling a strip with minimum bend
energy?

I find the former easy enough to understand but the latter is the stuff of
scientific papers that go over my head. I was disappointed to find it
doesn't have a simple formula like a catenary does.

On 22 December 2017 at 21:21, Torsten Paul Torsten.Paul@gmx.de wrote:

On 22.12.2017 21:34, Mark Schafer wrote:

I just wish we could add these lofting and sweeps to the base
distro - with docs :)

I'm sure pretty much everyone can agree on that.

I'd love to help with that, but my math knowledge is not nearly
good enough to do that. Are there any pointers to tutorials that
would help understand what's needed?

So far I only found basic 3d tutorials or scientific papers that
are not comprehensible to me. Somehow the path from basic stuff
to the more advanced topics has a huge gap with not much
explanation on how to get to the other side.

ciao,
Torsten.


OpenSCAD mailing list
Discuss@lists.openscad.org
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org

Are we taking about sweeps and lofts or modelling a strip with minimum bend energy? I find the former easy enough to understand but the latter is the stuff of scientific papers that go over my head. I was disappointed to find it doesn't have a simple formula like a catenary does. On 22 December 2017 at 21:21, Torsten Paul <Torsten.Paul@gmx.de> wrote: > On 22.12.2017 21:34, Mark Schafer wrote: > > I just wish we could add these lofting and sweeps to the base > > distro - with docs :) > > > I'm sure pretty much everyone can agree on that. > > I'd love to help with that, but my math knowledge is not nearly > good enough to do that. Are there any pointers to tutorials that > would help understand what's needed? > > So far I only found basic 3d tutorials or scientific papers that > are not comprehensible to me. Somehow the path from basic stuff > to the more advanced topics has a huge gap with not much > explanation on how to get to the other side. > > ciao, > Torsten. > > _______________________________________________ > OpenSCAD mailing list > Discuss@lists.openscad.org > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org >
MS
Mark Schafer
Fri, Dec 22, 2017 10:03 PM

IMHO OpenSCAD is missing a line primitive which could enable a lot of this.
The line would be a set of edges pointing to vertices. much like polygon()
Then sweep, loft, objects of revolution, etc could use this "line" as input.

Likewise you could slice (projection()) an object to generate a line for
internal use. To close the circle as it were.

Line() could generate a solid object in much the same way polyhedron and
linear_extrude() do if used on its own.

On 12/23/2017 10:21 AM, Torsten Paul wrote:

On 22.12.2017 21:34, Mark Schafer wrote:

I just wish we could add these lofting and sweeps to the base
distro - with docs :)

I'm sure pretty much everyone can agree on that.

I'd love to help with that, but my math knowledge is not nearly
good enough to do that. Are there any pointers to tutorials that
would help understand what's needed?

So far I only found basic 3d tutorials or scientific papers that
are not comprehensible to me. Somehow the path from basic stuff
to the more advanced topics has a huge gap with not much
explanation on how to get to the other side.

ciao,
Torsten.


OpenSCAD mailing list
Discuss@lists.openscad.org
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org


This email has been checked for viruses by AVG.
http://www.avg.com

IMHO OpenSCAD is missing a line primitive which could enable a lot of this. The line would be a set of edges pointing to vertices. much like polygon() Then sweep, loft, objects of revolution, etc could use this "line" as input. Likewise you could slice (projection()) an object to generate a line for internal use. To close the circle as it were. Line() could generate a solid object in much the same way polyhedron and linear_extrude() do if used on its own. On 12/23/2017 10:21 AM, Torsten Paul wrote: > On 22.12.2017 21:34, Mark Schafer wrote: >> I just wish we could add these lofting and sweeps to the base >> distro - with docs :) >> > I'm sure pretty much everyone can agree on that. > > I'd love to help with that, but my math knowledge is not nearly > good enough to do that. Are there any pointers to tutorials that > would help understand what's needed? > > So far I only found basic 3d tutorials or scientific papers that > are not comprehensible to me. Somehow the path from basic stuff > to the more advanced topics has a huge gap with not much > explanation on how to get to the other side. > > ciao, > Torsten. > > _______________________________________________ > OpenSCAD mailing list > Discuss@lists.openscad.org > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org > > --- > This email has been checked for viruses by AVG. > http://www.avg.com > >
NH
nop head
Sat, Dec 23, 2017 12:44 PM

I don't know if this has a mathematical validity but simple keeping the two
inner control points level with each other seems to produce a curve that
matches a strip held against the screen fairly well.


The length of the strip is only 9mm longer compared to the version with the
control points equidistant below the end points.

On 22 December 2017 at 22:03, Mark Schafer mschafer@wireframe.biz wrote:

IMHO OpenSCAD is missing a line primitive which could enable a lot of this.
The line would be a set of edges pointing to vertices. much like polygon()
Then sweep, loft, objects of revolution, etc could use this "line" as
input.

Likewise you could slice (projection()) an object to generate a line for
internal use. To close the circle as it were.

Line() could generate a solid object in much the same way polyhedron and
linear_extrude() do if used on its own.

On 12/23/2017 10:21 AM, Torsten Paul wrote:

On 22.12.2017 21:34, Mark Schafer wrote:

I just wish we could add these lofting and sweeps to the base
distro - with docs :)

I'm sure pretty much everyone can agree on that.

I'd love to help with that, but my math knowledge is not nearly
good enough to do that. Are there any pointers to tutorials that
would help understand what's needed?

So far I only found basic 3d tutorials or scientific papers that
are not comprehensible to me. Somehow the path from basic stuff
to the more advanced topics has a huge gap with not much
explanation on how to get to the other side.

ciao,
Torsten.


OpenSCAD mailing list
Discuss@lists.openscad.org
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org


This email has been checked for viruses by AVG.
http://www.avg.com

I don't know if this has a mathematical validity but simple keeping the two inner control points level with each other seems to produce a curve that matches a strip held against the screen fairly well. ​ The length of the strip is only 9mm longer compared to the version with the control points equidistant below the end points. ​ On 22 December 2017 at 22:03, Mark Schafer <mschafer@wireframe.biz> wrote: > IMHO OpenSCAD is missing a line primitive which could enable a lot of this. > The line would be a set of edges pointing to vertices. much like polygon() > Then sweep, loft, objects of revolution, etc could use this "line" as > input. > > Likewise you could slice (projection()) an object to generate a line for > internal use. To close the circle as it were. > > Line() could generate a solid object in much the same way polyhedron and > linear_extrude() do if used on its own. > > > > On 12/23/2017 10:21 AM, Torsten Paul wrote: > >> On 22.12.2017 21:34, Mark Schafer wrote: >> >>> I just wish we could add these lofting and sweeps to the base >>> distro - with docs :) >>> >>> I'm sure pretty much everyone can agree on that. >> >> I'd love to help with that, but my math knowledge is not nearly >> good enough to do that. Are there any pointers to tutorials that >> would help understand what's needed? >> >> So far I only found basic 3d tutorials or scientific papers that >> are not comprehensible to me. Somehow the path from basic stuff >> to the more advanced topics has a huge gap with not much >> explanation on how to get to the other side. >> >> ciao, >> Torsten. >> >> _______________________________________________ >> OpenSCAD mailing list >> Discuss@lists.openscad.org >> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org >> >> --- >> This email has been checked for viruses by AVG. >> http://www.avg.com >> >> >> > > _______________________________________________ > OpenSCAD mailing list > Discuss@lists.openscad.org > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org >
P
Parkinbot
Sat, Dec 23, 2017 3:35 PM

@nophead,
I'm afraid you will need a proper differential equation system to describe
(and solve) your problem in a generic way. The solution will be reigned by
the viscoelastic stiffness (elasticty + damping) and also the weight of your
strip will play a non-negligible role.
Imagine the case that both ends stay at the same level. Without gravity,
your solution at least with distance of ends < dip of fixed-length strip @
vertical egress on both ends
will look like the projection of a light bulb,
as the minimum energy condition will try to minimize bending at each point.
Gravity tends to distort this solution with a catenary function defined as
tradeoff between elastic and gravitational forces. Furtheron a damping term
with introduce some hysteresis ... I severly doubt that this can have a
trival solution.

@Neon22
If I understand your line primitive well, it is easy to implement and could
be encapsulated into a lib. Visualization can be done on the basis of
sweep() with a polyline (i.e. list of 3D-points with min length 2) and a
radius argument. It will then extrude a circle (n-gon) along this line.
There are solutions for this in thingiverse. If I remember well also
Caterpillar published some code for this.
BUT: As self-intersection is possible, I severly doubt that sweep will ever
find its way into the language. It will stay a lib function. If you are
interested I can implement an adapter function for the sweep() that comes
with my Naca_sweep.scad library.

BTW I use a similar 'extension' to visualize faces defined by polygons
already placed in 3D space. While it also works to visualize noplanar
polygons, the trigonalization is a bit rough and does not show the minimal
surface, as one likely might expect.

use <Naca_sweep.scad>  // https://www.thingiverse.com/thing:900137

poly(T_(15,20, 10, Ry_(60, circle2D())));
poly(T_(10,10, 10, Ry_(-30, chip())));

function circle2D(r=10, N=100) = [for (i=[0:N]) let(w=360/Ni) r[sin(w),
cos(w), 0]];

function chip(r = 10, N = 100) =  // polygon for cross section
[for (i=[0:N]) let(w = 360/Ni) r[sin(w), cos(w), 0.1cos(3w)]];

module poly(p)
{
face = [for(i=[0:len(p)]) i];
p_ = len(p[0]) == 3?p:vec3D(p);
polyhedron(p_, [face]);
}

--
Sent from: http://forum.openscad.org/

@nophead, I'm afraid you will need a proper differential equation system to describe (and solve) your problem in a generic way. The solution will be reigned by the viscoelastic stiffness (elasticty + damping) and also the weight of your strip will play a non-negligible role. Imagine the case that both ends stay at the same level. Without gravity, your solution at least with *distance of ends < dip of fixed-length strip @ vertical egress on both ends* will look like the projection of a light bulb, as the minimum energy condition will try to minimize bending at each point. Gravity tends to distort this solution with a catenary function defined as tradeoff between elastic and gravitational forces. Furtheron a damping term with introduce some hysteresis ... I severly doubt that this can have a trival solution. @Neon22 If I understand your line primitive well, it is easy to implement and could be encapsulated into a lib. Visualization can be done on the basis of sweep() with a polyline (i.e. list of 3D-points with min length 2) and a radius argument. It will then extrude a circle (n-gon) along this line. There are solutions for this in thingiverse. If I remember well also Caterpillar published some code for this. BUT: As self-intersection is possible, I severly doubt that sweep will ever find its way into the language. It will stay a lib function. If you are interested I can implement an adapter function for the sweep() that comes with my Naca_sweep.scad library. BTW I use a similar 'extension' to visualize faces defined by polygons already placed in 3D space. While it also works to visualize noplanar polygons, the trigonalization is a bit rough and does not show the minimal surface, as one likely might expect. use <Naca_sweep.scad> // https://www.thingiverse.com/thing:900137 poly(T_(15,20, 10, Ry_(60, circle2D()))); poly(T_(10,10, 10, Ry_(-30, chip()))); function circle2D(r=10, N=100) = [for (i=[0:N]) let(w=360/N*i) r*[sin(w), cos(w), 0]]; function chip(r = 10, N = 100) = // polygon for cross section [for (i=[0:N]) let(w = 360/N*i) r*[sin(w), cos(w), 0.1*cos(3*w)]]; module poly(p) { face = [for(i=[0:len(p)]) i]; p_ = len(p[0]) == 3?p:vec3D(p); polyhedron(p_, [face]); } -- Sent from: http://forum.openscad.org/
NH
nop head
Sat, Dec 23, 2017 5:38 PM

I severely doubt that this can have a trivial solution.

Yes for a general strip that is certainly true. In my case the weight of
the strip is negligible compared to its stiffness so gravity doesn't play a
part. I can turn it upside down and its shape doesn't change noticeably.

Yes if the ends get two close together it would try to be a light bulb
shape. That doesn't matter in my model because it is only the lower
position that is critical. The constraint is the strip must be short enough
to not touch the bottom. I use your iteration method to find the control
points to give the target z value when the table is at the bottom. That
gives me the length of the strip. In any other position I move the control
points to achieve that length. In the middle position it may bulge forwards
slightly in real life but not in the model. As there is nothing for it to
hit it doesn't matter for my purpose. What matters is I generate the
correct length of strip and cable on the BOM and that it is a long as
possible without touching the bottom.

My breakthrough has been giving the two control points the same z value, so
a single parameter moves them up and down together. I found by accident
that gives a realistic curve and can rationalise it by realising that
having the control points level is the minimum energy state of the curve
through the control points. I.e. if the two bottom corners were sprung
hinges that wanted to be 180 then both at 90 gives the minimum energy as it
would be proportional to the sum of (180 - angle) squared. Whether the
Bezier curve generated from those points is the minimum energy curve I
don't know but empirically it seems to match reality. If I make the rear
point lower it increases the radius of the curve but when it goes below the
the front control point the strip starts to kink as it leaves its clamp.
When the rear control point is higher than the front one the strip forms
too tight a curve.

On 23 December 2017 at 15:35, Parkinbot rudolf@parkinbot.com wrote:

@nophead,
I'm afraid you will need a proper differential equation system to describe
(and solve) your problem in a generic way. The solution will be reigned by
the viscoelastic stiffness (elasticty + damping) and also the weight of
your
strip will play a non-negligible role.
Imagine the case that both ends stay at the same level. Without gravity,
your solution at least with distance of ends < dip of fixed-length strip @
vertical egress on both ends
will look like the projection of a light
bulb,
as the minimum energy condition will try to minimize bending at each point.
Gravity tends to distort this solution with a catenary function defined as
tradeoff between elastic and gravitational forces. Furtheron a damping term
with introduce some hysteresis ... I severly doubt that this can have a
trival solution.

--
Sent from: http://forum.openscad.org/


OpenSCAD mailing list
Discuss@lists.openscad.org
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org

> I severely doubt that this can have a trivial solution. Yes for a general strip that is certainly true. In my case the weight of the strip is negligible compared to its stiffness so gravity doesn't play a part. I can turn it upside down and its shape doesn't change noticeably. Yes if the ends get two close together it would try to be a light bulb shape. That doesn't matter in my model because it is only the lower position that is critical. The constraint is the strip must be short enough to not touch the bottom. I use your iteration method to find the control points to give the target z value when the table is at the bottom. That gives me the length of the strip. In any other position I move the control points to achieve that length. In the middle position it may bulge forwards slightly in real life but not in the model. As there is nothing for it to hit it doesn't matter for my purpose. What matters is I generate the correct length of strip and cable on the BOM and that it is a long as possible without touching the bottom. My breakthrough has been giving the two control points the same z value, so a single parameter moves them up and down together. I found by accident that gives a realistic curve and can rationalise it by realising that having the control points level is the minimum energy state of the curve through the control points. I.e. if the two bottom corners were sprung hinges that wanted to be 180 then both at 90 gives the minimum energy as it would be proportional to the sum of (180 - angle) squared. Whether the Bezier curve generated from those points is the minimum energy curve I don't know but empirically it seems to match reality. If I make the rear point lower it increases the radius of the curve but when it goes below the the front control point the strip starts to kink as it leaves its clamp. When the rear control point is higher than the front one the strip forms too tight a curve. On 23 December 2017 at 15:35, Parkinbot <rudolf@parkinbot.com> wrote: > @nophead, > I'm afraid you will need a proper differential equation system to describe > (and solve) your problem in a generic way. The solution will be reigned by > the viscoelastic stiffness (elasticty + damping) and also the weight of > your > strip will play a non-negligible role. > Imagine the case that both ends stay at the same level. Without gravity, > your solution at least with *distance of ends < dip of fixed-length strip @ > vertical egress on both ends* will look like the projection of a light > bulb, > as the minimum energy condition will try to minimize bending at each point. > Gravity tends to distort this solution with a catenary function defined as > tradeoff between elastic and gravitational forces. Furtheron a damping term > with introduce some hysteresis ... I severly doubt that this can have a > trival solution. > > -- > Sent from: http://forum.openscad.org/ > > _______________________________________________ > OpenSCAD mailing list > Discuss@lists.openscad.org > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org >
RD
Revar Desmera
Sat, Dec 23, 2017 6:43 PM

I may not be understanding the problem correctly, but could you solve self intersection by creating each loop of the sweep as a separate object and union them?

  • Revar

On Dec 23, 2017, at 9:38 AM, nop head nop.head@gmail.com wrote:

I severely doubt that this can have a trivial solution.

Yes for a general strip that is certainly true. In my case the weight of the strip is negligible compared to its stiffness so gravity doesn't play a part. I can turn it upside down and its shape doesn't change noticeably.

Yes if the ends get two close together it would try to be a light bulb shape. That doesn't matter in my model because it is only the lower position that is critical. The constraint is the strip must be short enough to not touch the bottom. I use your iteration method to find the control points to give the target z value when the table is at the bottom. That gives me the length of the strip. In any other position I move the control points to achieve that length. In the middle position it may bulge forwards slightly in real life but not in the model. As there is nothing for it to hit it doesn't matter for my purpose. What matters is I generate the correct length of strip and cable on the BOM and that it is a long as possible without touching the bottom.

My breakthrough has been giving the two control points the same z value, so a single parameter moves them up and down together. I found by accident that gives a realistic curve and can rationalise it by realising that having the control points level is the minimum energy state of the curve through the control points. I.e. if the two bottom corners were sprung hinges that wanted to be 180 then both at 90 gives the minimum energy as it would be proportional to the sum of (180 - angle) squared. Whether the Bezier curve generated from those points is the minimum energy curve I don't know but empirically it seems to match reality. If I make the rear point lower it increases the radius of the curve but when it goes below the the front control point the strip starts to kink as it leaves its clamp. When the rear control point is higher than the front one the strip forms too tight a curve.

On 23 December 2017 at 15:35, Parkinbot rudolf@parkinbot.com wrote:
@nophead,
I'm afraid you will need a proper differential equation system to describe
(and solve) your problem in a generic way. The solution will be reigned by
the viscoelastic stiffness (elasticty + damping) and also the weight of your
strip will play a non-negligible role.
Imagine the case that both ends stay at the same level. Without gravity,
your solution at least with distance of ends < dip of fixed-length strip @
vertical egress on both ends
will look like the projection of a light bulb,
as the minimum energy condition will try to minimize bending at each point.
Gravity tends to distort this solution with a catenary function defined as
tradeoff between elastic and gravitational forces. Furtheron a damping term
with introduce some hysteresis ... I severly doubt that this can have a
trival solution.

--
Sent from: http://forum.openscad.org/


OpenSCAD mailing list
Discuss@lists.openscad.org
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org

I may not be understanding the problem correctly, but could you solve self intersection by creating each loop of the sweep as a separate object and union them? - Revar > On Dec 23, 2017, at 9:38 AM, nop head <nop.head@gmail.com> wrote: > > > I severely doubt that this can have a trivial solution. > > Yes for a general strip that is certainly true. In my case the weight of the strip is negligible compared to its stiffness so gravity doesn't play a part. I can turn it upside down and its shape doesn't change noticeably. > > Yes if the ends get two close together it would try to be a light bulb shape. That doesn't matter in my model because it is only the lower position that is critical. The constraint is the strip must be short enough to not touch the bottom. I use your iteration method to find the control points to give the target z value when the table is at the bottom. That gives me the length of the strip. In any other position I move the control points to achieve that length. In the middle position it may bulge forwards slightly in real life but not in the model. As there is nothing for it to hit it doesn't matter for my purpose. What matters is I generate the correct length of strip and cable on the BOM and that it is a long as possible without touching the bottom. > > My breakthrough has been giving the two control points the same z value, so a single parameter moves them up and down together. I found by accident that gives a realistic curve and can rationalise it by realising that having the control points level is the minimum energy state of the curve through the control points. I.e. if the two bottom corners were sprung hinges that wanted to be 180 then both at 90 gives the minimum energy as it would be proportional to the sum of (180 - angle) squared. Whether the Bezier curve generated from those points is the minimum energy curve I don't know but empirically it seems to match reality. If I make the rear point lower it increases the radius of the curve but when it goes below the the front control point the strip starts to kink as it leaves its clamp. When the rear control point is higher than the front one the strip forms too tight a curve. > >> On 23 December 2017 at 15:35, Parkinbot <rudolf@parkinbot.com> wrote: >> @nophead, >> I'm afraid you will need a proper differential equation system to describe >> (and solve) your problem in a generic way. The solution will be reigned by >> the viscoelastic stiffness (elasticty + damping) and also the weight of your >> strip will play a non-negligible role. >> Imagine the case that both ends stay at the same level. Without gravity, >> your solution at least with *distance of ends < dip of fixed-length strip @ >> vertical egress on both ends* will look like the projection of a light bulb, >> as the minimum energy condition will try to minimize bending at each point. >> Gravity tends to distort this solution with a catenary function defined as >> tradeoff between elastic and gravitational forces. Furtheron a damping term >> with introduce some hysteresis ... I severly doubt that this can have a >> trival solution. >> >> -- >> Sent from: http://forum.openscad.org/ >> >> _______________________________________________ >> OpenSCAD mailing list >> Discuss@lists.openscad.org >> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org > > _______________________________________________ > OpenSCAD mailing list > Discuss@lists.openscad.org > http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
P
Parkinbot
Sat, Dec 23, 2017 10:47 PM

You can visualize a polyline segment by hulling two spheres. Unioning a
sequence of such segments will do the job regardless of self-intersection.
You are right in this point. But rendering will be very very slow as soon as
many segments have to be rendered.

RevarBat wrote

I may not be understanding the problem correctly, but could you solve self
intersection by creating each loop of the sweep as a separate object and
union them?

You can visualize a polyline segment by hulling two spheres. Unioning a sequence of such segments will do the job regardless of self-intersection. You are right in this point. But rendering will be very very slow as soon as many segments have to be rendered. RevarBat wrote > I may not be understanding the problem correctly, but could you solve self > intersection by creating each loop of the sweep as a separate object and > union them? -- Sent from: http://forum.openscad.org/
RP
Ronaldo Persiano
Sun, Dec 24, 2017 7:28 PM

You are right. The expression of the energy I've been using is an
approximation of the bending energy valid only under some strict
conditions. As its integral is easily evaluated it is the usual energy
expression in the context of geometric modeling.

You need a physical bending energy though and that may be computed with a
little more effort applying the expression of curvature found in
https://en.wikipedia.org/wiki/Curvature#Curvature_of_space_curves to a
suitable subdivision refinement of the curve.

​I believe the energy minimizing strategy I devised may still work with the
bending energy based on curvature.

However, I don't believe the shape of a bent physical strip in a general
setting may be modeled by a cubic arc.

2017-12-22 17:51 GMT-02:00 nop head nop.head@gmail.com:

The energy expression of a curve was taken proportional to the integral

of its second parametric derivative

I don't think this is right. I think the energy is proportional to the
integral of the square of curvature. This is because the potential energy
in a spring is a square law due to the force increasing as you bend it.

Also I think curvature is second derivative with respect to arc length,
not the parameter.

You are right. The expression of the energy I've been using is an approximation of the bending energy valid only under some strict conditions. As its integral is easily evaluated it is the usual energy expression in the context of geometric modeling. You need a physical bending energy though and that may be computed with a little more effort applying the expression of curvature found in https://en.wikipedia.org/wiki/Curvature#Curvature_of_space_curves to a suitable subdivision refinement of the curve. ​I believe the energy minimizing strategy I devised may still work with the bending energy based on curvature. However, I don't believe the shape of a bent physical strip in a general setting may be modeled by a cubic arc. 2017-12-22 17:51 GMT-02:00 nop head <nop.head@gmail.com>: > >The energy expression of a curve was taken proportional to the integral > of its second parametric derivative > > I don't think this is right. I think the energy is proportional to the > integral of the square of curvature. This is because the potential energy > in a spring is a square law due to the force increasing as you bend it. > > Also I think curvature is second derivative with respect to arc length, > not the parameter. > > >