@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:900137poly(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/_______________________________________________

OpenSCAD mailing list

[hidden email]
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org