I've been trying to figure out whether there is a way in OpenSCAD to generate a braid. My thought process usually would be to define a path and then extrude a shape along that path.
I would like to end up with something similar to this: http://i.imgur.com/SUi4H3n.png Thanks, _______________________________________________ OpenSCAD mailing list [hidden email] http://rocklinux.net/mailman/listinfo/openscad http://openscad.org - https://flattr.com/thing/121566 |
Sounds like another job for chain_hull: https://plus.google.com/u/0/105535247347788377245/posts/aZGXKFX1ACN (check the comments for example code)
On Friday, October 11, 2013 at 11:50 PM, Mr. Maze wrote:
_______________________________________________ OpenSCAD mailing list [hidden email] http://rocklinux.net/mailman/listinfo/openscad http://openscad.org - https://flattr.com/thing/121566 |
In reply to this post by Mr. Maze
This is possible with my extensions: https://github.com/devlaam/openscad
[standard openscad 2013.06 + several extensions] For more info see: https://github.com/devlaam/openscad/blob/loop_extension/doc/Loop.pdf Have fun. Ruud On 12-10-13 08:50, Mr. Maze wrote: > I've been trying to figure out whether there is a way in OpenSCAD to > generate a braid. > My thought process usually would be to define a path and then extrude a > shape along that path. > I would like to end up with something similar to this: > http://i.imgur.com/SUi4H3n.png > > Thanks, > > Matthias > > > > _______________________________________________ > OpenSCAD mailing list > [hidden email] > http://rocklinux.net/mailman/listinfo/openscad > http://openscad.org - https://flattr.com/thing/121566 > _______________________________________________ OpenSCAD mailing list [hidden email] http://rocklinux.net/mailman/listinfo/openscad http://openscad.org - https://flattr.com/thing/121566 |
Is it possible to write down the mathematical formula for the path of one strung? (... eh possible it should be, have you done it?) 2013/10/14 Ruud Vlaming <[hidden email]> This is possible with my extensions: https://github.com/devlaam/openscad -- [hidden email] P.S. Falls meine E-Mail kürzer ausfällt als Dir angenehm ist: Ich probiere gerade aus kurze Antworten statt gar keine Antworten zu schreiben. Wenn Du gerne mehr lesen möchtest, dann lass es mich bitte wissen. P.S. In case my e-mail is shorter than you enjoy: I am currently trying short replies instead of no replies at all. Please let me know, if you like to read more. Enjoy! _______________________________________________ OpenSCAD mailing list [hidden email] http://rocklinux.net/mailman/listinfo/openscad http://openscad.org - https://flattr.com/thing/121566 |
On 15-10-13 23:05, Peter Falke wrote:
> Is it possible to write down the mathematical formula for the path of one > strung? > (... eh possible it should be, have you done it?) I have not done it, and a quick look with google does not revealed anything useful to me. I have tried the trefoil, see http://en.wikipedia.org/wiki/Trefoil_knot and the generated image is on top of my documentation. Ruud _______________________________________________ OpenSCAD mailing list [hidden email] http://rocklinux.net/mailman/listinfo/openscad http://openscad.org - https://flattr.com/thing/121566 |
Here is a quick and dirty plait Sincerely,$fn=16; sa=0; se=200; s0=20; sn=3; w=se-sa; ay=2; az=1; module strand(){ for (s=[sa:se]){ translate([sn*s/w*s0,ay*sin(360*s/w*sn),az*sin(2*360*s/w*sn)])sphere(); } } strand(); translate([s0/3,0,])strand(); translate([2*s0/3,0,])strand(); 2013/10/17 Ruud Vlaming <[hidden email]>
-- [hidden email] P.S. Falls meine E-Mail kürzer ausfällt als Dir angenehm ist: Ich probiere gerade aus kurze Antworten statt gar keine Antworten zu schreiben. Wenn Du gerne mehr lesen möchtest, dann lass es mich bitte wissen. P.S. In case my e-mail is shorter than you enjoy: I am currently trying short replies instead of no replies at all. Please let me know, if you like to read more. Enjoy! _______________________________________________ OpenSCAD mailing list [hidden email] http://rocklinux.net/mailman/listinfo/openscad http://openscad.org - https://flattr.com/thing/121566 |
Nice work Peter!
Based on this, quick and dirty (probably this can be done in a more intelligent way, but i lack the time at the moment) $fn=30; sa=0; se=200; s0=20; sn=3; w=se-sa; ay=2; az=1; function p(s) = [sn*s/w*s0,ay*sin(360*s/w*sn),az*sin(2*360*s/w*sn)]; module loopStrand(n) { translate([n*s0/3,0,0]) loop_extrude( points= [p(00),p(01),p(02),p(03),p(04),p(05),p(06),p(07),p(08),p(09), p(10),p(11),p(12),p(13),p(14),p(15),p(16),p(17),p(18),p(19), p(20),p(21),p(22),p(23),p(24),p(25),p(26),p(27),p(28),p(29), p(30),p(31),p(32),p(33),p(34),p(35),p(36),p(37),p(38),p(39), p(40),p(41),p(42),p(43),p(44),p(45),p(46),p(47),p(48),p(49), p(50),p(51),p(52),p(53),p(54),p(55),p(56),p(57),p(58),p(59), p(60),p(61),p(62),p(63),p(64),p(65),p(66),p(67),p(68),p(69), p(70),p(71),p(72),p(73),p(74),p(75),p(76),p(77),p(78),p(79), p(80),p(81),p(82),p(83),p(84),p(85),p(86),p(87),p(88),p(89), p(90),p(91),p(92),p(93),p(94),p(95),p(96),p(97),p(98),p(99)], segments=[1,2,199,200,201,["hide"]] ) circle(0.8); } loopStrand(0); loopStrand(1); loopStrand(2); See image. Ruud On 17-10-13 16:59, Peter Falke wrote: > Here is a quick and dirty plait > > Sincerely, > > TakeItAndRun > > $fn=16; > > > sa=0; > > se=200; > > s0=20; > > > sn=3; > > > w=se-sa; > > > ay=2; > > az=1; > > > > module strand(){ > > for (s=[sa:se]){ > > translate([sn*s/w*s0,ay*sin(360*s/w*sn),az*sin(2*360*s/w*sn)])sphere(); > > } > > } > > > strand(); > > translate([s0/3,0,])strand(); > > translate([2*s0/3,0,])strand(); > > > [image: Inline-Bild 1] > > > > 2013/10/17 Ruud Vlaming <[hidden email]> > >> On 15-10-13 23:05, Peter Falke wrote: >>> Is it possible to write down the mathematical formula for the path of one >>> strung? >>> (... eh possible it should be, have you done it?) >> I have not done it, and a quick look with google does >> not revealed anything useful to me. I have tried the trefoil, >> see http://en.wikipedia.org/wiki/Trefoil_knot >> and the generated image is on top of my documentation. >> >> Ruud >> >> _______________________________________________ >> OpenSCAD mailing list >> [hidden email] >> http://rocklinux.net/mailman/listinfo/openscad >> http://openscad.org - https://flattr.com/thing/121566 >> > > > > > > _______________________________________________ > OpenSCAD mailing list > [hidden email] > http://rocklinux.net/mailman/listinfo/openscad > http://openscad.org - https://flattr.com/thing/121566 > _______________________________________________ OpenSCAD mailing list [hidden email] http://rocklinux.net/mailman/listinfo/openscad http://openscad.org - https://flattr.com/thing/121566 braid.png (78K) Download Attachment |
In reply to this post by Peter Falke
Heh, looks like a braid of paracord! Chain_hull should smooth that out nicely.
On Thursday, October 17, 2013 at 7:59 AM, Peter Falke wrote:
_______________________________________________ OpenSCAD mailing list [hidden email] http://rocklinux.net/mailman/listinfo/openscad http://openscad.org - https://flattr.com/thing/121566 |
This is very encouraging. I'm still a bit skeptical of how far I am comfortable with complex computation in OpenSCAD - but it's getting very close to what I need.
What I do now is produce these twisted parts in Java and then import as STL to OpenSCAD. The issue is maintaining a local coordinate system at every point along the curve. Of course, if you use a spherical blob (or a circular cross section) then orientation of the local coordinate system is irrelevant. Below is an example of what I have in mind (here, the wide sides of the rectangular cross-sections all point directly towards/away from the center of curvature - imagine riding a motorcycle at high speed on the inner "roadway". Input is a discrete space curve plus a polygonal cross-section (here, a rectangle); output is the STL. I suppose I could arrange to output a series of coordinate frames, and then automatically write OpenSCAD code to position and orient and then call "crosssection()" to do the work. These happen to be Frenet frames - but they are sometimes very slightly tweaked, to avoid nasty behavior at singularities (think about flying a figure 8). Oh…there's also the small matter of triangulating (I'm sure someone will show me how to do this in OpenSCAD…). What's my point? That it may be better to "leave unto OpenSCAD what belongs to OpenSCAD" and use other tools when appropriate. I'm not entirely sure I would LIKE an OpenSCAD that had been extended to do this! (but….you never can tell). And…if it were extended to do *this*, I would probably think of something ELSE that I wanted to do. I want an OpenSCAD that "plays nicely with friends" - and am suspicious of trying to "be all and end all". But, I suppose I would be interested in "import sequence of reference frames" and "applyReferenceFrame(rf)" - to be used just like any of the existing transforms (rotate, scale, translate). I suppose we need both an absolute AND an incremental version. But first, I would prefer to see all the cgal bugs fixed… For me, right now, robustness is FAR more important than features. The most frustrating thing for me is when a design goes through all the right steps, checks out perfectly, and crashed cgal with an inscrutable error message. This is when I say "can I have the last hour of my life back, please?" _______________________________________________ OpenSCAD mailing list [hidden email] http://rocklinux.net/mailman/listinfo/openscad http://openscad.org - https://flattr.com/thing/121566 |
On 17-10-13 22:17, Kenneth Sloan wrote:
> Below is an example of what I have in mind (here, the wide sides of the > rectangular cross-sections all point directly towards/away from the center of > curvature - imagine riding a motorcycle at high speed on the inner "roadway". Piece of cake in openScad :) ... see attached image. btw: When riding the motorbike you will find yourself on the inside of one curve but then on the outside of the next curve. In order to make this a 'safe' ride, i need to introduce more torsion, but this cannot be linear along the trajectory, otherwise the outside curve becomes 'unsafe'. This is possible but more work. I checked your design, its a little hard to see, but at least one curve has the same problem. have fun Ruud _______________________________________________ OpenSCAD mailing list [hidden email] http://rocklinux.net/mailman/listinfo/openscad http://openscad.org - https://flattr.com/thing/121566 twisted-torus-knot.png (94K) Download Attachment |
Ruud, Sincerely,I have the intense desire to click on the image and rotate it. Would you please share your code for the twisted torus knot? 2013/10/18 Ruud Vlaming <[hidden email]>
-- [hidden email] P.S. Falls meine E-Mail kürzer ausfällt als Dir angenehm ist: Ich probiere gerade aus kurze Antworten statt gar keine Antworten zu schreiben. Wenn Du gerne mehr lesen möchtest, dann lass es mich bitte wissen. P.S. In case my e-mail is shorter than you enjoy: I am currently trying short replies instead of no replies at all. Please let me know, if you like to read more. Enjoy! _______________________________________________ OpenSCAD mailing list [hidden email] http://rocklinux.net/mailman/listinfo/openscad http://openscad.org - https://flattr.com/thing/121566 |
In reply to this post by devlaam
Not the same. In particular, my object does not flip the motorcyclist from inside to outside. Of course, it's easier to check the physical model, which I have done. I'm willing to believe that my object is a "piece of cake" in OpenSCAD, but I'm afraid your attempt doesn't demonstrate this. The point is that the torsion in my object is NOT linear. As originally stated, every Frenet frame (and in this model, they are all Frenet frames, so we don't need my extension) has one axis pointing directly at the center of curvature. That's what holds our motorcyclist ON the roadway. (a stunt pilot flying the same trajectory would appreciate this nicety, too - his drink won't spill). It is precisely the problem of enforcing this constraint that makes this difficult to do in OpenSCAD (and a "piece of cake" in Java). Of course, if you don't care about this "nicety", then it's easy enough to produce something in OpenSCAD that "kinda-looks-like" the right object. I'm a bit more picky. No doubt a personal failing. Tschüss! -- Kenneth Sloan [hidden email] On Oct 18, 2013, at 04:11 , Ruud Vlaming <[hidden email]> wrote: > On 17-10-13 22:17, Kenneth Sloan wrote: >> Below is an example of what I have in mind (here, the wide sides of the >> rectangular cross-sections all point directly towards/away from the center of >> curvature - imagine riding a motorcycle at high speed on the inner "roadway". > Piece of cake in openScad :) ... see attached image. > > btw: When riding the motorbike you will find yourself > on the inside of one curve but then on the outside > of the next curve. In order to make this a 'safe' > ride, i need to introduce more torsion, but this > cannot be linear along the trajectory, otherwise > the outside curve becomes 'unsafe'. This is possible > but more work. I checked your design, its a little hard > to see, but at least one curve has the same problem. > > have fun > Ruud > > <twisted-torus-knot.png>_______________________________________________ > OpenSCAD mailing list > [hidden email] > http://rocklinux.net/mailman/listinfo/openscad > http://openscad.org - https://flattr.com/thing/121566 _______________________________________________ OpenSCAD mailing list [hidden email] http://rocklinux.net/mailman/listinfo/openscad http://openscad.org - https://flattr.com/thing/121566 |
In reply to this post by Peter Falke
On 18-10-13 12:37, Peter Falke wrote:
> Ruud, > I have the intense desire to click on the image and rotate it. > Would you please share your code for the twisted torus knot? Of course, no prob, see below. But, you need my latest(!) loop extension, so check it out! This is because i added the possibility to generate sequences of points using a 'for' inside a function. Without this, generating sequences of points is possible but very cumbersome! Have Fun Ruud $fn=50; r=163/150; function p(t) = [3*(2+cos(7*(3*t)/3)),(3*t),3*sin(7*(3*t)/3)]; function q(t) = (t%2==0) ? ["lin","csl",[-1,1,t/2*r],[1,1,t/2*r]] : ["lin","csl",[-1,1,(t-1)/2*r],[1,1,((t-1)/2+1)*r]]; function pnts(t) = for(i=[0:t-1],p(i)); function segs(t) = for(i=[0:t-1],q(i)); loop_extrude(points="cylinder"+pnts(360),segments=segs(720)) square([0.8,1.6],center = true); > > Sincerely, > > TakeItAndRun > > > 2013/10/18 Ruud Vlaming <[hidden email]> > >> On 17-10-13 22:17, Kenneth Sloan wrote: >> >>> Below is an example of what I have in mind (here, the wide sides of the >>> rectangular cross-sections all point directly towards/away from the >>> center of >>> curvature - imagine riding a motorcycle at high speed on the inner >>> "roadway". >>> >> Piece of cake in openScad :) ... see attached image. >> >> btw: When riding the motorbike you will find yourself >> on the inside of one curve but then on the outside >> of the next curve. In order to make this a 'safe' >> ride, i need to introduce more torsion, but this >> cannot be linear along the trajectory, otherwise >> the outside curve becomes 'unsafe'. This is possible >> but more work. I checked your design, its a little hard >> to see, but at least one curve has the same problem. >> >> have fun >> Ruud >> >> >> _______________________________________________ >> OpenSCAD mailing list >> [hidden email] >> http://rocklinux.net/mailman/listinfo/openscad >> http://openscad.org - https://flattr.com/thing/121566 >> > > > > > > _______________________________________________ > OpenSCAD mailing list > [hidden email] > http://rocklinux.net/mailman/listinfo/openscad > http://openscad.org - https://flattr.com/thing/121566 > _______________________________________________ OpenSCAD mailing list [hidden email] http://rocklinux.net/mailman/listinfo/openscad http://openscad.org - https://flattr.com/thing/121566 |
In reply to this post by Kenneth R Sloan
Not relevant. Adding one extra twist per revolution
makes no significant difference. I have shown that i can modify the rotation along the trajectory at will. The rest is trivial mathematics. Furthermore, Frenet frames are a pain in the ass, therefore i did deliberate not use them in openSCAD. The Frenet coordinate system is ill defined at inflection points, can be discontinues and often introduces a lot of extra torsion along the path that you have to unwind somehow, or you get problems at closing the curves. So, i do care about the details, and therefore i did not solve it the way you propose. Please post your Java code that produced the figure. I am curious how easy it was, see mine somewhere else in this thread. Have Fun Ruud. On 18-10-13 15:34, Kenneth R Sloan wrote: > > Not the same. In particular, my object does not flip the motorcyclist from inside to outside. > > Of course, it's easier to check the physical model, which I have done. > > I'm willing to believe that my object is a "piece of cake" in OpenSCAD, but I'm afraid your attempt doesn't demonstrate this. > > The point is that the torsion in my object is NOT linear. > > As originally stated, every Frenet frame (and in this model, they are all Frenet frames, so > we don't need my extension) has one axis pointing directly at the center of curvature. That's what > holds our motorcyclist ON the roadway. (a stunt pilot flying the same trajectory would appreciate this nicety, too - his drink won't spill). > > It is precisely the problem of enforcing this constraint that makes this difficult to do > in OpenSCAD (and a "piece of cake" in Java). > > Of course, if you don't care about this "nicety", then it's easy enough to produce something in OpenSCAD that "kinda-looks-like" the right object. I'm a bit more picky. No doubt a personal failing. > > Tschüss! > > -- > Kenneth Sloan > [hidden email] > > > On Oct 18, 2013, at 04:11 , Ruud Vlaming <[hidden email]> > wrote: > >> On 17-10-13 22:17, Kenneth Sloan wrote: >>> Below is an example of what I have in mind (here, the wide sides of the >>> rectangular cross-sections all point directly towards/away from the center of >>> curvature - imagine riding a motorcycle at high speed on the inner "roadway". >> Piece of cake in openScad :) ... see attached image. >> >> btw: When riding the motorbike you will find yourself >> on the inside of one curve but then on the outside >> of the next curve. In order to make this a 'safe' >> ride, i need to introduce more torsion, but this >> cannot be linear along the trajectory, otherwise >> the outside curve becomes 'unsafe'. This is possible >> but more work. I checked your design, its a little hard >> to see, but at least one curve has the same problem. >> >> have fun >> Ruud >> >> <twisted-torus-knot.png>_______________________________________________ >> OpenSCAD mailing list >> [hidden email] >> http://rocklinux.net/mailman/listinfo/openscad >> http://openscad.org - https://flattr.com/thing/121566 > > _______________________________________________ > OpenSCAD mailing list > [hidden email] > http://rocklinux.net/mailman/listinfo/openscad > http://openscad.org - https://flattr.com/thing/121566 > _______________________________________________ OpenSCAD mailing list [hidden email] http://rocklinux.net/mailman/listinfo/openscad http://openscad.org - https://flattr.com/thing/121566 |
Do you "solve" all problems by re-defining them?
I remain interested in your demonstration that "When riding the motorbike you will find yourself on the inside of one curve but then on the outside of the next curve." That would be surprising to me, but I have been wrong before. I *do* care about the details. The "flaws" you perceive in the Frenet frames are precisely what I want to illustrate. It's not possible to do that if you simply wave your hand and say "not relevant". If it's not relevant to you…carry on. It *is* relevant to me. "ill-defined at inflection points" and "discontinuities" are handled by the "trivial mathematics" I have added to Frenet frames. "introduces a lot of extra torsion" is a consequence I wish to demonstrate. I do not usually want "to unwind somehow". "Problems at closing the curves" is, again, a natural consequence that may, or may not, require a solution. If closing the curve is your main criterion, then you may indeed not want to use Frenet frames. When using a system to produce physical objects, my requirement is that it produce the physical objects that *I* want. I am, sadly, not satisfied when it asks me to accept some other, somewhat similar, object as a substitute because doing what I want is "a pain in the ass". But, I'm also willing to use multiple tools to achieve my goal. If OpenSCAD doesn't provide what I need, I'm perfectly happy "rolling my own" solutions to the really hard parts of the problem. It's a bit of "a pain in the ass", but I'm willing to do what's necessary. Once again - what would be useful *to me* in OpenSCAD is a way to specify a sequence of reference frames. As near as I can make out, your excellent extension provides for a sequence of points, and provides a default collection of frames (perhaps I misunderstand - if so, please educate me). What you have provided is very nice, and very useful - only please don't pretend that it does what I want - or that what I want is "not relevant". As I said earlier, adding this to OpenSCAD is nowhere near the top of my wish list. Eliminating cgal bugs is much more important to me. … I am reminded of the standard joke about theoretical physicists: they produce elegant solutions…which work only for a sphere in a vacuum. -- Kenneth Sloan [hidden email] On Oct 19, 2013, at 08:15 , Ruud Vlaming <[hidden email]> wrote: > Not relevant. Adding one extra twist per revolution > makes no significant difference. I have shown > that i can modify the rotation along the trajectory > at will. The rest is trivial mathematics. > > Furthermore, Frenet frames are a pain in the ass, > therefore i did deliberate not use them in openSCAD. > The Frenet coordinate system is ill defined at inflection > points, can be discontinues and often introduces a lot of > extra torsion along the path that you have to unwind > somehow, or you get problems at closing the curves. > > So, i do care about the details, and therefore i > did not solve it the way you propose. > > Please post your Java code that produced the figure. > I am curious how easy it was, see mine somewhere > else in this thread. > > Have Fun > Ruud. > > > > On 18-10-13 15:34, Kenneth R Sloan wrote: >> >> Not the same. In particular, my object does not flip the motorcyclist from inside to outside. >> >> Of course, it's easier to check the physical model, which I have done. >> >> I'm willing to believe that my object is a "piece of cake" in OpenSCAD, but I'm afraid your attempt doesn't demonstrate this. >> >> The point is that the torsion in my object is NOT linear. >> >> As originally stated, every Frenet frame (and in this model, they are all Frenet frames, so >> we don't need my extension) has one axis pointing directly at the center of curvature. That's what >> holds our motorcyclist ON the roadway. (a stunt pilot flying the same trajectory would appreciate this nicety, too - his drink won't spill). >> >> It is precisely the problem of enforcing this constraint that makes this difficult to do >> in OpenSCAD (and a "piece of cake" in Java). >> >> Of course, if you don't care about this "nicety", then it's easy enough to produce something in OpenSCAD that "kinda-looks-like" the right object. I'm a bit more picky. No doubt a personal failing. >> >> Tschüss! >> >> -- >> Kenneth Sloan >> [hidden email] >> >> >> On Oct 18, 2013, at 04:11 , Ruud Vlaming <[hidden email]> >> wrote: >> >>> On 17-10-13 22:17, Kenneth Sloan wrote: >>>> Below is an example of what I have in mind (here, the wide sides of the >>>> rectangular cross-sections all point directly towards/away from the center of >>>> curvature - imagine riding a motorcycle at high speed on the inner "roadway". >>> Piece of cake in openScad :) ... see attached image. >>> >>> btw: When riding the motorbike you will find yourself >>> on the inside of one curve but then on the outside >>> of the next curve. In order to make this a 'safe' >>> ride, i need to introduce more torsion, but this >>> cannot be linear along the trajectory, otherwise >>> the outside curve becomes 'unsafe'. This is possible >>> but more work. I checked your design, its a little hard >>> to see, but at least one curve has the same problem. >>> >>> have fun >>> Ruud >>> >>> <twisted-torus-knot.png>_______________________________________________ >>> OpenSCAD mailing list >>> [hidden email] >>> http://rocklinux.net/mailman/listinfo/openscad >>> http://openscad.org - https://flattr.com/thing/121566 >> >> _______________________________________________ >> OpenSCAD mailing list >> [hidden email] >> http://rocklinux.net/mailman/listinfo/openscad >> http://openscad.org - https://flattr.com/thing/121566 >> > > _______________________________________________ > OpenSCAD mailing list > [hidden email] > http://rocklinux.net/mailman/listinfo/openscad > http://openscad.org - https://flattr.com/thing/121566 _______________________________________________ OpenSCAD mailing list [hidden email] http://rocklinux.net/mailman/listinfo/openscad http://openscad.org - https://flattr.com/thing/121566 |
Free forum by Nabble | Edit this page |