RW
Rogier Wolff
Sun, Jan 29, 2023 3:30 PM
Hi all,
With all the work on path_extrude I got "nerd-sniped" into making some
wings. I downloaded BOSL2, used a bezier representation to generate
the 2D cross section of a wing (NACA4412 IIRC).
I then extruded it with "linear_extrude" and was able to generate a 3D
wing. Using twist I was able to put a twist in the wing (*). Using scale,
I was able to make a tapered wing. Looking good. I'm confident that I
can generate a swept wing as well. (But I haven't actually done it yet).
Now there are still two things that I'd want to do with this. One is
to sweep/extrude along a path. I tried that with path_extrude_2d from
BOSL2. That works, but I lose the ability to twist and scale.
This would allow me to make a wing that has a curve to it instead of
just being swept and straight.
Another application is the new toroidal props that are in the news
this week. (google toroidal props and you'll find them).
The last application is to make a fan blade. Those have a wing profile
that will get bigger further to the outside. And I might want to sweep
the wing-profile back a bit to experiment. And this too has a tilt
that changes along the extrusion lenght.
If someone knows that this can already be done... I'd like to know
about it. If not, fine. No worries.
But for those who are working on another path_extrude implementation,
this is a "use-case" that you might want to support. Or not. Keep
it in mind....
Roger.
(*) The twist together with the wing sweep ensures good "stall"
characteristics of the aircraft. If you don't believe me that wings
have this twist look at a hanglider from behind at takeoff
https://www.pond5.com/stock-footage/item/64591446-hang-glider-takeoff
The thumbnail of this footage is the image I was looking for.
Even if this is a picture of a hang glider, airliners have this too.
The reason for such a twist in the wing is that if a stall is
imminent, the wing stalls (loses lift) in the middle first, while the
wingtips, which are further back still have lift. Thus the nose drops
and the aircraft takes up speed again and continues to fly. This'll
cost you some height but at least you're flying again which is
preferable to being helpless until you hit the ground. (AF447 managed
to hit the ocean by not allowing the plane to exit the stall by giving
lots of "nose up" input. Turkish 1951 and Asiana 214 hit the ground
because they didn't have enough height for the stall recovery to
work. Most cases where it DOES work end up being an incident instead
of an accident.)
On Sat, Jan 28, 2023 at 07:43:04AM +0530, Sanjeev Prabhakar wrote:
Hi Adriano,
Sorry, I got you wrong apparently.
I am now using a rectangle 3x10 as the extrude path and I have created a
polygon, which looks like an "U" Shape.
The thing rotates successfully around the extrusion axis all 360 degrees
and there aren't manifold problems at all during that time.
In each corner the successor segment has exactly one orientation where it
fits, so I believe it's not ambiguous at all.
And yes, my implementation is missing the "closed loop option" but I can
implement that next.
[image: image.png]
On Fri, Jan 27, 2023 at 11:09 PM Adrian Mariano avm4@cornell.edu wrote:
The rectangle I was talking about is the path, not the cross section.
The point is that you need to decide how to orient the cross section at
each corner of the rectangle, and an ambiguity exists that does not exist
in the case with a smooth curve, so simply using the half-angle may not be
the desired result. Video didn't seem notable. Not sure what I was
supposed to be seeing.
On Fri, Jan 27, 2023 at 4:51 PM Guenther Sohler <
guenther.sohler@gmail.com> wrote:
Hi Adrian, when i Use an rectangle 10x3 as a Profile , this Profile is
present in any Cross Section along the path when little apart from the
Corners of course.
This ist Independent from the original Rotation of the path or the
Angles between the path Segments.as Well as i. Bosl2: faces must Not
interec.but watch the Video. Pictures Tell more than 1000 words.
Adrian Mariano avm4@cornell.edu schrieb am Fr., 27. Jän. 2023, 22:31:
Guenther, I'm not sure what you mean. Having points widely spaced can
be done, of course. It's just harder to define the problem, I think, so
perhaps not the place to start. Nothing in BOSL2 assumes anything about
point spacing, but if the points are far apart you may find that you don't
like the automatically computed derivatives, especially if the path is very
short. And transitions between the sections may be more likely to do
something odd. Consider a rectangle that is 10 x 3. What are the
derivatives at the end? Are they 45 deg angles? Or do they respect the
aspect ratio of the rectangle? Either option can be defended as correct.
The BOSL2 implementation is very general and should be able to handle any
situation, as long as the sections don't lead to a self-intersecting and
hence invalid polyhedron.
On Fri, Jan 27, 2023 at 3:39 PM Guenther Sohler <
guenther.sohler@gmail.com> wrote:
Hi Adrian,
There are many great effects, which you can achieve when having the
points of the path wide enough apart.
Of course The Tangent and the normals (but especially the angle
between x and y axis) need be correct, but then it looks really cool.
With my approach I can easily immitate your solution by using many
points close together and skip the axis scaling(maybe worth an option)
My Vision and my approach which I have chosen actually came true.
https://www.youtube.com/watch?v=1m5OeK2lW4U
if it's too different from BOSL extrude maybe we can choose another
name .
On Fri, Jan 27, 2023 at 1:08 PM Rogier Wolff R.E.Wolff@bitwizard.nl
wrote:
FYI,
Freya Holmer worked on defining a "normal" or "reference" vector along
a path recently. She works in "gaming", so she has built what she
found out into some library that she is making. So for those wishing
to delve into that, it probably pays to watch her videos on youtube
and then delve into figuring out if she has published the code.
That said, she's interested in fluid curves and motions. So all her
"paths" are neat splines....
Roger.
On Fri, Jan 27, 2023 at 06:43:11AM -0500, Adrian Mariano wrote:
I agree with Sanjeev that it's better to focus on the case of
together. The problem is that some of the approaches are difficult
define, or simply won't work, if you have the points on the path
discrete and far apart. You need to compute tangent and normal to
path, so how do you do that at corners on a path with very few
There may be end effects in this computation, which will be more of
nuisance if you have only four points. One of the obvious
choosing the rotation of the sections relies on the path points
together and may produce bizarre results when they are too far
On Fri, Jan 27, 2023 at 4:39 AM Guenther Sohler <
Adrian,
Thank you for the hint and the direct link.
I am happy to compare my implementation against yours to see
differences.
Sanjeer, Thank you for your input.
Your output looks very impressive and I want to reach that too.
Personally I believe the challenge is to get it correct with very
points first.
The error will be much more clearly visible when choosing few
Finally, using many points to make it look smooth is just
Probably
spline and many other functions are viable.
Maybe its also there in BOSL2, will check later.
Thank you for your answers!
On Thu, Jan 26, 2023 at 10:50 PM Adrian Mariano avm4@cornell.edu
Guenther, I'm a little unsure of your goal here. If you are
implement path_sweep for the fun of it that's fine, of course,
been done before by many people in OpenSCAD, starting with
list-comprehension-demos and also in dotSCAD, and BOSL2. These
exist already as OpenSCAD code. so a demonstration isn't needed
possibilities. There are some very difficult questions about how
the cross sections as you move around the path, and yes, it's
possible that you've gotten it wrong...assuming that you can
what "wrong" means. It's not clear. There was a very long
forum many years ago about the various complications. I
several different algorithms in BOSL2 for choosing how to line
sections. You might want to take a look to get more
Hi List,
right now i am attempting to add a path_extrude function to
A demonstration what i am talking about is here:
https://youtu.be/igMupYGvX1s
(sorry, its in python, but still i hope you get the idea. )
This shows an arbitrary path_extrude of a square,
but in the video you can clearly see the triangles in the faces,
so i believe the cross section at the joints is not correct.
IMHO the square must turn to a deltoid especially when the base
is rotated by 45 degrees to be correct.
Can anybody shade some light on that for me ?
OpenSCAD mailing list
To unsubscribe send an email to
--
** R.E.Wolff@BitWizard.nl ** https://www.BitWizard.nl/ ** +31-15-2049110 **
** Delftechpark 11 2628 XJ Delft, The Netherlands. KVK: 27239233 **
f equals m times a. When your f is steady, and your m is going down
your a is going up. -- Chris Hadfield about flying up the space shuttle.
Hi all,
With all the work on path_extrude I got "nerd-sniped" into making some
wings. I downloaded BOSL2, used a bezier representation to generate
the 2D cross section of a wing (NACA4412 IIRC).
I then extruded it with "linear_extrude" and was able to generate a 3D
wing. Using twist I was able to put a twist in the wing (*). Using scale,
I was able to make a tapered wing. Looking good. I'm confident that I
can generate a swept wing as well. (But I haven't actually done it yet).
Now there are still two things that I'd want to do with this. One is
to sweep/extrude along a path. I tried that with path_extrude_2d from
BOSL2. That works, but I lose the ability to twist and scale.
This would allow me to make a wing that has a curve to it instead of
just being swept and straight.
Another application is the new toroidal props that are in the news
this week. (google toroidal props and you'll find them).
The last application is to make a fan blade. Those have a wing profile
that will get bigger further to the outside. And I might want to sweep
the wing-profile back a bit to experiment. And this too has a tilt
that changes along the extrusion lenght.
If someone knows that this can already be done... I'd like to know
about it. If not, fine. No worries.
But for those who are working on another path_extrude implementation,
this is a "use-case" that you might want to support. Or not. Keep
it in mind....
Roger.
(*) The twist together with the wing sweep ensures good "stall"
characteristics of the aircraft. If you don't believe me that wings
have this twist look at a hanglider from behind at takeoff
https://www.pond5.com/stock-footage/item/64591446-hang-glider-takeoff
The thumbnail of this footage is the image I was looking for.
Even if this is a picture of a hang glider, airliners have this too.
The reason for such a twist in the wing is that if a stall is
imminent, the wing stalls (loses lift) in the middle first, while the
wingtips, which are further back still have lift. Thus the nose drops
and the aircraft takes up speed again and continues to fly. This'll
cost you some height but at least you're flying again which is
preferable to being helpless until you hit the ground. (AF447 managed
to hit the ocean by not allowing the plane to exit the stall by giving
lots of "nose up" input. Turkish 1951 and Asiana 214 hit the ground
because they didn't have enough height for the stall recovery to
work. Most cases where it DOES work end up being an incident instead
of an accident.)
On Sat, Jan 28, 2023 at 07:43:04AM +0530, Sanjeev Prabhakar wrote:
> Looks great 👌
>
> On Sat, 28 Jan, 2023, 4:39 am Guenther Sohler, <guenther.sohler@gmail.com>
> wrote:
>
> > Hi Adriano,
> >
> > Sorry, I got you wrong apparently.
> > I am now using a rectangle 3x10 as the extrude path and I have created a
> > polygon, which looks like an "U" Shape.
> > The thing rotates successfully around the extrusion axis all 360 degrees
> > and there aren't manifold problems at all during that time.
> > In each corner the successor segment has exactly one orientation where it
> > fits, so I believe it's not ambiguous at all.
> >
> > And yes, my implementation is missing the "closed loop option" but I can
> > implement that next.
> >
> >
> >
> > [image: image.png]
> >
> > On Fri, Jan 27, 2023 at 11:09 PM Adrian Mariano <avm4@cornell.edu> wrote:
> >
> >> The rectangle I was talking about is the path, not the cross section.
> >> The point is that you need to decide how to orient the cross section at
> >> each corner of the rectangle, and an ambiguity exists that does not exist
> >> in the case with a smooth curve, so simply using the half-angle may not be
> >> the desired result. Video didn't seem notable. Not sure what I was
> >> supposed to be seeing.
> >>
> >> On Fri, Jan 27, 2023 at 4:51 PM Guenther Sohler <
> >> guenther.sohler@gmail.com> wrote:
> >>
> >>> Hi Adrian, when i Use an rectangle 10x3 as a Profile , this Profile is
> >>> present in any Cross Section along the path when little apart from the
> >>> Corners of course.
> >>> This ist Independent from the original Rotation of the path or the
> >>> Angles between the path Segments.as Well as i. Bosl2: faces must Not
> >>> interec.but watch the Video. Pictures Tell more than 1000 words.
> >>>
> >>> Adrian Mariano <avm4@cornell.edu> schrieb am Fr., 27. Jän. 2023, 22:31:
> >>>
> >>>> Guenther, I'm not sure what you mean. Having points widely spaced can
> >>>> be done, of course. It's just harder to define the problem, I think, so
> >>>> perhaps not the place to start. Nothing in BOSL2 assumes anything about
> >>>> point spacing, but if the points are far apart you may find that you don't
> >>>> like the automatically computed derivatives, especially if the path is very
> >>>> short. And transitions between the sections may be more likely to do
> >>>> something odd. Consider a rectangle that is 10 x 3. What are the
> >>>> derivatives at the end? Are they 45 deg angles? Or do they respect the
> >>>> aspect ratio of the rectangle? Either option can be defended as correct.
> >>>> The BOSL2 implementation is very general and should be able to handle any
> >>>> situation, as long as the sections don't lead to a self-intersecting and
> >>>> hence invalid polyhedron.
> >>>>
> >>>> On Fri, Jan 27, 2023 at 3:39 PM Guenther Sohler <
> >>>> guenther.sohler@gmail.com> wrote:
> >>>>
> >>>>> Hi Adrian,
> >>>>> There are many great effects, which you can achieve when having the
> >>>>> points of the path wide enough apart.
> >>>>> Of course The Tangent and the normals (but especially the angle
> >>>>> between x and y axis) need be correct, but then it looks really cool.
> >>>>> With my approach I can easily immitate your solution by using many
> >>>>> points close together and skip the axis scaling(maybe worth an option)
> >>>>> My Vision and my approach which I have chosen actually came true.
> >>>>>
> >>>>> https://www.youtube.com/watch?v=1m5OeK2lW4U
> >>>>>
> >>>>> if it's too different from BOSL extrude maybe we can choose another
> >>>>> name .
> >>>>>
> >>>>> On Fri, Jan 27, 2023 at 1:08 PM Rogier Wolff <R.E.Wolff@bitwizard.nl>
> >>>>> wrote:
> >>>>>
> >>>>>>
> >>>>>> FYI,
> >>>>>>
> >>>>>> Freya Holmer worked on defining a "normal" or "reference" vector along
> >>>>>> a path recently. She works in "gaming", so she has built what she
> >>>>>> found out into some library that she is making. So for those wishing
> >>>>>> to delve into that, it probably pays to watch her videos on youtube
> >>>>>> and then delve into figuring out if she has published the code.
> >>>>>>
> >>>>>> That said, she's interested in fluid curves and motions. So all her
> >>>>>> "paths" are neat splines....
> >>>>>>
> >>>>>> Roger.
> >>>>>>
> >>>>>> On Fri, Jan 27, 2023 at 06:43:11AM -0500, Adrian Mariano wrote:
> >>>>>> > I agree with Sanjeev that it's better to focus on the case of
> >>>>>> points close
> >>>>>> > together. The problem is that some of the approaches are difficult
> >>>>>> to
> >>>>>> > define, or simply won't work, if you have the points on the path
> >>>>>> very
> >>>>>> > discrete and far apart. You need to compute tangent and normal to
> >>>>>> the
> >>>>>> > path, so how do you do that at corners on a path with very few
> >>>>>> points?
> >>>>>> > There may be end effects in this computation, which will be more of
> >>>>>> a
> >>>>>> > nuisance if you have only four points. One of the obvious
> >>>>>> algorithms for
> >>>>>> > choosing the rotation of the sections relies on the path points
> >>>>>> being close
> >>>>>> > together and may produce bizarre results when they are too far
> >>>>>> apart.
> >>>>>> >
> >>>>>> > On Fri, Jan 27, 2023 at 4:39 AM Guenther Sohler <
> >>>>>> guenther.sohler@gmail.com>
> >>>>>> > wrote:
> >>>>>> >
> >>>>>> > > Adrian,
> >>>>>> > > Thank you for the hint and the direct link.
> >>>>>> > > I am happy to compare my implementation against yours to see
> >>>>>> where are the
> >>>>>> > > differences.
> >>>>>> > >
> >>>>>> > >
> >>>>>> > > Sanjeer, Thank you for your input.
> >>>>>> > > Your output looks very impressive and I want to reach that too.
> >>>>>> > > Personally I believe the challenge is to get it correct with very
> >>>>>> few
> >>>>>> > > points first.
> >>>>>> > > The error will be much more clearly visible when choosing few
> >>>>>> points.
> >>>>>> > > Finally, using many points to make it look smooth is just
> >>>>>> exercise.
> >>>>>> > > Probably
> >>>>>> > > spline and many other functions are viable.
> >>>>>> > > Maybe its also there in BOSL2, will check later.
> >>>>>> > >
> >>>>>> > > Thank you for your answers!
> >>>>>> > >
> >>>>>> > >
> >>>>>> > >
> >>>>>> > >
> >>>>>> > > On Thu, Jan 26, 2023 at 10:50 PM Adrian Mariano <avm4@cornell.edu>
> >>>>>> wrote:
> >>>>>> > >
> >>>>>> > >> Guenther, I'm a little unsure of your goal here. If you are
> >>>>>> excited to
> >>>>>> > >> implement path_sweep for the fun of it that's fine, of course,
> >>>>>> but this has
> >>>>>> > >> been done before by many people in OpenSCAD, starting with
> >>>>>> > >> list-comprehension-demos and also in dotSCAD, and BOSL2. These
> >>>>>> methods
> >>>>>> > >> exist already as OpenSCAD code. so a demonstration isn't needed
> >>>>>> to show the
> >>>>>> > >> possibilities. There are some very difficult questions about how
> >>>>>> to rotate
> >>>>>> > >> the cross sections as you move around the path, and yes, it's
> >>>>>> entirely
> >>>>>> > >> possible that you've gotten it wrong...assuming that you can
> >>>>>> figure out
> >>>>>> > >> what "wrong" means. It's not clear. There was a very long
> >>>>>> thread on the
> >>>>>> > >> forum many years ago about the various complications. I
> >>>>>> implemented
> >>>>>> > >> several different algorithms in BOSL2 for choosing how to line
> >>>>>> up the
> >>>>>> > >> sections. You might want to take a look to get more
> >>>>>> understanding of the
> >>>>>> > >> issues.
> >>>>>> > >>
> >>>>>> > >>
> >>>>>> https://github.com/revarbat/BOSL2/wiki/skin.scad#functionmodule-path_sweep
> >>>>>> > >>
> >>>>>> > >>
> >>>>>> > >> On Thu, Jan 26, 2023 at 11:26 AM Guenther Sohler <
> >>>>>> > >> guenther.sohler@gmail.com> wrote:
> >>>>>> > >>
> >>>>>> > >>> Hi List,
> >>>>>> > >>>
> >>>>>> > >>> right now i am attempting to add a path_extrude function to
> >>>>>> openscad
> >>>>>> > >>> A demonstration what i am talking about is here:
> >>>>>> > >>>
> >>>>>> > >>> https://youtu.be/igMupYGvX1s
> >>>>>> > >>>
> >>>>>> > >>> (sorry, its in python, but still i hope you get the idea. )
> >>>>>> > >>> This shows an arbitrary path_extrude of a square,
> >>>>>> > >>> but in the video you can clearly see the triangles in the faces,
> >>>>>> > >>> so i believe the cross section at the joints is not correct.
> >>>>>> > >>> IMHO the square must turn to a deltoid especially when the base
> >>>>>> square
> >>>>>> > >>> is rotated by 45 degrees to be correct.
> >>>>>> > >>> Can anybody shade some light on that for me ?
> >>>>>> > >>>
> >>>>>> > >>>
> >>>>>> > >>> _______________________________________________
> >>>>>> > >>> OpenSCAD mailing list
> >>>>>> > >>> To unsubscribe send an email to
> >>>>>> discuss-leave@lists.openscad.org
> >>>>>> > >>>
> >>>>>> > >> _______________________________________________
> >>>>>> > >> OpenSCAD mailing list
> >>>>>> > >> To unsubscribe send an email to discuss-leave@lists.openscad.org
> >>>>>> > >>
> >>>>>> > > _______________________________________________
> >>>>>> > > OpenSCAD mailing list
> >>>>>> > > To unsubscribe send an email to discuss-leave@lists.openscad.org
> >>>>>> > >
> >>>>>>
> >>>>>> > _______________________________________________
> >>>>>> > OpenSCAD mailing list
> >>>>>> > To unsubscribe send an email to discuss-leave@lists.openscad.org
> >>>>>>
> >>>>>>
> >>>>>> --
> >>>>>> ** R.E.Wolff@BitWizard.nl ** https://www.BitWizard.nl/ **
> >>>>>> +31-15-2049110 **
> >>>>>> ** Delftechpark 11 2628 XJ Delft, The Netherlands. KVK:
> >>>>>> 27239233 **
> >>>>>> f equals m times a. When your f is steady, and your m is going down
> >>>>>> your a is going up. -- Chris Hadfield about flying up the space
> >>>>>> shuttle.
> >>>>>> _______________________________________________
> >>>>>> OpenSCAD mailing list
> >>>>>> To unsubscribe send an email to discuss-leave@lists.openscad.org
> >>>>>>
> >>>>> _______________________________________________
> >>>>> OpenSCAD mailing list
> >>>>> To unsubscribe send an email to discuss-leave@lists.openscad.org
> >>>>>
> >>>> _______________________________________________
> >>>> OpenSCAD mailing list
> >>>> To unsubscribe send an email to discuss-leave@lists.openscad.org
> >>>>
> >>> _______________________________________________
> >>> OpenSCAD mailing list
> >>> To unsubscribe send an email to discuss-leave@lists.openscad.org
> >>>
> >> _______________________________________________
> >> OpenSCAD mailing list
> >> To unsubscribe send an email to discuss-leave@lists.openscad.org
> >>
> > _______________________________________________
> > OpenSCAD mailing list
> > To unsubscribe send an email to discuss-leave@lists.openscad.org
> >
> _______________________________________________
> OpenSCAD mailing list
> To unsubscribe send an email to discuss-leave@lists.openscad.org
--
** R.E.Wolff@BitWizard.nl ** https://www.BitWizard.nl/ ** +31-15-2049110 **
** Delftechpark 11 2628 XJ Delft, The Netherlands. KVK: 27239233 **
f equals m times a. When your f is steady, and your m is going down
your a is going up. -- Chris Hadfield about flying up the space shuttle.
AM
Adrian Mariano
Sun, Jan 29, 2023 4:30 PM
Rogier, path_extrude2d() is a limited module that you should use only in
the case where you can't access the points in your geometry. It will be
slow, and is likely to produce an inferior result. It works by creating
short extrusions of your geometry and then joining them with
rotate_extruded joint sections that slightly overlap.
It sounds like you made your profile using beziers, which means you have
access to the profile as a point list. So unless your path produces
self-intersections, you should therefore be using path_sweep, which will
let you twist and will be much faster. It creates a single polyhedron,
https://github.com/revarbat/BOSL2/wiki/skin.scad#functionmodule-path_sweep
For your more complicated task where you would like to change the cross
section as you go, it can be done, but I don't know enough about your plan
to say which way is the best. If you can characterize your goal by saying
you want to sweep along the path but also you want to apply some other
transformation to the profile at different points in the path, then you can
do that using the generic sweep() module. The sweep module constructs a
polyhedron by taking your profile and applying a list of transformations to
it to define the cross sections. The cross sections are then linked up to
create a polyhedron. In fact, the way path_sweep() works is by computing a
transformation list that it passes to sweep. So if you want to make a
modified path_sweep() the simplest method would be to invoke path_sweep()
with transforms=true to get that transformation list. Then you multiply in
your own modifications and call sweep().
If what you want to do involves changes in the form that are not a
transformation, then you need to use skin() to do the job. You would
compute all the cross sections and invoke skin, or maybe
vnf_vertex_array(). It might still be advantageous to get the
transformation list from path_sweep() to use as a starting point.
The situation with having path_extrude() in OpenSCAD has been discussed I
think as long ago as 2015, with an extremely long thread on this forum.
The problem is not that nobody sat down to write the code. The problem is
that nobody was able to actually define the behavior of what path_extrude
should do. So somebody who wants to get path_extrude() into OpenSCAD
really needs to focus not on the implementation, but on understanding the
full complexity of the problem and presenting a coherent and complete
resolution of all the issues and complexity. Then and only then does it
make sense to pursue implementation, once there is some kind of agreement
from other developers that a good approach has been identified. Writing
code that handles a few easy cases will go nowhere.
Perhaps the right answer might be to push for a geometry based equivalent
to the sweep() module. It would be a huge advantage if we had a generic
sweep() in native OpenSCAD that accepted a list of transformation matrices
and then operated on 2d geometry to link up the result into a polyhedron,
where it was not constrained by the requirement that we avoid
self-intersection. I think there are still complications, but many fewer
complications than trying to do path_extrude().
On Sun, Jan 29, 2023 at 10:30 AM Rogier Wolff R.E.Wolff@bitwizard.nl
wrote:
Hi all,
With all the work on path_extrude I got "nerd-sniped" into making some
wings. I downloaded BOSL2, used a bezier representation to generate
the 2D cross section of a wing (NACA4412 IIRC).
I then extruded it with "linear_extrude" and was able to generate a 3D
wing. Using twist I was able to put a twist in the wing (*). Using scale,
I was able to make a tapered wing. Looking good. I'm confident that I
can generate a swept wing as well. (But I haven't actually done it yet).
Now there are still two things that I'd want to do with this. One is
to sweep/extrude along a path. I tried that with path_extrude_2d from
BOSL2. That works, but I lose the ability to twist and scale.
This would allow me to make a wing that has a curve to it instead of
just being swept and straight.
Another application is the new toroidal props that are in the news
this week. (google toroidal props and you'll find them).
The last application is to make a fan blade. Those have a wing profile
that will get bigger further to the outside. And I might want to sweep
the wing-profile back a bit to experiment. And this too has a tilt
that changes along the extrusion lenght.
If someone knows that this can already be done... I'd like to know
about it. If not, fine. No worries.
But for those who are working on another path_extrude implementation,
this is a "use-case" that you might want to support. Or not. Keep
it in mind....
Roger.
(*) The twist together with the wing sweep ensures good "stall"
characteristics of the aircraft. If you don't believe me that wings
have this twist look at a hanglider from behind at takeoff
https://www.pond5.com/stock-footage/item/64591446-hang-glider-takeoff
The thumbnail of this footage is the image I was looking for.
Even if this is a picture of a hang glider, airliners have this too.
The reason for such a twist in the wing is that if a stall is
imminent, the wing stalls (loses lift) in the middle first, while the
wingtips, which are further back still have lift. Thus the nose drops
and the aircraft takes up speed again and continues to fly. This'll
cost you some height but at least you're flying again which is
preferable to being helpless until you hit the ground. (AF447 managed
to hit the ocean by not allowing the plane to exit the stall by giving
lots of "nose up" input. Turkish 1951 and Asiana 214 hit the ground
because they didn't have enough height for the stall recovery to
work. Most cases where it DOES work end up being an incident instead
of an accident.)
On Sat, Jan 28, 2023 at 07:43:04AM +0530, Sanjeev Prabhakar wrote:
Looks great 👌
On Sat, 28 Jan, 2023, 4:39 am Guenther Sohler, <
Hi Adriano,
Sorry, I got you wrong apparently.
I am now using a rectangle 3x10 as the extrude path and I have created
polygon, which looks like an "U" Shape.
The thing rotates successfully around the extrusion axis all 360
and there aren't manifold problems at all during that time.
In each corner the successor segment has exactly one orientation where
fits, so I believe it's not ambiguous at all.
And yes, my implementation is missing the "closed loop option" but I
implement that next.
[image: image.png]
On Fri, Jan 27, 2023 at 11:09 PM Adrian Mariano avm4@cornell.edu
The rectangle I was talking about is the path, not the cross section.
The point is that you need to decide how to orient the cross section
each corner of the rectangle, and an ambiguity exists that does not
in the case with a smooth curve, so simply using the half-angle may
the desired result. Video didn't seem notable. Not sure what I was
supposed to be seeing.
On Fri, Jan 27, 2023 at 4:51 PM Guenther Sohler <
guenther.sohler@gmail.com> wrote:
Hi Adrian, when i Use an rectangle 10x3 as a Profile , this Profile
present in any Cross Section along the path when little apart from
Corners of course.
This ist Independent from the original Rotation of the path or the
Angles between the path Segments.as Well as i. Bosl2: faces must Not
interec.but watch the Video. Pictures Tell more than 1000 words.
Adrian Mariano avm4@cornell.edu schrieb am Fr., 27. Jän. 2023,
Guenther, I'm not sure what you mean. Having points widely spaced
be done, of course. It's just harder to define the problem, I
perhaps not the place to start. Nothing in BOSL2 assumes anything
point spacing, but if the points are far apart you may find that
like the automatically computed derivatives, especially if the path
short. And transitions between the sections may be more likely to
something odd. Consider a rectangle that is 10 x 3. What are the
derivatives at the end? Are they 45 deg angles? Or do they
aspect ratio of the rectangle? Either option can be defended as
The BOSL2 implementation is very general and should be able to
situation, as long as the sections don't lead to a
Hi Adrian,
There are many great effects, which you can achieve when having
points of the path wide enough apart.
Of course The Tangent and the normals (but especially the angle
between x and y axis) need be correct, but then it looks really
With my approach I can easily immitate your solution by using many
points close together and skip the axis scaling(maybe worth an
name .
On Fri, Jan 27, 2023 at 1:08 PM Rogier Wolff <
FYI,
Freya Holmer worked on defining a "normal" or "reference" vector
a path recently. She works in "gaming", so she has built what she
found out into some library that she is making. So for those
to delve into that, it probably pays to watch her videos on
and then delve into figuring out if she has published the code.
That said, she's interested in fluid curves and motions. So all
"paths" are neat splines....
Roger.
On Fri, Jan 27, 2023 at 06:43:11AM -0500, Adrian Mariano wrote:
I agree with Sanjeev that it's better to focus on the case of
together. The problem is that some of the approaches are
define, or simply won't work, if you have the points on the path
discrete and far apart. You need to compute tangent and normal
path, so how do you do that at corners on a path with very few
There may be end effects in this computation, which will be
nuisance if you have only four points. One of the obvious
choosing the rotation of the sections relies on the path points
together and may produce bizarre results when they are too far
On Fri, Jan 27, 2023 at 4:39 AM Guenther Sohler <
Adrian,
Thank you for the hint and the direct link.
I am happy to compare my implementation against yours to see
differences.
Sanjeer, Thank you for your input.
Your output looks very impressive and I want to reach that
Personally I believe the challenge is to get it correct with
points first.
The error will be much more clearly visible when choosing few
Finally, using many points to make it look smooth is just
Probably
spline and many other functions are viable.
Maybe its also there in BOSL2, will check later.
Thank you for your answers!
On Thu, Jan 26, 2023 at 10:50 PM Adrian Mariano <
Guenther, I'm a little unsure of your goal here. If you are
implement path_sweep for the fun of it that's fine, of
been done before by many people in OpenSCAD, starting with
list-comprehension-demos and also in dotSCAD, and BOSL2.
exist already as OpenSCAD code. so a demonstration isn't
possibilities. There are some very difficult questions about
the cross sections as you move around the path, and yes, it's
possible that you've gotten it wrong...assuming that you can
what "wrong" means. It's not clear. There was a very long
forum many years ago about the various complications. I
several different algorithms in BOSL2 for choosing how to
sections. You might want to take a look to get more
Hi List,
right now i am attempting to add a path_extrude function to
A demonstration what i am talking about is here:
https://youtu.be/igMupYGvX1s
(sorry, its in python, but still i hope you get the idea. )
This shows an arbitrary path_extrude of a square,
but in the video you can clearly see the triangles in the
so i believe the cross section at the joints is not correct.
IMHO the square must turn to a deltoid especially when the
is rotated by 45 degrees to be correct.
Can anybody shade some light on that for me ?
OpenSCAD mailing list
To unsubscribe send an email to
OpenSCAD mailing list
To unsubscribe send an email to
OpenSCAD mailing list
To unsubscribe send an email to
OpenSCAD mailing list
To unsubscribe send an email to
Rogier, path_extrude2d() is a limited module that you should use only in
the case where you can't access the points in your geometry. It will be
slow, and is likely to produce an inferior result. It works by creating
short extrusions of your geometry and then joining them with
rotate_extruded joint sections that slightly overlap.
It sounds like you made your profile using beziers, which means you have
access to the profile as a point list. So unless your path produces
self-intersections, you should therefore be using path_sweep, which will
let you twist and will be much faster. It creates a single polyhedron,
https://github.com/revarbat/BOSL2/wiki/skin.scad#functionmodule-path_sweep
For your more complicated task where you would like to change the cross
section as you go, it can be done, but I don't know enough about your plan
to say which way is the best. If you can characterize your goal by saying
you want to sweep along the path but also you want to apply some other
transformation to the profile at different points in the path, then you can
do that using the generic sweep() module. The sweep module constructs a
polyhedron by taking your profile and applying a list of transformations to
it to define the cross sections. The cross sections are then linked up to
create a polyhedron. In fact, the way path_sweep() works is by computing a
transformation list that it passes to sweep. So if you want to make a
modified path_sweep() the simplest method would be to invoke path_sweep()
with transforms=true to get that transformation list. Then you multiply in
your own modifications and call sweep().
If what you want to do involves changes in the form that are not a
transformation, then you need to use skin() to do the job. You would
compute all the cross sections and invoke skin, or maybe
vnf_vertex_array(). It might still be advantageous to get the
transformation list from path_sweep() to use as a starting point.
The situation with having path_extrude() in OpenSCAD has been discussed I
think as long ago as 2015, with an extremely long thread on this forum.
The problem is not that nobody sat down to write the code. The problem is
that nobody was able to actually define the behavior of what path_extrude
should do. So somebody who wants to get path_extrude() into OpenSCAD
really needs to focus not on the implementation, but on understanding the
full complexity of the problem and presenting a coherent and complete
resolution of all the issues and complexity. Then and only then does it
make sense to pursue implementation, once there is some kind of agreement
from other developers that a good approach has been identified. Writing
code that handles a few easy cases will go nowhere.
Perhaps the right answer might be to push for a geometry based equivalent
to the sweep() module. It would be a huge advantage if we had a generic
sweep() in native OpenSCAD that accepted a list of transformation matrices
and then operated on 2d geometry to link up the result into a polyhedron,
where it was not constrained by the requirement that we avoid
self-intersection. I think there are still complications, but many fewer
complications than trying to do path_extrude().
On Sun, Jan 29, 2023 at 10:30 AM Rogier Wolff <R.E.Wolff@bitwizard.nl>
wrote:
> Hi all,
>
> With all the work on path_extrude I got "nerd-sniped" into making some
> wings. I downloaded BOSL2, used a bezier representation to generate
> the 2D cross section of a wing (NACA4412 IIRC).
>
> I then extruded it with "linear_extrude" and was able to generate a 3D
> wing. Using twist I was able to put a twist in the wing (*). Using scale,
> I was able to make a tapered wing. Looking good. I'm confident that I
> can generate a swept wing as well. (But I haven't actually done it yet).
>
> Now there are still two things that I'd want to do with this. One is
> to sweep/extrude along a path. I tried that with path_extrude_2d from
> BOSL2. That works, but I lose the ability to twist and scale.
>
> This would allow me to make a wing that has a curve to it instead of
> just being swept and straight.
>
> Another application is the new toroidal props that are in the news
> this week. (google toroidal props and you'll find them).
>
> The last application is to make a fan blade. Those have a wing profile
> that will get bigger further to the outside. And I might want to sweep
> the wing-profile back a bit to experiment. And this too has a tilt
> that changes along the extrusion lenght.
>
>
> If someone knows that this can already be done... I'd like to know
> about it. If not, fine. No worries.
>
> But for those who are working on another path_extrude implementation,
> this is a "use-case" that you might want to support. Or not. Keep
> it in mind....
>
> Roger.
>
>
> (*) The twist together with the wing sweep ensures good "stall"
> characteristics of the aircraft. If you don't believe me that wings
> have this twist look at a hanglider from behind at takeoff
> https://www.pond5.com/stock-footage/item/64591446-hang-glider-takeoff
> The thumbnail of this footage is the image I was looking for.
> Even if this is a picture of a hang glider, airliners have this too.
>
> The reason for such a twist in the wing is that if a stall is
> imminent, the wing stalls (loses lift) in the middle first, while the
> wingtips, which are further back still have lift. Thus the nose drops
> and the aircraft takes up speed again and continues to fly. This'll
> cost you some height but at least you're flying again which is
> preferable to being helpless until you hit the ground. (AF447 managed
> to hit the ocean by not allowing the plane to exit the stall by giving
> lots of "nose up" input. Turkish 1951 and Asiana 214 hit the ground
> because they didn't have enough height for the stall recovery to
> work. Most cases where it DOES work end up being an incident instead
> of an accident.)
>
> On Sat, Jan 28, 2023 at 07:43:04AM +0530, Sanjeev Prabhakar wrote:
> > Looks great 👌
> >
> > On Sat, 28 Jan, 2023, 4:39 am Guenther Sohler, <
> guenther.sohler@gmail.com>
> > wrote:
> >
> > > Hi Adriano,
> > >
> > > Sorry, I got you wrong apparently.
> > > I am now using a rectangle 3x10 as the extrude path and I have created
> a
> > > polygon, which looks like an "U" Shape.
> > > The thing rotates successfully around the extrusion axis all 360
> degrees
> > > and there aren't manifold problems at all during that time.
> > > In each corner the successor segment has exactly one orientation where
> it
> > > fits, so I believe it's not ambiguous at all.
> > >
> > > And yes, my implementation is missing the "closed loop option" but I
> can
> > > implement that next.
> > >
> > >
> > >
> > > [image: image.png]
> > >
> > > On Fri, Jan 27, 2023 at 11:09 PM Adrian Mariano <avm4@cornell.edu>
> wrote:
> > >
> > >> The rectangle I was talking about is the path, not the cross section.
> > >> The point is that you need to decide how to orient the cross section
> at
> > >> each corner of the rectangle, and an ambiguity exists that does not
> exist
> > >> in the case with a smooth curve, so simply using the half-angle may
> not be
> > >> the desired result. Video didn't seem notable. Not sure what I was
> > >> supposed to be seeing.
> > >>
> > >> On Fri, Jan 27, 2023 at 4:51 PM Guenther Sohler <
> > >> guenther.sohler@gmail.com> wrote:
> > >>
> > >>> Hi Adrian, when i Use an rectangle 10x3 as a Profile , this Profile
> is
> > >>> present in any Cross Section along the path when little apart from
> the
> > >>> Corners of course.
> > >>> This ist Independent from the original Rotation of the path or the
> > >>> Angles between the path Segments.as Well as i. Bosl2: faces must Not
> > >>> interec.but watch the Video. Pictures Tell more than 1000 words.
> > >>>
> > >>> Adrian Mariano <avm4@cornell.edu> schrieb am Fr., 27. Jän. 2023,
> 22:31:
> > >>>
> > >>>> Guenther, I'm not sure what you mean. Having points widely spaced
> can
> > >>>> be done, of course. It's just harder to define the problem, I
> think, so
> > >>>> perhaps not the place to start. Nothing in BOSL2 assumes anything
> about
> > >>>> point spacing, but if the points are far apart you may find that
> you don't
> > >>>> like the automatically computed derivatives, especially if the path
> is very
> > >>>> short. And transitions between the sections may be more likely to
> do
> > >>>> something odd. Consider a rectangle that is 10 x 3. What are the
> > >>>> derivatives at the end? Are they 45 deg angles? Or do they
> respect the
> > >>>> aspect ratio of the rectangle? Either option can be defended as
> correct.
> > >>>> The BOSL2 implementation is very general and should be able to
> handle any
> > >>>> situation, as long as the sections don't lead to a
> self-intersecting and
> > >>>> hence invalid polyhedron.
> > >>>>
> > >>>> On Fri, Jan 27, 2023 at 3:39 PM Guenther Sohler <
> > >>>> guenther.sohler@gmail.com> wrote:
> > >>>>
> > >>>>> Hi Adrian,
> > >>>>> There are many great effects, which you can achieve when having
> the
> > >>>>> points of the path wide enough apart.
> > >>>>> Of course The Tangent and the normals (but especially the angle
> > >>>>> between x and y axis) need be correct, but then it looks really
> cool.
> > >>>>> With my approach I can easily immitate your solution by using many
> > >>>>> points close together and skip the axis scaling(maybe worth an
> option)
> > >>>>> My Vision and my approach which I have chosen actually came true.
> > >>>>>
> > >>>>> https://www.youtube.com/watch?v=1m5OeK2lW4U
> > >>>>>
> > >>>>> if it's too different from BOSL extrude maybe we can choose
> another
> > >>>>> name .
> > >>>>>
> > >>>>> On Fri, Jan 27, 2023 at 1:08 PM Rogier Wolff <
> R.E.Wolff@bitwizard.nl>
> > >>>>> wrote:
> > >>>>>
> > >>>>>>
> > >>>>>> FYI,
> > >>>>>>
> > >>>>>> Freya Holmer worked on defining a "normal" or "reference" vector
> along
> > >>>>>> a path recently. She works in "gaming", so she has built what she
> > >>>>>> found out into some library that she is making. So for those
> wishing
> > >>>>>> to delve into that, it probably pays to watch her videos on
> youtube
> > >>>>>> and then delve into figuring out if she has published the code.
> > >>>>>>
> > >>>>>> That said, she's interested in fluid curves and motions. So all
> her
> > >>>>>> "paths" are neat splines....
> > >>>>>>
> > >>>>>> Roger.
> > >>>>>>
> > >>>>>> On Fri, Jan 27, 2023 at 06:43:11AM -0500, Adrian Mariano wrote:
> > >>>>>> > I agree with Sanjeev that it's better to focus on the case of
> > >>>>>> points close
> > >>>>>> > together. The problem is that some of the approaches are
> difficult
> > >>>>>> to
> > >>>>>> > define, or simply won't work, if you have the points on the path
> > >>>>>> very
> > >>>>>> > discrete and far apart. You need to compute tangent and normal
> to
> > >>>>>> the
> > >>>>>> > path, so how do you do that at corners on a path with very few
> > >>>>>> points?
> > >>>>>> > There may be end effects in this computation, which will be
> more of
> > >>>>>> a
> > >>>>>> > nuisance if you have only four points. One of the obvious
> > >>>>>> algorithms for
> > >>>>>> > choosing the rotation of the sections relies on the path points
> > >>>>>> being close
> > >>>>>> > together and may produce bizarre results when they are too far
> > >>>>>> apart.
> > >>>>>> >
> > >>>>>> > On Fri, Jan 27, 2023 at 4:39 AM Guenther Sohler <
> > >>>>>> guenther.sohler@gmail.com>
> > >>>>>> > wrote:
> > >>>>>> >
> > >>>>>> > > Adrian,
> > >>>>>> > > Thank you for the hint and the direct link.
> > >>>>>> > > I am happy to compare my implementation against yours to see
> > >>>>>> where are the
> > >>>>>> > > differences.
> > >>>>>> > >
> > >>>>>> > >
> > >>>>>> > > Sanjeer, Thank you for your input.
> > >>>>>> > > Your output looks very impressive and I want to reach that
> too.
> > >>>>>> > > Personally I believe the challenge is to get it correct with
> very
> > >>>>>> few
> > >>>>>> > > points first.
> > >>>>>> > > The error will be much more clearly visible when choosing few
> > >>>>>> points.
> > >>>>>> > > Finally, using many points to make it look smooth is just
> > >>>>>> exercise.
> > >>>>>> > > Probably
> > >>>>>> > > spline and many other functions are viable.
> > >>>>>> > > Maybe its also there in BOSL2, will check later.
> > >>>>>> > >
> > >>>>>> > > Thank you for your answers!
> > >>>>>> > >
> > >>>>>> > >
> > >>>>>> > >
> > >>>>>> > >
> > >>>>>> > > On Thu, Jan 26, 2023 at 10:50 PM Adrian Mariano <
> avm4@cornell.edu>
> > >>>>>> wrote:
> > >>>>>> > >
> > >>>>>> > >> Guenther, I'm a little unsure of your goal here. If you are
> > >>>>>> excited to
> > >>>>>> > >> implement path_sweep for the fun of it that's fine, of
> course,
> > >>>>>> but this has
> > >>>>>> > >> been done before by many people in OpenSCAD, starting with
> > >>>>>> > >> list-comprehension-demos and also in dotSCAD, and BOSL2.
> These
> > >>>>>> methods
> > >>>>>> > >> exist already as OpenSCAD code. so a demonstration isn't
> needed
> > >>>>>> to show the
> > >>>>>> > >> possibilities. There are some very difficult questions about
> how
> > >>>>>> to rotate
> > >>>>>> > >> the cross sections as you move around the path, and yes, it's
> > >>>>>> entirely
> > >>>>>> > >> possible that you've gotten it wrong...assuming that you can
> > >>>>>> figure out
> > >>>>>> > >> what "wrong" means. It's not clear. There was a very long
> > >>>>>> thread on the
> > >>>>>> > >> forum many years ago about the various complications. I
> > >>>>>> implemented
> > >>>>>> > >> several different algorithms in BOSL2 for choosing how to
> line
> > >>>>>> up the
> > >>>>>> > >> sections. You might want to take a look to get more
> > >>>>>> understanding of the
> > >>>>>> > >> issues.
> > >>>>>> > >>
> > >>>>>> > >>
> > >>>>>>
> https://github.com/revarbat/BOSL2/wiki/skin.scad#functionmodule-path_sweep
> > >>>>>> > >>
> > >>>>>> > >>
> > >>>>>> > >> On Thu, Jan 26, 2023 at 11:26 AM Guenther Sohler <
> > >>>>>> > >> guenther.sohler@gmail.com> wrote:
> > >>>>>> > >>
> > >>>>>> > >>> Hi List,
> > >>>>>> > >>>
> > >>>>>> > >>> right now i am attempting to add a path_extrude function to
> > >>>>>> openscad
> > >>>>>> > >>> A demonstration what i am talking about is here:
> > >>>>>> > >>>
> > >>>>>> > >>> https://youtu.be/igMupYGvX1s
> > >>>>>> > >>>
> > >>>>>> > >>> (sorry, its in python, but still i hope you get the idea. )
> > >>>>>> > >>> This shows an arbitrary path_extrude of a square,
> > >>>>>> > >>> but in the video you can clearly see the triangles in the
> faces,
> > >>>>>> > >>> so i believe the cross section at the joints is not correct.
> > >>>>>> > >>> IMHO the square must turn to a deltoid especially when the
> base
> > >>>>>> square
> > >>>>>> > >>> is rotated by 45 degrees to be correct.
> > >>>>>> > >>> Can anybody shade some light on that for me ?
> > >>>>>> > >>>
> > >>>>>> > >>>
> > >>>>>> > >>> _______________________________________________
> > >>>>>> > >>> OpenSCAD mailing list
> > >>>>>> > >>> To unsubscribe send an email to
> > >>>>>> discuss-leave@lists.openscad.org
> > >>>>>> > >>>
> > >>>>>> > >> _______________________________________________
> > >>>>>> > >> OpenSCAD mailing list
> > >>>>>> > >> To unsubscribe send an email to
> discuss-leave@lists.openscad.org
> > >>>>>> > >>
> > >>>>>> > > _______________________________________________
> > >>>>>> > > OpenSCAD mailing list
> > >>>>>> > > To unsubscribe send an email to
> discuss-leave@lists.openscad.org
> > >>>>>> > >
> > >>>>>>
> > >>>>>> > _______________________________________________
> > >>>>>> > OpenSCAD mailing list
> > >>>>>> > To unsubscribe send an email to
> discuss-leave@lists.openscad.org
> > >>>>>>
> > >>>>>>
> > >>>>>> --
> > >>>>>> ** R.E.Wolff@BitWizard.nl ** https://www.BitWizard.nl/ **
> > >>>>>> +31-15-2049110 **
> > >>>>>> ** Delftechpark 11 2628 XJ Delft, The Netherlands. KVK:
> > >>>>>> 27239233 **
> > >>>>>> f equals m times a. When your f is steady, and your m is going
> down
> > >>>>>> your a is going up. -- Chris Hadfield about flying up the space
> > >>>>>> shuttle.
> > >>>>>> _______________________________________________
> > >>>>>> OpenSCAD mailing list
> > >>>>>> To unsubscribe send an email to discuss-leave@lists.openscad.org
> > >>>>>>
> > >>>>> _______________________________________________
> > >>>>> OpenSCAD mailing list
> > >>>>> To unsubscribe send an email to discuss-leave@lists.openscad.org
> > >>>>>
> > >>>> _______________________________________________
> > >>>> OpenSCAD mailing list
> > >>>> To unsubscribe send an email to discuss-leave@lists.openscad.org
> > >>>>
> > >>> _______________________________________________
> > >>> OpenSCAD mailing list
> > >>> To unsubscribe send an email to discuss-leave@lists.openscad.org
> > >>>
> > >> _______________________________________________
> > >> OpenSCAD mailing list
> > >> To unsubscribe send an email to discuss-leave@lists.openscad.org
> > >>
> > > _______________________________________________
> > > OpenSCAD mailing list
> > > To unsubscribe send an email to discuss-leave@lists.openscad.org
> > >
>
>
>
> > _______________________________________________
> > OpenSCAD mailing list
> > To unsubscribe send an email to discuss-leave@lists.openscad.org
>
>
> --
> ** R.E.Wolff@BitWizard.nl ** https://www.BitWizard.nl/ ** +31-15-2049110
> **
> ** Delftechpark 11 2628 XJ Delft, The Netherlands. KVK: 27239233 **
> f equals m times a. When your f is steady, and your m is going down
> your a is going up. -- Chris Hadfield about flying up the space shuttle.
> _______________________________________________
> OpenSCAD mailing list
> To unsubscribe send an email to discuss-leave@lists.openscad.org
>
RW
Rogier Wolff
Mon, Jan 30, 2023 12:36 PM
On Sun, Jan 29, 2023 at 11:30:06AM -0500, Adrian Mariano wrote:
I think this does everything I'll need, except for allowing the shape
to morph along the way (besides twisting and scaling). Thanks for the
pointer.
Roger.
--
** R.E.Wolff@BitWizard.nl ** https://www.BitWizard.nl/ ** +31-15-2049110 **
** Delftechpark 11 2628 XJ Delft, The Netherlands. KVK: 27239233 **
f equals m times a. When your f is steady, and your m is going down
your a is going up. -- Chris Hadfield about flying up the space shuttle.
On Sun, Jan 29, 2023 at 11:30:06AM -0500, Adrian Mariano wrote:
> let you twist and will be much faster. It creates a single polyhedron,
>
> https://github.com/revarbat/BOSL2/wiki/skin.scad#functionmodule-path_sweep
I think this does everything I'll need, except for allowing the shape
to morph along the way (besides twisting and scaling). Thanks for the
pointer.
Roger.
--
** R.E.Wolff@BitWizard.nl ** https://www.BitWizard.nl/ ** +31-15-2049110 **
** Delftechpark 11 2628 XJ Delft, The Netherlands. KVK: 27239233 **
f equals m times a. When your f is steady, and your m is going down
your a is going up. -- Chris Hadfield about flying up the space shuttle.
RW
Rogier Wolff
Mon, Jan 30, 2023 8:07 PM
On Sun, Jan 29, 2023 at 11:30:06AM -0500, Adrian Mariano wrote:
Rogier, path_extrude2d() is a limited module that you should use only in
the case where you can't access the points in your geometry. It will be
slow, and is likely to produce an inferior result. It works by creating
short extrusions of your geometry and then joining them with
rotate_extruded joint sections that slightly overlap.
It sounds like you made your profile using beziers, which means you have
access to the profile as a point list. So unless your path produces
self-intersections, you should therefore be using path_sweep, which will
let you twist and will be much faster. It creates a single polyhedron,
OK Good.
Just to give you more of an understanding what I want to be able to do...
Many openscad examples do
cylinder (d=30,h=30); // hub.
linear_extrude (height=30, twist=100, $fn=100)
for (a=[0:120:359]) rotate (a) translate ([15,-1]) square ([45,2]);
as an example of a fan blade. This is very suboptimal if you actually want
performance.
The blades just are flat surfaces to the oncoming air. An actual
wing profile is much more efficient in getting the air to move. So...
along an arc concentric to the axis of rotation, the intersection should
be a wing profile.
t=1; r=15+45*$t;
intersection () {
fan ();
translate ([0,0,-1])
difference () {cylinder (r=r,h=32);cylinder (r=r-t,h=32);}
}
Each of those slices should look like a wing profile.
The linear extrusion with twist does get one thing right. As this thing
rotates through 100 degrees, the air should get pushed 30mm along
the path through the fan.
If you assume the air is already moving at this 30mm/100degrees of
rotation of the fan, the fan blades are simply cutting through the air
at no aoa.
To optimize this, you need to start pushing the air, so you need an
angle-of-attack. And an airfoil as the cross section of the blade.
Roger.
https://github.com/revarbat/BOSL2/wiki/skin.scad#functionmodule-path_sweep
For your more complicated task where you would like to change the cross
section as you go, it can be done, but I don't know enough about your plan
to say which way is the best. If you can characterize your goal by saying
you want to sweep along the path but also you want to apply some other
transformation to the profile at different points in the path, then you can
do that using the generic sweep() module. The sweep module constructs a
polyhedron by taking your profile and applying a list of transformations to
it to define the cross sections. The cross sections are then linked up to
create a polyhedron. In fact, the way path_sweep() works is by computing a
transformation list that it passes to sweep. So if you want to make a
modified path_sweep() the simplest method would be to invoke path_sweep()
with transforms=true to get that transformation list. Then you multiply in
your own modifications and call sweep().
If what you want to do involves changes in the form that are not a
transformation, then you need to use skin() to do the job. You would
compute all the cross sections and invoke skin, or maybe
vnf_vertex_array(). It might still be advantageous to get the
transformation list from path_sweep() to use as a starting point.
The situation with having path_extrude() in OpenSCAD has been discussed I
think as long ago as 2015, with an extremely long thread on this forum.
The problem is not that nobody sat down to write the code. The problem is
that nobody was able to actually define the behavior of what path_extrude
should do. So somebody who wants to get path_extrude() into OpenSCAD
really needs to focus not on the implementation, but on understanding the
full complexity of the problem and presenting a coherent and complete
resolution of all the issues and complexity. Then and only then does it
make sense to pursue implementation, once there is some kind of agreement
from other developers that a good approach has been identified. Writing
code that handles a few easy cases will go nowhere.
Perhaps the right answer might be to push for a geometry based equivalent
to the sweep() module. It would be a huge advantage if we had a generic
sweep() in native OpenSCAD that accepted a list of transformation matrices
and then operated on 2d geometry to link up the result into a polyhedron,
where it was not constrained by the requirement that we avoid
self-intersection. I think there are still complications, but many fewer
complications than trying to do path_extrude().
On Sun, Jan 29, 2023 at 10:30 AM Rogier Wolff R.E.Wolff@bitwizard.nl
wrote:
Hi all,
With all the work on path_extrude I got "nerd-sniped" into making some
wings. I downloaded BOSL2, used a bezier representation to generate
the 2D cross section of a wing (NACA4412 IIRC).
I then extruded it with "linear_extrude" and was able to generate a 3D
wing. Using twist I was able to put a twist in the wing (*). Using scale,
I was able to make a tapered wing. Looking good. I'm confident that I
can generate a swept wing as well. (But I haven't actually done it yet).
Now there are still two things that I'd want to do with this. One is
to sweep/extrude along a path. I tried that with path_extrude_2d from
BOSL2. That works, but I lose the ability to twist and scale.
This would allow me to make a wing that has a curve to it instead of
just being swept and straight.
Another application is the new toroidal props that are in the news
this week. (google toroidal props and you'll find them).
The last application is to make a fan blade. Those have a wing profile
that will get bigger further to the outside. And I might want to sweep
the wing-profile back a bit to experiment. And this too has a tilt
that changes along the extrusion lenght.
If someone knows that this can already be done... I'd like to know
about it. If not, fine. No worries.
But for those who are working on another path_extrude implementation,
this is a "use-case" that you might want to support. Or not. Keep
it in mind....
Roger.
(*) The twist together with the wing sweep ensures good "stall"
characteristics of the aircraft. If you don't believe me that wings
have this twist look at a hanglider from behind at takeoff
https://www.pond5.com/stock-footage/item/64591446-hang-glider-takeoff
The thumbnail of this footage is the image I was looking for.
Even if this is a picture of a hang glider, airliners have this too.
The reason for such a twist in the wing is that if a stall is
imminent, the wing stalls (loses lift) in the middle first, while the
wingtips, which are further back still have lift. Thus the nose drops
and the aircraft takes up speed again and continues to fly. This'll
cost you some height but at least you're flying again which is
preferable to being helpless until you hit the ground. (AF447 managed
to hit the ocean by not allowing the plane to exit the stall by giving
lots of "nose up" input. Turkish 1951 and Asiana 214 hit the ground
because they didn't have enough height for the stall recovery to
work. Most cases where it DOES work end up being an incident instead
of an accident.)
On Sat, Jan 28, 2023 at 07:43:04AM +0530, Sanjeev Prabhakar wrote:
Looks great 👌
On Sat, 28 Jan, 2023, 4:39 am Guenther Sohler, <
Hi Adriano,
Sorry, I got you wrong apparently.
I am now using a rectangle 3x10 as the extrude path and I have created
polygon, which looks like an "U" Shape.
The thing rotates successfully around the extrusion axis all 360
and there aren't manifold problems at all during that time.
In each corner the successor segment has exactly one orientation where
fits, so I believe it's not ambiguous at all.
And yes, my implementation is missing the "closed loop option" but I
implement that next.
[image: image.png]
On Fri, Jan 27, 2023 at 11:09 PM Adrian Mariano avm4@cornell.edu
The rectangle I was talking about is the path, not the cross section.
The point is that you need to decide how to orient the cross section
each corner of the rectangle, and an ambiguity exists that does not
in the case with a smooth curve, so simply using the half-angle may
the desired result. Video didn't seem notable. Not sure what I was
supposed to be seeing.
On Fri, Jan 27, 2023 at 4:51 PM Guenther Sohler <
guenther.sohler@gmail.com> wrote:
Hi Adrian, when i Use an rectangle 10x3 as a Profile , this Profile
present in any Cross Section along the path when little apart from
Corners of course.
This ist Independent from the original Rotation of the path or the
Angles between the path Segments.as Well as i. Bosl2: faces must Not
interec.but watch the Video. Pictures Tell more than 1000 words.
Adrian Mariano avm4@cornell.edu schrieb am Fr., 27. Jän. 2023,
Guenther, I'm not sure what you mean. Having points widely spaced
be done, of course. It's just harder to define the problem, I
perhaps not the place to start. Nothing in BOSL2 assumes anything
point spacing, but if the points are far apart you may find that
like the automatically computed derivatives, especially if the path
short. And transitions between the sections may be more likely to
something odd. Consider a rectangle that is 10 x 3. What are the
derivatives at the end? Are they 45 deg angles? Or do they
aspect ratio of the rectangle? Either option can be defended as
The BOSL2 implementation is very general and should be able to
situation, as long as the sections don't lead to a
Hi Adrian,
There are many great effects, which you can achieve when having
points of the path wide enough apart.
Of course The Tangent and the normals (but especially the angle
between x and y axis) need be correct, but then it looks really
With my approach I can easily immitate your solution by using many
points close together and skip the axis scaling(maybe worth an
name .
On Fri, Jan 27, 2023 at 1:08 PM Rogier Wolff <
FYI,
Freya Holmer worked on defining a "normal" or "reference" vector
a path recently. She works in "gaming", so she has built what she
found out into some library that she is making. So for those
to delve into that, it probably pays to watch her videos on
and then delve into figuring out if she has published the code.
That said, she's interested in fluid curves and motions. So all
"paths" are neat splines....
Roger.
On Fri, Jan 27, 2023 at 06:43:11AM -0500, Adrian Mariano wrote:
I agree with Sanjeev that it's better to focus on the case of
together. The problem is that some of the approaches are
define, or simply won't work, if you have the points on the path
discrete and far apart. You need to compute tangent and normal
path, so how do you do that at corners on a path with very few
There may be end effects in this computation, which will be
nuisance if you have only four points. One of the obvious
choosing the rotation of the sections relies on the path points
together and may produce bizarre results when they are too far
On Fri, Jan 27, 2023 at 4:39 AM Guenther Sohler <
Adrian,
Thank you for the hint and the direct link.
I am happy to compare my implementation against yours to see
differences.
Sanjeer, Thank you for your input.
Your output looks very impressive and I want to reach that
Personally I believe the challenge is to get it correct with
points first.
The error will be much more clearly visible when choosing few
Finally, using many points to make it look smooth is just
Probably
spline and many other functions are viable.
Maybe its also there in BOSL2, will check later.
Thank you for your answers!
On Thu, Jan 26, 2023 at 10:50 PM Adrian Mariano <
Guenther, I'm a little unsure of your goal here. If you are
implement path_sweep for the fun of it that's fine, of
been done before by many people in OpenSCAD, starting with
list-comprehension-demos and also in dotSCAD, and BOSL2.
exist already as OpenSCAD code. so a demonstration isn't
possibilities. There are some very difficult questions about
the cross sections as you move around the path, and yes, it's
possible that you've gotten it wrong...assuming that you can
what "wrong" means. It's not clear. There was a very long
forum many years ago about the various complications. I
several different algorithms in BOSL2 for choosing how to
sections. You might want to take a look to get more
Hi List,
right now i am attempting to add a path_extrude function to
A demonstration what i am talking about is here:
https://youtu.be/igMupYGvX1s
(sorry, its in python, but still i hope you get the idea. )
This shows an arbitrary path_extrude of a square,
but in the video you can clearly see the triangles in the
so i believe the cross section at the joints is not correct.
IMHO the square must turn to a deltoid especially when the
is rotated by 45 degrees to be correct.
Can anybody shade some light on that for me ?
OpenSCAD mailing list
To unsubscribe send an email to
OpenSCAD mailing list
To unsubscribe send an email to
OpenSCAD mailing list
To unsubscribe send an email to
OpenSCAD mailing list
To unsubscribe send an email to
--
** R.E.Wolff@BitWizard.nl ** https://www.BitWizard.nl/ ** +31-15-2049110 **
** Delftechpark 11 2628 XJ Delft, The Netherlands. KVK: 27239233 **
f equals m times a. When your f is steady, and your m is going down
your a is going up. -- Chris Hadfield about flying up the space shuttle.
On Sun, Jan 29, 2023 at 11:30:06AM -0500, Adrian Mariano wrote:
> Rogier, path_extrude2d() is a limited module that you should use only in
> the case where you can't access the points in your geometry. It will be
> slow, and is likely to produce an inferior result. It works by creating
> short extrusions of your geometry and then joining them with
> rotate_extruded joint sections that slightly overlap.
>
> It sounds like you made your profile using beziers, which means you have
> access to the profile as a point list. So unless your path produces
> self-intersections, you should therefore be using path_sweep, which will
> let you twist and will be much faster. It creates a single polyhedron,
OK Good.
Just to give you more of an understanding what I want to be able to do...
Many openscad examples do
cylinder (d=30,h=30); // hub.
linear_extrude (height=30, twist=100, $fn=100)
for (a=[0:120:359]) rotate (a) translate ([15,-1]) square ([45,2]);
as an example of a fan blade. This is very suboptimal if you actually want
performance.
The blades just are flat surfaces to the oncoming air. An actual
wing profile is much more efficient in getting the air to move. So...
along an arc concentric to the axis of rotation, the intersection should
be a wing profile.
t=1; r=15+45*$t;
intersection () {
fan ();
translate ([0,0,-1])
difference () {cylinder (r=r,h=32);cylinder (r=r-t,h=32);}
}
Each of those slices should look like a wing profile.
The linear extrusion with twist does get one thing right. As this thing
rotates through 100 degrees, the air should get pushed 30mm along
the path through the fan.
If you assume the air is already moving at this 30mm/100degrees of
rotation of the fan, the fan blades are simply cutting through the air
at no aoa.
To optimize this, you need to start pushing the air, so you need an
angle-of-attack. And an airfoil as the cross section of the blade.
Roger.
> https://github.com/revarbat/BOSL2/wiki/skin.scad#functionmodule-path_sweep
>
> For your more complicated task where you would like to change the cross
> section as you go, it can be done, but I don't know enough about your plan
> to say which way is the best. If you can characterize your goal by saying
> you want to sweep along the path but also you want to apply some other
> transformation to the profile at different points in the path, then you can
> do that using the generic sweep() module. The sweep module constructs a
> polyhedron by taking your profile and applying a list of transformations to
> it to define the cross sections. The cross sections are then linked up to
> create a polyhedron. In fact, the way path_sweep() works is by computing a
> transformation list that it passes to sweep. So if you want to make a
> modified path_sweep() the simplest method would be to invoke path_sweep()
> with transforms=true to get that transformation list. Then you multiply in
> your own modifications and call sweep().
>
> If what you want to do involves changes in the form that are not a
> transformation, then you need to use skin() to do the job. You would
> compute all the cross sections and invoke skin, or maybe
> vnf_vertex_array(). It might still be advantageous to get the
> transformation list from path_sweep() to use as a starting point.
>
> The situation with having path_extrude() in OpenSCAD has been discussed I
> think as long ago as 2015, with an extremely long thread on this forum.
> The problem is not that nobody sat down to write the code. The problem is
> that nobody was able to actually define the behavior of what path_extrude
> should do. So somebody who wants to get path_extrude() into OpenSCAD
> really needs to focus not on the implementation, but on understanding the
> full complexity of the problem and presenting a coherent and complete
> resolution of all the issues and complexity. Then and only then does it
> make sense to pursue implementation, once there is some kind of agreement
> from other developers that a good approach has been identified. Writing
> code that handles a few easy cases will go nowhere.
>
> Perhaps the right answer might be to push for a geometry based equivalent
> to the sweep() module. It would be a huge advantage if we had a generic
> sweep() in native OpenSCAD that accepted a list of transformation matrices
> and then operated on 2d geometry to link up the result into a polyhedron,
> where it was not constrained by the requirement that we avoid
> self-intersection. I think there are still complications, but many fewer
> complications than trying to do path_extrude().
>
>
>
> On Sun, Jan 29, 2023 at 10:30 AM Rogier Wolff <R.E.Wolff@bitwizard.nl>
> wrote:
>
> > Hi all,
> >
> > With all the work on path_extrude I got "nerd-sniped" into making some
> > wings. I downloaded BOSL2, used a bezier representation to generate
> > the 2D cross section of a wing (NACA4412 IIRC).
> >
> > I then extruded it with "linear_extrude" and was able to generate a 3D
> > wing. Using twist I was able to put a twist in the wing (*). Using scale,
> > I was able to make a tapered wing. Looking good. I'm confident that I
> > can generate a swept wing as well. (But I haven't actually done it yet).
> >
> > Now there are still two things that I'd want to do with this. One is
> > to sweep/extrude along a path. I tried that with path_extrude_2d from
> > BOSL2. That works, but I lose the ability to twist and scale.
> >
> > This would allow me to make a wing that has a curve to it instead of
> > just being swept and straight.
> >
> > Another application is the new toroidal props that are in the news
> > this week. (google toroidal props and you'll find them).
> >
> > The last application is to make a fan blade. Those have a wing profile
> > that will get bigger further to the outside. And I might want to sweep
> > the wing-profile back a bit to experiment. And this too has a tilt
> > that changes along the extrusion lenght.
> >
> >
> > If someone knows that this can already be done... I'd like to know
> > about it. If not, fine. No worries.
> >
> > But for those who are working on another path_extrude implementation,
> > this is a "use-case" that you might want to support. Or not. Keep
> > it in mind....
> >
> > Roger.
> >
> >
> > (*) The twist together with the wing sweep ensures good "stall"
> > characteristics of the aircraft. If you don't believe me that wings
> > have this twist look at a hanglider from behind at takeoff
> > https://www.pond5.com/stock-footage/item/64591446-hang-glider-takeoff
> > The thumbnail of this footage is the image I was looking for.
> > Even if this is a picture of a hang glider, airliners have this too.
> >
> > The reason for such a twist in the wing is that if a stall is
> > imminent, the wing stalls (loses lift) in the middle first, while the
> > wingtips, which are further back still have lift. Thus the nose drops
> > and the aircraft takes up speed again and continues to fly. This'll
> > cost you some height but at least you're flying again which is
> > preferable to being helpless until you hit the ground. (AF447 managed
> > to hit the ocean by not allowing the plane to exit the stall by giving
> > lots of "nose up" input. Turkish 1951 and Asiana 214 hit the ground
> > because they didn't have enough height for the stall recovery to
> > work. Most cases where it DOES work end up being an incident instead
> > of an accident.)
> >
> > On Sat, Jan 28, 2023 at 07:43:04AM +0530, Sanjeev Prabhakar wrote:
> > > Looks great 👌
> > >
> > > On Sat, 28 Jan, 2023, 4:39 am Guenther Sohler, <
> > guenther.sohler@gmail.com>
> > > wrote:
> > >
> > > > Hi Adriano,
> > > >
> > > > Sorry, I got you wrong apparently.
> > > > I am now using a rectangle 3x10 as the extrude path and I have created
> > a
> > > > polygon, which looks like an "U" Shape.
> > > > The thing rotates successfully around the extrusion axis all 360
> > degrees
> > > > and there aren't manifold problems at all during that time.
> > > > In each corner the successor segment has exactly one orientation where
> > it
> > > > fits, so I believe it's not ambiguous at all.
> > > >
> > > > And yes, my implementation is missing the "closed loop option" but I
> > can
> > > > implement that next.
> > > >
> > > >
> > > >
> > > > [image: image.png]
> > > >
> > > > On Fri, Jan 27, 2023 at 11:09 PM Adrian Mariano <avm4@cornell.edu>
> > wrote:
> > > >
> > > >> The rectangle I was talking about is the path, not the cross section.
> > > >> The point is that you need to decide how to orient the cross section
> > at
> > > >> each corner of the rectangle, and an ambiguity exists that does not
> > exist
> > > >> in the case with a smooth curve, so simply using the half-angle may
> > not be
> > > >> the desired result. Video didn't seem notable. Not sure what I was
> > > >> supposed to be seeing.
> > > >>
> > > >> On Fri, Jan 27, 2023 at 4:51 PM Guenther Sohler <
> > > >> guenther.sohler@gmail.com> wrote:
> > > >>
> > > >>> Hi Adrian, when i Use an rectangle 10x3 as a Profile , this Profile
> > is
> > > >>> present in any Cross Section along the path when little apart from
> > the
> > > >>> Corners of course.
> > > >>> This ist Independent from the original Rotation of the path or the
> > > >>> Angles between the path Segments.as Well as i. Bosl2: faces must Not
> > > >>> interec.but watch the Video. Pictures Tell more than 1000 words.
> > > >>>
> > > >>> Adrian Mariano <avm4@cornell.edu> schrieb am Fr., 27. Jän. 2023,
> > 22:31:
> > > >>>
> > > >>>> Guenther, I'm not sure what you mean. Having points widely spaced
> > can
> > > >>>> be done, of course. It's just harder to define the problem, I
> > think, so
> > > >>>> perhaps not the place to start. Nothing in BOSL2 assumes anything
> > about
> > > >>>> point spacing, but if the points are far apart you may find that
> > you don't
> > > >>>> like the automatically computed derivatives, especially if the path
> > is very
> > > >>>> short. And transitions between the sections may be more likely to
> > do
> > > >>>> something odd. Consider a rectangle that is 10 x 3. What are the
> > > >>>> derivatives at the end? Are they 45 deg angles? Or do they
> > respect the
> > > >>>> aspect ratio of the rectangle? Either option can be defended as
> > correct.
> > > >>>> The BOSL2 implementation is very general and should be able to
> > handle any
> > > >>>> situation, as long as the sections don't lead to a
> > self-intersecting and
> > > >>>> hence invalid polyhedron.
> > > >>>>
> > > >>>> On Fri, Jan 27, 2023 at 3:39 PM Guenther Sohler <
> > > >>>> guenther.sohler@gmail.com> wrote:
> > > >>>>
> > > >>>>> Hi Adrian,
> > > >>>>> There are many great effects, which you can achieve when having
> > the
> > > >>>>> points of the path wide enough apart.
> > > >>>>> Of course The Tangent and the normals (but especially the angle
> > > >>>>> between x and y axis) need be correct, but then it looks really
> > cool.
> > > >>>>> With my approach I can easily immitate your solution by using many
> > > >>>>> points close together and skip the axis scaling(maybe worth an
> > option)
> > > >>>>> My Vision and my approach which I have chosen actually came true.
> > > >>>>>
> > > >>>>> https://www.youtube.com/watch?v=1m5OeK2lW4U
> > > >>>>>
> > > >>>>> if it's too different from BOSL extrude maybe we can choose
> > another
> > > >>>>> name .
> > > >>>>>
> > > >>>>> On Fri, Jan 27, 2023 at 1:08 PM Rogier Wolff <
> > R.E.Wolff@bitwizard.nl>
> > > >>>>> wrote:
> > > >>>>>
> > > >>>>>>
> > > >>>>>> FYI,
> > > >>>>>>
> > > >>>>>> Freya Holmer worked on defining a "normal" or "reference" vector
> > along
> > > >>>>>> a path recently. She works in "gaming", so she has built what she
> > > >>>>>> found out into some library that she is making. So for those
> > wishing
> > > >>>>>> to delve into that, it probably pays to watch her videos on
> > youtube
> > > >>>>>> and then delve into figuring out if she has published the code.
> > > >>>>>>
> > > >>>>>> That said, she's interested in fluid curves and motions. So all
> > her
> > > >>>>>> "paths" are neat splines....
> > > >>>>>>
> > > >>>>>> Roger.
> > > >>>>>>
> > > >>>>>> On Fri, Jan 27, 2023 at 06:43:11AM -0500, Adrian Mariano wrote:
> > > >>>>>> > I agree with Sanjeev that it's better to focus on the case of
> > > >>>>>> points close
> > > >>>>>> > together. The problem is that some of the approaches are
> > difficult
> > > >>>>>> to
> > > >>>>>> > define, or simply won't work, if you have the points on the path
> > > >>>>>> very
> > > >>>>>> > discrete and far apart. You need to compute tangent and normal
> > to
> > > >>>>>> the
> > > >>>>>> > path, so how do you do that at corners on a path with very few
> > > >>>>>> points?
> > > >>>>>> > There may be end effects in this computation, which will be
> > more of
> > > >>>>>> a
> > > >>>>>> > nuisance if you have only four points. One of the obvious
> > > >>>>>> algorithms for
> > > >>>>>> > choosing the rotation of the sections relies on the path points
> > > >>>>>> being close
> > > >>>>>> > together and may produce bizarre results when they are too far
> > > >>>>>> apart.
> > > >>>>>> >
> > > >>>>>> > On Fri, Jan 27, 2023 at 4:39 AM Guenther Sohler <
> > > >>>>>> guenther.sohler@gmail.com>
> > > >>>>>> > wrote:
> > > >>>>>> >
> > > >>>>>> > > Adrian,
> > > >>>>>> > > Thank you for the hint and the direct link.
> > > >>>>>> > > I am happy to compare my implementation against yours to see
> > > >>>>>> where are the
> > > >>>>>> > > differences.
> > > >>>>>> > >
> > > >>>>>> > >
> > > >>>>>> > > Sanjeer, Thank you for your input.
> > > >>>>>> > > Your output looks very impressive and I want to reach that
> > too.
> > > >>>>>> > > Personally I believe the challenge is to get it correct with
> > very
> > > >>>>>> few
> > > >>>>>> > > points first.
> > > >>>>>> > > The error will be much more clearly visible when choosing few
> > > >>>>>> points.
> > > >>>>>> > > Finally, using many points to make it look smooth is just
> > > >>>>>> exercise.
> > > >>>>>> > > Probably
> > > >>>>>> > > spline and many other functions are viable.
> > > >>>>>> > > Maybe its also there in BOSL2, will check later.
> > > >>>>>> > >
> > > >>>>>> > > Thank you for your answers!
> > > >>>>>> > >
> > > >>>>>> > >
> > > >>>>>> > >
> > > >>>>>> > >
> > > >>>>>> > > On Thu, Jan 26, 2023 at 10:50 PM Adrian Mariano <
> > avm4@cornell.edu>
> > > >>>>>> wrote:
> > > >>>>>> > >
> > > >>>>>> > >> Guenther, I'm a little unsure of your goal here. If you are
> > > >>>>>> excited to
> > > >>>>>> > >> implement path_sweep for the fun of it that's fine, of
> > course,
> > > >>>>>> but this has
> > > >>>>>> > >> been done before by many people in OpenSCAD, starting with
> > > >>>>>> > >> list-comprehension-demos and also in dotSCAD, and BOSL2.
> > These
> > > >>>>>> methods
> > > >>>>>> > >> exist already as OpenSCAD code. so a demonstration isn't
> > needed
> > > >>>>>> to show the
> > > >>>>>> > >> possibilities. There are some very difficult questions about
> > how
> > > >>>>>> to rotate
> > > >>>>>> > >> the cross sections as you move around the path, and yes, it's
> > > >>>>>> entirely
> > > >>>>>> > >> possible that you've gotten it wrong...assuming that you can
> > > >>>>>> figure out
> > > >>>>>> > >> what "wrong" means. It's not clear. There was a very long
> > > >>>>>> thread on the
> > > >>>>>> > >> forum many years ago about the various complications. I
> > > >>>>>> implemented
> > > >>>>>> > >> several different algorithms in BOSL2 for choosing how to
> > line
> > > >>>>>> up the
> > > >>>>>> > >> sections. You might want to take a look to get more
> > > >>>>>> understanding of the
> > > >>>>>> > >> issues.
> > > >>>>>> > >>
> > > >>>>>> > >>
> > > >>>>>>
> > https://github.com/revarbat/BOSL2/wiki/skin.scad#functionmodule-path_sweep
> > > >>>>>> > >>
> > > >>>>>> > >>
> > > >>>>>> > >> On Thu, Jan 26, 2023 at 11:26 AM Guenther Sohler <
> > > >>>>>> > >> guenther.sohler@gmail.com> wrote:
> > > >>>>>> > >>
> > > >>>>>> > >>> Hi List,
> > > >>>>>> > >>>
> > > >>>>>> > >>> right now i am attempting to add a path_extrude function to
> > > >>>>>> openscad
> > > >>>>>> > >>> A demonstration what i am talking about is here:
> > > >>>>>> > >>>
> > > >>>>>> > >>> https://youtu.be/igMupYGvX1s
> > > >>>>>> > >>>
> > > >>>>>> > >>> (sorry, its in python, but still i hope you get the idea. )
> > > >>>>>> > >>> This shows an arbitrary path_extrude of a square,
> > > >>>>>> > >>> but in the video you can clearly see the triangles in the
> > faces,
> > > >>>>>> > >>> so i believe the cross section at the joints is not correct.
> > > >>>>>> > >>> IMHO the square must turn to a deltoid especially when the
> > base
> > > >>>>>> square
> > > >>>>>> > >>> is rotated by 45 degrees to be correct.
> > > >>>>>> > >>> Can anybody shade some light on that for me ?
> > > >>>>>> > >>>
> > > >>>>>> > >>>
> > > >>>>>> > >>> _______________________________________________
> > > >>>>>> > >>> OpenSCAD mailing list
> > > >>>>>> > >>> To unsubscribe send an email to
> > > >>>>>> discuss-leave@lists.openscad.org
> > > >>>>>> > >>>
> > > >>>>>> > >> _______________________________________________
> > > >>>>>> > >> OpenSCAD mailing list
> > > >>>>>> > >> To unsubscribe send an email to
> > discuss-leave@lists.openscad.org
> > > >>>>>> > >>
> > > >>>>>> > > _______________________________________________
> > > >>>>>> > > OpenSCAD mailing list
> > > >>>>>> > > To unsubscribe send an email to
> > discuss-leave@lists.openscad.org
> > > >>>>>> > >
> > > >>>>>>
> > > >>>>>> > _______________________________________________
> > > >>>>>> > OpenSCAD mailing list
> > > >>>>>> > To unsubscribe send an email to
> > discuss-leave@lists.openscad.org
> > > >>>>>>
> > > >>>>>>
> > > >>>>>> --
> > > >>>>>> ** R.E.Wolff@BitWizard.nl ** https://www.BitWizard.nl/ **
> > > >>>>>> +31-15-2049110 **
> > > >>>>>> ** Delftechpark 11 2628 XJ Delft, The Netherlands. KVK:
> > > >>>>>> 27239233 **
> > > >>>>>> f equals m times a. When your f is steady, and your m is going
> > down
> > > >>>>>> your a is going up. -- Chris Hadfield about flying up the space
> > > >>>>>> shuttle.
> > > >>>>>> _______________________________________________
> > > >>>>>> OpenSCAD mailing list
> > > >>>>>> To unsubscribe send an email to discuss-leave@lists.openscad.org
> > > >>>>>>
> > > >>>>> _______________________________________________
> > > >>>>> OpenSCAD mailing list
> > > >>>>> To unsubscribe send an email to discuss-leave@lists.openscad.org
> > > >>>>>
> > > >>>> _______________________________________________
> > > >>>> OpenSCAD mailing list
> > > >>>> To unsubscribe send an email to discuss-leave@lists.openscad.org
> > > >>>>
> > > >>> _______________________________________________
> > > >>> OpenSCAD mailing list
> > > >>> To unsubscribe send an email to discuss-leave@lists.openscad.org
> > > >>>
> > > >> _______________________________________________
> > > >> OpenSCAD mailing list
> > > >> To unsubscribe send an email to discuss-leave@lists.openscad.org
> > > >>
> > > > _______________________________________________
> > > > OpenSCAD mailing list
> > > > To unsubscribe send an email to discuss-leave@lists.openscad.org
> > > >
> >
> >
> >
> > > _______________________________________________
> > > OpenSCAD mailing list
> > > To unsubscribe send an email to discuss-leave@lists.openscad.org
> >
> >
> > --
> > ** R.E.Wolff@BitWizard.nl ** https://www.BitWizard.nl/ ** +31-15-2049110
> > **
> > ** Delftechpark 11 2628 XJ Delft, The Netherlands. KVK: 27239233 **
> > f equals m times a. When your f is steady, and your m is going down
> > your a is going up. -- Chris Hadfield about flying up the space shuttle.
> > _______________________________________________
> > OpenSCAD mailing list
> > To unsubscribe send an email to discuss-leave@lists.openscad.org
> >
> _______________________________________________
> OpenSCAD mailing list
> To unsubscribe send an email to discuss-leave@lists.openscad.org
--
** R.E.Wolff@BitWizard.nl ** https://www.BitWizard.nl/ ** +31-15-2049110 **
** Delftechpark 11 2628 XJ Delft, The Netherlands. KVK: 27239233 **
f equals m times a. When your f is steady, and your m is going down
your a is going up. -- Chris Hadfield about flying up the space shuttle.
AM
Adrian Mariano
Mon, Jan 30, 2023 9:32 PM
Your second example didn't run and I couldn't understand what you were
trying to do there. But it sounds like you're saying the leading edge of
the blade should be sharp and then it should get fat (like an airfoil) as
we move back along the blade, and then thin again. If the radial sections
are all rectangles, just with different thicknesses, that can be done using
the method I outlined, where you get the transformation list from
path_sweep(). On the other hand, the geometry is simple enough that you
may not really need path sweep. It might work ok to construct your slices
and then rotate them as desired and pass to skin().
I wouldn't imagine that trying to operate on the polyhedron output of
path_sweep() would be the best approach. Working on the slices and
transformations is going to be easier.
On Mon, Jan 30, 2023 at 3:08 PM Rogier Wolff R.E.Wolff@bitwizard.nl wrote:
On Sun, Jan 29, 2023 at 11:30:06AM -0500, Adrian Mariano wrote:
Rogier, path_extrude2d() is a limited module that you should use only in
the case where you can't access the points in your geometry. It will be
slow, and is likely to produce an inferior result. It works by creating
short extrusions of your geometry and then joining them with
rotate_extruded joint sections that slightly overlap.
It sounds like you made your profile using beziers, which means you have
access to the profile as a point list. So unless your path produces
self-intersections, you should therefore be using path_sweep, which will
let you twist and will be much faster. It creates a single polyhedron,
OK Good.
Just to give you more of an understanding what I want to be able to do...
Many openscad examples do
cylinder (d=30,h=30); // hub.
linear_extrude (height=30, twist=100, $fn=100)
for (a=[0:120:359]) rotate (a) translate ([15,-1]) square ([45,2]);
as an example of a fan blade. This is very suboptimal if you actually want
performance.
The blades just are flat surfaces to the oncoming air. An actual
wing profile is much more efficient in getting the air to move. So...
along an arc concentric to the axis of rotation, the intersection should
be a wing profile.
t=1; r=15+45*$t;
intersection () {
fan ();
translate ([0,0,-1])
difference () {cylinder (r=r,h=32);cylinder (r=r-t,h=32);}
}
Each of those slices should look like a wing profile.
The linear extrusion with twist does get one thing right. As this thing
rotates through 100 degrees, the air should get pushed 30mm along
the path through the fan.
If you assume the air is already moving at this 30mm/100degrees of
rotation of the fan, the fan blades are simply cutting through the air
at no aoa.
To optimize this, you need to start pushing the air, so you need an
angle-of-attack. And an airfoil as the cross section of the blade.
Roger.
For your more complicated task where you would like to change the cross
section as you go, it can be done, but I don't know enough about your
to say which way is the best. If you can characterize your goal by
you want to sweep along the path but also you want to apply some other
transformation to the profile at different points in the path, then you
do that using the generic sweep() module. The sweep module constructs a
polyhedron by taking your profile and applying a list of transformations
it to define the cross sections. The cross sections are then linked up
create a polyhedron. In fact, the way path_sweep() works is by
transformation list that it passes to sweep. So if you want to make a
modified path_sweep() the simplest method would be to invoke path_sweep()
with transforms=true to get that transformation list. Then you multiply
your own modifications and call sweep().
If what you want to do involves changes in the form that are not a
transformation, then you need to use skin() to do the job. You would
compute all the cross sections and invoke skin, or maybe
vnf_vertex_array(). It might still be advantageous to get the
transformation list from path_sweep() to use as a starting point.
The situation with having path_extrude() in OpenSCAD has been discussed I
think as long ago as 2015, with an extremely long thread on this forum.
The problem is not that nobody sat down to write the code. The problem
that nobody was able to actually define the behavior of what path_extrude
should do. So somebody who wants to get path_extrude() into OpenSCAD
really needs to focus not on the implementation, but on understanding the
full complexity of the problem and presenting a coherent and complete
resolution of all the issues and complexity. Then and only then does it
make sense to pursue implementation, once there is some kind of agreement
from other developers that a good approach has been identified. Writing
code that handles a few easy cases will go nowhere.
Perhaps the right answer might be to push for a geometry based equivalent
to the sweep() module. It would be a huge advantage if we had a generic
sweep() in native OpenSCAD that accepted a list of transformation
and then operated on 2d geometry to link up the result into a polyhedron,
where it was not constrained by the requirement that we avoid
self-intersection. I think there are still complications, but many fewer
complications than trying to do path_extrude().
On Sun, Jan 29, 2023 at 10:30 AM Rogier Wolff R.E.Wolff@bitwizard.nl
wrote:
Hi all,
With all the work on path_extrude I got "nerd-sniped" into making some
wings. I downloaded BOSL2, used a bezier representation to generate
the 2D cross section of a wing (NACA4412 IIRC).
I then extruded it with "linear_extrude" and was able to generate a 3D
wing. Using twist I was able to put a twist in the wing (*). Using
I was able to make a tapered wing. Looking good. I'm confident that I
can generate a swept wing as well. (But I haven't actually done it
Now there are still two things that I'd want to do with this. One is
to sweep/extrude along a path. I tried that with path_extrude_2d from
BOSL2. That works, but I lose the ability to twist and scale.
This would allow me to make a wing that has a curve to it instead of
just being swept and straight.
Another application is the new toroidal props that are in the news
this week. (google toroidal props and you'll find them).
The last application is to make a fan blade. Those have a wing profile
that will get bigger further to the outside. And I might want to sweep
the wing-profile back a bit to experiment. And this too has a tilt
that changes along the extrusion lenght.
If someone knows that this can already be done... I'd like to know
about it. If not, fine. No worries.
But for those who are working on another path_extrude implementation,
this is a "use-case" that you might want to support. Or not. Keep
it in mind....
Roger.
(*) The twist together with the wing sweep ensures good "stall"
characteristics of the aircraft. If you don't believe me that wings
have this twist look at a hanglider from behind at takeoff
https://www.pond5.com/stock-footage/item/64591446-hang-glider-takeoff
The thumbnail of this footage is the image I was looking for.
Even if this is a picture of a hang glider, airliners have this too.
The reason for such a twist in the wing is that if a stall is
imminent, the wing stalls (loses lift) in the middle first, while the
wingtips, which are further back still have lift. Thus the nose drops
and the aircraft takes up speed again and continues to fly. This'll
cost you some height but at least you're flying again which is
preferable to being helpless until you hit the ground. (AF447 managed
to hit the ocean by not allowing the plane to exit the stall by giving
lots of "nose up" input. Turkish 1951 and Asiana 214 hit the ground
because they didn't have enough height for the stall recovery to
work. Most cases where it DOES work end up being an incident instead
of an accident.)
On Sat, Jan 28, 2023 at 07:43:04AM +0530, Sanjeev Prabhakar wrote:
Looks great 👌
On Sat, 28 Jan, 2023, 4:39 am Guenther Sohler, <
Hi Adriano,
Sorry, I got you wrong apparently.
I am now using a rectangle 3x10 as the extrude path and I have
polygon, which looks like an "U" Shape.
The thing rotates successfully around the extrusion axis all 360
and there aren't manifold problems at all during that time.
In each corner the successor segment has exactly one orientation
fits, so I believe it's not ambiguous at all.
And yes, my implementation is missing the "closed loop option" but
implement that next.
[image: image.png]
On Fri, Jan 27, 2023 at 11:09 PM Adrian Mariano avm4@cornell.edu
The rectangle I was talking about is the path, not the cross
The point is that you need to decide how to orient the cross
each corner of the rectangle, and an ambiguity exists that does
in the case with a smooth curve, so simply using the half-angle
the desired result. Video didn't seem notable. Not sure what I
Hi Adrian, when i Use an rectangle 10x3 as a Profile , this
present in any Cross Section along the path when little apart
Corners of course.
This ist Independent from the original Rotation of the path or
Angles between the path Segments.as Well as i. Bosl2: faces must
interec.but watch the Video. Pictures Tell more than 1000 words.
Adrian Mariano avm4@cornell.edu schrieb am Fr., 27. Jän. 2023,
Guenther, I'm not sure what you mean. Having points widely
be done, of course. It's just harder to define the problem, I
perhaps not the place to start. Nothing in BOSL2 assumes
point spacing, but if the points are far apart you may find that
like the automatically computed derivatives, especially if the
short. And transitions between the sections may be more likely
something odd. Consider a rectangle that is 10 x 3. What are
derivatives at the end? Are they 45 deg angles? Or do they
aspect ratio of the rectangle? Either option can be defended
The BOSL2 implementation is very general and should be able to
situation, as long as the sections don't lead to a
Hi Adrian,
There are many great effects, which you can achieve when
points of the path wide enough apart.
Of course The Tangent and the normals (but especially the angle
between x and y axis) need be correct, but then it looks really
With my approach I can easily immitate your solution by using
points close together and skip the axis scaling(maybe worth an
My Vision and my approach which I have chosen actually came
name .
On Fri, Jan 27, 2023 at 1:08 PM Rogier Wolff <
FYI,
Freya Holmer worked on defining a "normal" or "reference"
a path recently. She works in "gaming", so she has built what
found out into some library that she is making. So for those
to delve into that, it probably pays to watch her videos on
and then delve into figuring out if she has published the
That said, she's interested in fluid curves and motions. So
"paths" are neat splines....
Roger.
On Fri, Jan 27, 2023 at 06:43:11AM -0500, Adrian Mariano
I agree with Sanjeev that it's better to focus on the case
together. The problem is that some of the approaches are
define, or simply won't work, if you have the points on the
discrete and far apart. You need to compute tangent and
path, so how do you do that at corners on a path with very
There may be end effects in this computation, which will be
nuisance if you have only four points. One of the obvious
choosing the rotation of the sections relies on the path
together and may produce bizarre results when they are too
On Fri, Jan 27, 2023 at 4:39 AM Guenther Sohler <
Adrian,
Thank you for the hint and the direct link.
I am happy to compare my implementation against yours to
differences.
Sanjeer, Thank you for your input.
Your output looks very impressive and I want to reach that
Personally I believe the challenge is to get it correct
points first.
The error will be much more clearly visible when choosing
Finally, using many points to make it look smooth is just
Probably
spline and many other functions are viable.
Maybe its also there in BOSL2, will check later.
Thank you for your answers!
On Thu, Jan 26, 2023 at 10:50 PM Adrian Mariano <
Guenther, I'm a little unsure of your goal here. If you
implement path_sweep for the fun of it that's fine, of
been done before by many people in OpenSCAD, starting
list-comprehension-demos and also in dotSCAD, and BOSL2.
exist already as OpenSCAD code. so a demonstration isn't
possibilities. There are some very difficult questions
the cross sections as you move around the path, and yes,
possible that you've gotten it wrong...assuming that you
what "wrong" means. It's not clear. There was a very
forum many years ago about the various complications. I
several different algorithms in BOSL2 for choosing how to
sections. You might want to take a look to get more
Hi List,
right now i am attempting to add a path_extrude
This shows an arbitrary path_extrude of a square,
but in the video you can clearly see the triangles in
so i believe the cross section at the joints is not
IMHO the square must turn to a deltoid especially when
is rotated by 45 degrees to be correct.
Can anybody shade some light on that for me ?
OpenSCAD mailing list
To unsubscribe send an email to
OpenSCAD mailing list
To unsubscribe send an email to
OpenSCAD mailing list
To unsubscribe send an email to
OpenSCAD mailing list
To unsubscribe send an email to
your a is going up. -- Chris Hadfield about flying up the
shuttle.
OpenSCAD mailing list
To unsubscribe send an email to
OpenSCAD mailing list
To unsubscribe send an email to
OpenSCAD mailing list
To unsubscribe send an email to
**
** Delftechpark 11 2628 XJ Delft, The Netherlands. KVK: 27239233
f equals m times a. When your f is steady, and your m is going down
your a is going up. -- Chris Hadfield about flying up the space
Your second example didn't run and I couldn't understand what you were
trying to do there. But it sounds like you're saying the leading edge of
the blade should be sharp and then it should get fat (like an airfoil) as
we move back along the blade, and then thin again. If the radial sections
are all rectangles, just with different thicknesses, that can be done using
the method I outlined, where you get the transformation list from
path_sweep(). On the other hand, the geometry is simple enough that you
may not really need path sweep. It might work ok to construct your slices
and then rotate them as desired and pass to skin().
I wouldn't imagine that trying to operate on the polyhedron output of
path_sweep() would be the best approach. Working on the slices and
transformations is going to be easier.
On Mon, Jan 30, 2023 at 3:08 PM Rogier Wolff <R.E.Wolff@bitwizard.nl> wrote:
> On Sun, Jan 29, 2023 at 11:30:06AM -0500, Adrian Mariano wrote:
> > Rogier, path_extrude2d() is a limited module that you should use only in
> > the case where you can't access the points in your geometry. It will be
> > slow, and is likely to produce an inferior result. It works by creating
> > short extrusions of your geometry and then joining them with
> > rotate_extruded joint sections that slightly overlap.
> >
> > It sounds like you made your profile using beziers, which means you have
> > access to the profile as a point list. So unless your path produces
> > self-intersections, you should therefore be using path_sweep, which will
> > let you twist and will be much faster. It creates a single polyhedron,
>
> OK Good.
>
> Just to give you more of an understanding what I want to be able to do...
>
> Many openscad examples do
>
> cylinder (d=30,h=30); // hub.
> linear_extrude (height=30, twist=100, $fn=100)
> for (a=[0:120:359]) rotate (a) translate ([15,-1]) square ([45,2]);
>
> as an example of a fan blade. This is very suboptimal if you actually want
> performance.
>
> The blades just are flat surfaces to the oncoming air. An actual
> wing profile is much more efficient in getting the air to move. So...
> along an arc concentric to the axis of rotation, the intersection should
> be a wing profile.
>
> t=1; r=15+45*$t;
> intersection () {
> fan ();
> translate ([0,0,-1])
> difference () {cylinder (r=r,h=32);cylinder (r=r-t,h=32);}
> }
>
> Each of those slices should look like a wing profile.
>
> The linear extrusion with twist does get one thing right. As this thing
> rotates through 100 degrees, the air should get pushed 30mm along
> the path through the fan.
>
> If you assume the air is already moving at this 30mm/100degrees of
> rotation of the fan, the fan blades are simply cutting through the air
> at no aoa.
>
> To optimize this, you need to start pushing the air, so you need an
> angle-of-attack. And an airfoil as the cross section of the blade.
>
> Roger.
>
>
>
>
> >
> https://github.com/revarbat/BOSL2/wiki/skin.scad#functionmodule-path_sweep
> >
> > For your more complicated task where you would like to change the cross
> > section as you go, it can be done, but I don't know enough about your
> plan
> > to say which way is the best. If you can characterize your goal by
> saying
> > you want to sweep along the path but also you want to apply some other
> > transformation to the profile at different points in the path, then you
> can
> > do that using the generic sweep() module. The sweep module constructs a
> > polyhedron by taking your profile and applying a list of transformations
> to
> > it to define the cross sections. The cross sections are then linked up
> to
> > create a polyhedron. In fact, the way path_sweep() works is by
> computing a
> > transformation list that it passes to sweep. So if you want to make a
> > modified path_sweep() the simplest method would be to invoke path_sweep()
> > with transforms=true to get that transformation list. Then you multiply
> in
> > your own modifications and call sweep().
> >
> > If what you want to do involves changes in the form that are not a
> > transformation, then you need to use skin() to do the job. You would
> > compute all the cross sections and invoke skin, or maybe
> > vnf_vertex_array(). It might still be advantageous to get the
> > transformation list from path_sweep() to use as a starting point.
> >
> > The situation with having path_extrude() in OpenSCAD has been discussed I
> > think as long ago as 2015, with an extremely long thread on this forum.
> > The problem is not that nobody sat down to write the code. The problem
> is
> > that nobody was able to actually define the behavior of what path_extrude
> > should do. So somebody who wants to get path_extrude() into OpenSCAD
> > really needs to focus not on the implementation, but on understanding the
> > full complexity of the problem and presenting a coherent and complete
> > resolution of all the issues and complexity. Then and only then does it
> > make sense to pursue implementation, once there is some kind of agreement
> > from other developers that a good approach has been identified. Writing
> > code that handles a few easy cases will go nowhere.
> >
> > Perhaps the right answer might be to push for a geometry based equivalent
> > to the sweep() module. It would be a huge advantage if we had a generic
> > sweep() in native OpenSCAD that accepted a list of transformation
> matrices
> > and then operated on 2d geometry to link up the result into a polyhedron,
> > where it was not constrained by the requirement that we avoid
> > self-intersection. I think there are still complications, but many fewer
> > complications than trying to do path_extrude().
> >
> >
> >
> > On Sun, Jan 29, 2023 at 10:30 AM Rogier Wolff <R.E.Wolff@bitwizard.nl>
> > wrote:
> >
> > > Hi all,
> > >
> > > With all the work on path_extrude I got "nerd-sniped" into making some
> > > wings. I downloaded BOSL2, used a bezier representation to generate
> > > the 2D cross section of a wing (NACA4412 IIRC).
> > >
> > > I then extruded it with "linear_extrude" and was able to generate a 3D
> > > wing. Using twist I was able to put a twist in the wing (*). Using
> scale,
> > > I was able to make a tapered wing. Looking good. I'm confident that I
> > > can generate a swept wing as well. (But I haven't actually done it
> yet).
> > >
> > > Now there are still two things that I'd want to do with this. One is
> > > to sweep/extrude along a path. I tried that with path_extrude_2d from
> > > BOSL2. That works, but I lose the ability to twist and scale.
> > >
> > > This would allow me to make a wing that has a curve to it instead of
> > > just being swept and straight.
> > >
> > > Another application is the new toroidal props that are in the news
> > > this week. (google toroidal props and you'll find them).
> > >
> > > The last application is to make a fan blade. Those have a wing profile
> > > that will get bigger further to the outside. And I might want to sweep
> > > the wing-profile back a bit to experiment. And this too has a tilt
> > > that changes along the extrusion lenght.
> > >
> > >
> > > If someone knows that this can already be done... I'd like to know
> > > about it. If not, fine. No worries.
> > >
> > > But for those who are working on another path_extrude implementation,
> > > this is a "use-case" that you might want to support. Or not. Keep
> > > it in mind....
> > >
> > > Roger.
> > >
> > >
> > > (*) The twist together with the wing sweep ensures good "stall"
> > > characteristics of the aircraft. If you don't believe me that wings
> > > have this twist look at a hanglider from behind at takeoff
> > > https://www.pond5.com/stock-footage/item/64591446-hang-glider-takeoff
> > > The thumbnail of this footage is the image I was looking for.
> > > Even if this is a picture of a hang glider, airliners have this too.
> > >
> > > The reason for such a twist in the wing is that if a stall is
> > > imminent, the wing stalls (loses lift) in the middle first, while the
> > > wingtips, which are further back still have lift. Thus the nose drops
> > > and the aircraft takes up speed again and continues to fly. This'll
> > > cost you some height but at least you're flying again which is
> > > preferable to being helpless until you hit the ground. (AF447 managed
> > > to hit the ocean by not allowing the plane to exit the stall by giving
> > > lots of "nose up" input. Turkish 1951 and Asiana 214 hit the ground
> > > because they didn't have enough height for the stall recovery to
> > > work. Most cases where it DOES work end up being an incident instead
> > > of an accident.)
> > >
> > > On Sat, Jan 28, 2023 at 07:43:04AM +0530, Sanjeev Prabhakar wrote:
> > > > Looks great 👌
> > > >
> > > > On Sat, 28 Jan, 2023, 4:39 am Guenther Sohler, <
> > > guenther.sohler@gmail.com>
> > > > wrote:
> > > >
> > > > > Hi Adriano,
> > > > >
> > > > > Sorry, I got you wrong apparently.
> > > > > I am now using a rectangle 3x10 as the extrude path and I have
> created
> > > a
> > > > > polygon, which looks like an "U" Shape.
> > > > > The thing rotates successfully around the extrusion axis all 360
> > > degrees
> > > > > and there aren't manifold problems at all during that time.
> > > > > In each corner the successor segment has exactly one orientation
> where
> > > it
> > > > > fits, so I believe it's not ambiguous at all.
> > > > >
> > > > > And yes, my implementation is missing the "closed loop option" but
> I
> > > can
> > > > > implement that next.
> > > > >
> > > > >
> > > > >
> > > > > [image: image.png]
> > > > >
> > > > > On Fri, Jan 27, 2023 at 11:09 PM Adrian Mariano <avm4@cornell.edu>
> > > wrote:
> > > > >
> > > > >> The rectangle I was talking about is the path, not the cross
> section.
> > > > >> The point is that you need to decide how to orient the cross
> section
> > > at
> > > > >> each corner of the rectangle, and an ambiguity exists that does
> not
> > > exist
> > > > >> in the case with a smooth curve, so simply using the half-angle
> may
> > > not be
> > > > >> the desired result. Video didn't seem notable. Not sure what I
> was
> > > > >> supposed to be seeing.
> > > > >>
> > > > >> On Fri, Jan 27, 2023 at 4:51 PM Guenther Sohler <
> > > > >> guenther.sohler@gmail.com> wrote:
> > > > >>
> > > > >>> Hi Adrian, when i Use an rectangle 10x3 as a Profile , this
> Profile
> > > is
> > > > >>> present in any Cross Section along the path when little apart
> from
> > > the
> > > > >>> Corners of course.
> > > > >>> This ist Independent from the original Rotation of the path or
> the
> > > > >>> Angles between the path Segments.as Well as i. Bosl2: faces must
> Not
> > > > >>> interec.but watch the Video. Pictures Tell more than 1000 words.
> > > > >>>
> > > > >>> Adrian Mariano <avm4@cornell.edu> schrieb am Fr., 27. Jän. 2023,
> > > 22:31:
> > > > >>>
> > > > >>>> Guenther, I'm not sure what you mean. Having points widely
> spaced
> > > can
> > > > >>>> be done, of course. It's just harder to define the problem, I
> > > think, so
> > > > >>>> perhaps not the place to start. Nothing in BOSL2 assumes
> anything
> > > about
> > > > >>>> point spacing, but if the points are far apart you may find that
> > > you don't
> > > > >>>> like the automatically computed derivatives, especially if the
> path
> > > is very
> > > > >>>> short. And transitions between the sections may be more likely
> to
> > > do
> > > > >>>> something odd. Consider a rectangle that is 10 x 3. What are
> the
> > > > >>>> derivatives at the end? Are they 45 deg angles? Or do they
> > > respect the
> > > > >>>> aspect ratio of the rectangle? Either option can be defended
> as
> > > correct.
> > > > >>>> The BOSL2 implementation is very general and should be able to
> > > handle any
> > > > >>>> situation, as long as the sections don't lead to a
> > > self-intersecting and
> > > > >>>> hence invalid polyhedron.
> > > > >>>>
> > > > >>>> On Fri, Jan 27, 2023 at 3:39 PM Guenther Sohler <
> > > > >>>> guenther.sohler@gmail.com> wrote:
> > > > >>>>
> > > > >>>>> Hi Adrian,
> > > > >>>>> There are many great effects, which you can achieve when
> having
> > > the
> > > > >>>>> points of the path wide enough apart.
> > > > >>>>> Of course The Tangent and the normals (but especially the angle
> > > > >>>>> between x and y axis) need be correct, but then it looks really
> > > cool.
> > > > >>>>> With my approach I can easily immitate your solution by using
> many
> > > > >>>>> points close together and skip the axis scaling(maybe worth an
> > > option)
> > > > >>>>> My Vision and my approach which I have chosen actually came
> true.
> > > > >>>>>
> > > > >>>>> https://www.youtube.com/watch?v=1m5OeK2lW4U
> > > > >>>>>
> > > > >>>>> if it's too different from BOSL extrude maybe we can choose
> > > another
> > > > >>>>> name .
> > > > >>>>>
> > > > >>>>> On Fri, Jan 27, 2023 at 1:08 PM Rogier Wolff <
> > > R.E.Wolff@bitwizard.nl>
> > > > >>>>> wrote:
> > > > >>>>>
> > > > >>>>>>
> > > > >>>>>> FYI,
> > > > >>>>>>
> > > > >>>>>> Freya Holmer worked on defining a "normal" or "reference"
> vector
> > > along
> > > > >>>>>> a path recently. She works in "gaming", so she has built what
> she
> > > > >>>>>> found out into some library that she is making. So for those
> > > wishing
> > > > >>>>>> to delve into that, it probably pays to watch her videos on
> > > youtube
> > > > >>>>>> and then delve into figuring out if she has published the
> code.
> > > > >>>>>>
> > > > >>>>>> That said, she's interested in fluid curves and motions. So
> all
> > > her
> > > > >>>>>> "paths" are neat splines....
> > > > >>>>>>
> > > > >>>>>> Roger.
> > > > >>>>>>
> > > > >>>>>> On Fri, Jan 27, 2023 at 06:43:11AM -0500, Adrian Mariano
> wrote:
> > > > >>>>>> > I agree with Sanjeev that it's better to focus on the case
> of
> > > > >>>>>> points close
> > > > >>>>>> > together. The problem is that some of the approaches are
> > > difficult
> > > > >>>>>> to
> > > > >>>>>> > define, or simply won't work, if you have the points on the
> path
> > > > >>>>>> very
> > > > >>>>>> > discrete and far apart. You need to compute tangent and
> normal
> > > to
> > > > >>>>>> the
> > > > >>>>>> > path, so how do you do that at corners on a path with very
> few
> > > > >>>>>> points?
> > > > >>>>>> > There may be end effects in this computation, which will be
> > > more of
> > > > >>>>>> a
> > > > >>>>>> > nuisance if you have only four points. One of the obvious
> > > > >>>>>> algorithms for
> > > > >>>>>> > choosing the rotation of the sections relies on the path
> points
> > > > >>>>>> being close
> > > > >>>>>> > together and may produce bizarre results when they are too
> far
> > > > >>>>>> apart.
> > > > >>>>>> >
> > > > >>>>>> > On Fri, Jan 27, 2023 at 4:39 AM Guenther Sohler <
> > > > >>>>>> guenther.sohler@gmail.com>
> > > > >>>>>> > wrote:
> > > > >>>>>> >
> > > > >>>>>> > > Adrian,
> > > > >>>>>> > > Thank you for the hint and the direct link.
> > > > >>>>>> > > I am happy to compare my implementation against yours to
> see
> > > > >>>>>> where are the
> > > > >>>>>> > > differences.
> > > > >>>>>> > >
> > > > >>>>>> > >
> > > > >>>>>> > > Sanjeer, Thank you for your input.
> > > > >>>>>> > > Your output looks very impressive and I want to reach that
> > > too.
> > > > >>>>>> > > Personally I believe the challenge is to get it correct
> with
> > > very
> > > > >>>>>> few
> > > > >>>>>> > > points first.
> > > > >>>>>> > > The error will be much more clearly visible when choosing
> few
> > > > >>>>>> points.
> > > > >>>>>> > > Finally, using many points to make it look smooth is just
> > > > >>>>>> exercise.
> > > > >>>>>> > > Probably
> > > > >>>>>> > > spline and many other functions are viable.
> > > > >>>>>> > > Maybe its also there in BOSL2, will check later.
> > > > >>>>>> > >
> > > > >>>>>> > > Thank you for your answers!
> > > > >>>>>> > >
> > > > >>>>>> > >
> > > > >>>>>> > >
> > > > >>>>>> > >
> > > > >>>>>> > > On Thu, Jan 26, 2023 at 10:50 PM Adrian Mariano <
> > > avm4@cornell.edu>
> > > > >>>>>> wrote:
> > > > >>>>>> > >
> > > > >>>>>> > >> Guenther, I'm a little unsure of your goal here. If you
> are
> > > > >>>>>> excited to
> > > > >>>>>> > >> implement path_sweep for the fun of it that's fine, of
> > > course,
> > > > >>>>>> but this has
> > > > >>>>>> > >> been done before by many people in OpenSCAD, starting
> with
> > > > >>>>>> > >> list-comprehension-demos and also in dotSCAD, and BOSL2.
> > > These
> > > > >>>>>> methods
> > > > >>>>>> > >> exist already as OpenSCAD code. so a demonstration isn't
> > > needed
> > > > >>>>>> to show the
> > > > >>>>>> > >> possibilities. There are some very difficult questions
> about
> > > how
> > > > >>>>>> to rotate
> > > > >>>>>> > >> the cross sections as you move around the path, and yes,
> it's
> > > > >>>>>> entirely
> > > > >>>>>> > >> possible that you've gotten it wrong...assuming that you
> can
> > > > >>>>>> figure out
> > > > >>>>>> > >> what "wrong" means. It's not clear. There was a very
> long
> > > > >>>>>> thread on the
> > > > >>>>>> > >> forum many years ago about the various complications. I
> > > > >>>>>> implemented
> > > > >>>>>> > >> several different algorithms in BOSL2 for choosing how to
> > > line
> > > > >>>>>> up the
> > > > >>>>>> > >> sections. You might want to take a look to get more
> > > > >>>>>> understanding of the
> > > > >>>>>> > >> issues.
> > > > >>>>>> > >>
> > > > >>>>>> > >>
> > > > >>>>>>
> > >
> https://github.com/revarbat/BOSL2/wiki/skin.scad#functionmodule-path_sweep
> > > > >>>>>> > >>
> > > > >>>>>> > >>
> > > > >>>>>> > >> On Thu, Jan 26, 2023 at 11:26 AM Guenther Sohler <
> > > > >>>>>> > >> guenther.sohler@gmail.com> wrote:
> > > > >>>>>> > >>
> > > > >>>>>> > >>> Hi List,
> > > > >>>>>> > >>>
> > > > >>>>>> > >>> right now i am attempting to add a path_extrude
> function to
> > > > >>>>>> openscad
> > > > >>>>>> > >>> A demonstration what i am talking about is here:
> > > > >>>>>> > >>>
> > > > >>>>>> > >>> https://youtu.be/igMupYGvX1s
> > > > >>>>>> > >>>
> > > > >>>>>> > >>> (sorry, its in python, but still i hope you get the
> idea. )
> > > > >>>>>> > >>> This shows an arbitrary path_extrude of a square,
> > > > >>>>>> > >>> but in the video you can clearly see the triangles in
> the
> > > faces,
> > > > >>>>>> > >>> so i believe the cross section at the joints is not
> correct.
> > > > >>>>>> > >>> IMHO the square must turn to a deltoid especially when
> the
> > > base
> > > > >>>>>> square
> > > > >>>>>> > >>> is rotated by 45 degrees to be correct.
> > > > >>>>>> > >>> Can anybody shade some light on that for me ?
> > > > >>>>>> > >>>
> > > > >>>>>> > >>>
> > > > >>>>>> > >>> _______________________________________________
> > > > >>>>>> > >>> OpenSCAD mailing list
> > > > >>>>>> > >>> To unsubscribe send an email to
> > > > >>>>>> discuss-leave@lists.openscad.org
> > > > >>>>>> > >>>
> > > > >>>>>> > >> _______________________________________________
> > > > >>>>>> > >> OpenSCAD mailing list
> > > > >>>>>> > >> To unsubscribe send an email to
> > > discuss-leave@lists.openscad.org
> > > > >>>>>> > >>
> > > > >>>>>> > > _______________________________________________
> > > > >>>>>> > > OpenSCAD mailing list
> > > > >>>>>> > > To unsubscribe send an email to
> > > discuss-leave@lists.openscad.org
> > > > >>>>>> > >
> > > > >>>>>>
> > > > >>>>>> > _______________________________________________
> > > > >>>>>> > OpenSCAD mailing list
> > > > >>>>>> > To unsubscribe send an email to
> > > discuss-leave@lists.openscad.org
> > > > >>>>>>
> > > > >>>>>>
> > > > >>>>>> --
> > > > >>>>>> ** R.E.Wolff@BitWizard.nl ** https://www.BitWizard.nl/ **
> > > > >>>>>> +31-15-2049110 **
> > > > >>>>>> ** Delftechpark 11 2628 XJ Delft, The Netherlands. KVK:
> > > > >>>>>> 27239233 **
> > > > >>>>>> f equals m times a. When your f is steady, and your m is going
> > > down
> > > > >>>>>> your a is going up. -- Chris Hadfield about flying up the
> space
> > > > >>>>>> shuttle.
> > > > >>>>>> _______________________________________________
> > > > >>>>>> OpenSCAD mailing list
> > > > >>>>>> To unsubscribe send an email to
> discuss-leave@lists.openscad.org
> > > > >>>>>>
> > > > >>>>> _______________________________________________
> > > > >>>>> OpenSCAD mailing list
> > > > >>>>> To unsubscribe send an email to
> discuss-leave@lists.openscad.org
> > > > >>>>>
> > > > >>>> _______________________________________________
> > > > >>>> OpenSCAD mailing list
> > > > >>>> To unsubscribe send an email to
> discuss-leave@lists.openscad.org
> > > > >>>>
> > > > >>> _______________________________________________
> > > > >>> OpenSCAD mailing list
> > > > >>> To unsubscribe send an email to discuss-leave@lists.openscad.org
> > > > >>>
> > > > >> _______________________________________________
> > > > >> OpenSCAD mailing list
> > > > >> To unsubscribe send an email to discuss-leave@lists.openscad.org
> > > > >>
> > > > > _______________________________________________
> > > > > OpenSCAD mailing list
> > > > > To unsubscribe send an email to discuss-leave@lists.openscad.org
> > > > >
> > >
> > >
> > >
> > > > _______________________________________________
> > > > OpenSCAD mailing list
> > > > To unsubscribe send an email to discuss-leave@lists.openscad.org
> > >
> > >
> > > --
> > > ** R.E.Wolff@BitWizard.nl ** https://www.BitWizard.nl/ **
> +31-15-2049110
> > > **
> > > ** Delftechpark 11 2628 XJ Delft, The Netherlands. KVK: 27239233
> **
> > > f equals m times a. When your f is steady, and your m is going down
> > > your a is going up. -- Chris Hadfield about flying up the space
> shuttle.
> > > _______________________________________________
> > > OpenSCAD mailing list
> > > To unsubscribe send an email to discuss-leave@lists.openscad.org
> > >
>
> > _______________________________________________
> > OpenSCAD mailing list
> > To unsubscribe send an email to discuss-leave@lists.openscad.org
>
>
> --
> ** R.E.Wolff@BitWizard.nl ** https://www.BitWizard.nl/ ** +31-15-2049110
> **
> ** Delftechpark 11 2628 XJ Delft, The Netherlands. KVK: 27239233 **
> f equals m times a. When your f is steady, and your m is going down
> your a is going up. -- Chris Hadfield about flying up the space shuttle.
> _______________________________________________
> OpenSCAD mailing list
> To unsubscribe send an email to discuss-leave@lists.openscad.org
>
SP
Sanjeev Prabhakar
Tue, Jan 31, 2023 1:54 AM
something like this?
[image: Screenshot 2023-01-31 at 7.22.57 AM.png]
On Tue, 31 Jan 2023 at 03:04, Adrian Mariano avm4@cornell.edu wrote:
Your second example didn't run and I couldn't understand what you were
trying to do there. But it sounds like you're saying the leading edge of
the blade should be sharp and then it should get fat (like an airfoil) as
we move back along the blade, and then thin again. If the radial sections
are all rectangles, just with different thicknesses, that can be done using
the method I outlined, where you get the transformation list from
path_sweep(). On the other hand, the geometry is simple enough that you
may not really need path sweep. It might work ok to construct your slices
and then rotate them as desired and pass to skin().
I wouldn't imagine that trying to operate on the polyhedron output of
path_sweep() would be the best approach. Working on the slices and
transformations is going to be easier.
On Mon, Jan 30, 2023 at 3:08 PM Rogier Wolff R.E.Wolff@bitwizard.nl
wrote:
On Sun, Jan 29, 2023 at 11:30:06AM -0500, Adrian Mariano wrote:
Rogier, path_extrude2d() is a limited module that you should use only in
the case where you can't access the points in your geometry. It will be
slow, and is likely to produce an inferior result. It works by creating
short extrusions of your geometry and then joining them with
rotate_extruded joint sections that slightly overlap.
It sounds like you made your profile using beziers, which means you have
access to the profile as a point list. So unless your path produces
self-intersections, you should therefore be using path_sweep, which will
let you twist and will be much faster. It creates a single polyhedron,
OK Good.
Just to give you more of an understanding what I want to be able to do...
Many openscad examples do
cylinder (d=30,h=30); // hub.
linear_extrude (height=30, twist=100, $fn=100)
for (a=[0:120:359]) rotate (a) translate ([15,-1]) square ([45,2]);
as an example of a fan blade. This is very suboptimal if you actually want
performance.
The blades just are flat surfaces to the oncoming air. An actual
wing profile is much more efficient in getting the air to move. So...
along an arc concentric to the axis of rotation, the intersection should
be a wing profile.
t=1; r=15+45*$t;
intersection () {
fan ();
translate ([0,0,-1])
difference () {cylinder (r=r,h=32);cylinder (r=r-t,h=32);}
}
Each of those slices should look like a wing profile.
The linear extrusion with twist does get one thing right. As this thing
rotates through 100 degrees, the air should get pushed 30mm along
the path through the fan.
If you assume the air is already moving at this 30mm/100degrees of
rotation of the fan, the fan blades are simply cutting through the air
at no aoa.
To optimize this, you need to start pushing the air, so you need an
angle-of-attack. And an airfoil as the cross section of the blade.
Roger.
For your more complicated task where you would like to change the cross
section as you go, it can be done, but I don't know enough about your
to say which way is the best. If you can characterize your goal by
you want to sweep along the path but also you want to apply some other
transformation to the profile at different points in the path, then you
do that using the generic sweep() module. The sweep module constructs a
polyhedron by taking your profile and applying a list of
it to define the cross sections. The cross sections are then linked up
create a polyhedron. In fact, the way path_sweep() works is by
transformation list that it passes to sweep. So if you want to make a
modified path_sweep() the simplest method would be to invoke
with transforms=true to get that transformation list. Then you
your own modifications and call sweep().
If what you want to do involves changes in the form that are not a
transformation, then you need to use skin() to do the job. You would
compute all the cross sections and invoke skin, or maybe
vnf_vertex_array(). It might still be advantageous to get the
transformation list from path_sweep() to use as a starting point.
The situation with having path_extrude() in OpenSCAD has been discussed
think as long ago as 2015, with an extremely long thread on this forum.
The problem is not that nobody sat down to write the code. The problem
that nobody was able to actually define the behavior of what
should do. So somebody who wants to get path_extrude() into OpenSCAD
really needs to focus not on the implementation, but on understanding
full complexity of the problem and presenting a coherent and complete
resolution of all the issues and complexity. Then and only then does it
make sense to pursue implementation, once there is some kind of
from other developers that a good approach has been identified. Writing
code that handles a few easy cases will go nowhere.
Perhaps the right answer might be to push for a geometry based
to the sweep() module. It would be a huge advantage if we had a generic
sweep() in native OpenSCAD that accepted a list of transformation
and then operated on 2d geometry to link up the result into a
where it was not constrained by the requirement that we avoid
self-intersection. I think there are still complications, but many
complications than trying to do path_extrude().
On Sun, Jan 29, 2023 at 10:30 AM Rogier Wolff R.E.Wolff@bitwizard.nl
wrote:
Hi all,
With all the work on path_extrude I got "nerd-sniped" into making some
wings. I downloaded BOSL2, used a bezier representation to generate
the 2D cross section of a wing (NACA4412 IIRC).
I then extruded it with "linear_extrude" and was able to generate a 3D
wing. Using twist I was able to put a twist in the wing (*). Using
I was able to make a tapered wing. Looking good. I'm confident that I
can generate a swept wing as well. (But I haven't actually done it
Now there are still two things that I'd want to do with this. One is
to sweep/extrude along a path. I tried that with path_extrude_2d from
BOSL2. That works, but I lose the ability to twist and scale.
This would allow me to make a wing that has a curve to it instead of
just being swept and straight.
Another application is the new toroidal props that are in the news
this week. (google toroidal props and you'll find them).
The last application is to make a fan blade. Those have a wing profile
that will get bigger further to the outside. And I might want to sweep
the wing-profile back a bit to experiment. And this too has a tilt
that changes along the extrusion lenght.
If someone knows that this can already be done... I'd like to know
about it. If not, fine. No worries.
But for those who are working on another path_extrude implementation,
this is a "use-case" that you might want to support. Or not. Keep
it in mind....
Roger.
(*) The twist together with the wing sweep ensures good "stall"
characteristics of the aircraft. If you don't believe me that wings
have this twist look at a hanglider from behind at takeoff
The thumbnail of this footage is the image I was looking for.
Even if this is a picture of a hang glider, airliners have this too.
The reason for such a twist in the wing is that if a stall is
imminent, the wing stalls (loses lift) in the middle first, while the
wingtips, which are further back still have lift. Thus the nose drops
and the aircraft takes up speed again and continues to fly. This'll
cost you some height but at least you're flying again which is
preferable to being helpless until you hit the ground. (AF447 managed
to hit the ocean by not allowing the plane to exit the stall by giving
lots of "nose up" input. Turkish 1951 and Asiana 214 hit the ground
because they didn't have enough height for the stall recovery to
work. Most cases where it DOES work end up being an incident instead
of an accident.)
On Sat, Jan 28, 2023 at 07:43:04AM +0530, Sanjeev Prabhakar wrote:
Looks great 👌
On Sat, 28 Jan, 2023, 4:39 am Guenther Sohler, <
Hi Adriano,
Sorry, I got you wrong apparently.
I am now using a rectangle 3x10 as the extrude path and I have
polygon, which looks like an "U" Shape.
The thing rotates successfully around the extrusion axis all 360
and there aren't manifold problems at all during that time.
In each corner the successor segment has exactly one orientation
fits, so I believe it's not ambiguous at all.
And yes, my implementation is missing the "closed loop option"
implement that next.
[image: image.png]
On Fri, Jan 27, 2023 at 11:09 PM Adrian Mariano <avm4@cornell.edu
The rectangle I was talking about is the path, not the cross
The point is that you need to decide how to orient the cross
each corner of the rectangle, and an ambiguity exists that does
in the case with a smooth curve, so simply using the half-angle
the desired result. Video didn't seem notable. Not sure what I
Hi Adrian, when i Use an rectangle 10x3 as a Profile , this
present in any Cross Section along the path when little apart
Corners of course.
This ist Independent from the original Rotation of the path or
Angles between the path Segments.as Well as i. Bosl2: faces
interec.but watch the Video. Pictures Tell more than 1000 words.
Adrian Mariano avm4@cornell.edu schrieb am Fr., 27. Jän.
Guenther, I'm not sure what you mean. Having points widely
be done, of course. It's just harder to define the problem, I
perhaps not the place to start. Nothing in BOSL2 assumes
point spacing, but if the points are far apart you may find
like the automatically computed derivatives, especially if the
short. And transitions between the sections may be more
something odd. Consider a rectangle that is 10 x 3. What are
derivatives at the end? Are they 45 deg angles? Or do they
aspect ratio of the rectangle? Either option can be defended
The BOSL2 implementation is very general and should be able
situation, as long as the sections don't lead to a
Hi Adrian,
There are many great effects, which you can achieve when
points of the path wide enough apart.
Of course The Tangent and the normals (but especially the
between x and y axis) need be correct, but then it looks
With my approach I can easily immitate your solution by
points close together and skip the axis scaling(maybe worth an
My Vision and my approach which I have chosen actually came
name .
On Fri, Jan 27, 2023 at 1:08 PM Rogier Wolff <
FYI,
Freya Holmer worked on defining a "normal" or "reference"
a path recently. She works in "gaming", so she has built
found out into some library that she is making. So for those
to delve into that, it probably pays to watch her videos on
and then delve into figuring out if she has published the
That said, she's interested in fluid curves and motions. So
"paths" are neat splines....
Roger.
On Fri, Jan 27, 2023 at 06:43:11AM -0500, Adrian Mariano
I agree with Sanjeev that it's better to focus on the case
together. The problem is that some of the approaches are
define, or simply won't work, if you have the points on
discrete and far apart. You need to compute tangent and
path, so how do you do that at corners on a path with very
There may be end effects in this computation, which will be
nuisance if you have only four points. One of the obvious
choosing the rotation of the sections relies on the path
together and may produce bizarre results when they are too
On Fri, Jan 27, 2023 at 4:39 AM Guenther Sohler <
Adrian,
Thank you for the hint and the direct link.
I am happy to compare my implementation against yours to
differences.
Sanjeer, Thank you for your input.
Your output looks very impressive and I want to reach
Personally I believe the challenge is to get it correct
points first.
The error will be much more clearly visible when
Finally, using many points to make it look smooth is just
Probably
spline and many other functions are viable.
Maybe its also there in BOSL2, will check later.
Thank you for your answers!
On Thu, Jan 26, 2023 at 10:50 PM Adrian Mariano <
Guenther, I'm a little unsure of your goal here. If
implement path_sweep for the fun of it that's fine, of
been done before by many people in OpenSCAD, starting
list-comprehension-demos and also in dotSCAD, and BOSL2.
exist already as OpenSCAD code. so a demonstration isn't
possibilities. There are some very difficult questions
the cross sections as you move around the path, and
possible that you've gotten it wrong...assuming that
what "wrong" means. It's not clear. There was a very
forum many years ago about the various complications. I
several different algorithms in BOSL2 for choosing how
sections. You might want to take a look to get more
Hi List,
right now i am attempting to add a path_extrude
This shows an arbitrary path_extrude of a square,
but in the video you can clearly see the triangles in
so i believe the cross section at the joints is not
IMHO the square must turn to a deltoid especially when
is rotated by 45 degrees to be correct.
Can anybody shade some light on that for me ?
OpenSCAD mailing list
To unsubscribe send an email to
OpenSCAD mailing list
To unsubscribe send an email to
OpenSCAD mailing list
To unsubscribe send an email to
OpenSCAD mailing list
To unsubscribe send an email to
your a is going up. -- Chris Hadfield about flying up the
shuttle.
OpenSCAD mailing list
To unsubscribe send an email to
OpenSCAD mailing list
To unsubscribe send an email to
OpenSCAD mailing list
To unsubscribe send an email to
OpenSCAD mailing list
To unsubscribe send an email to
**
** Delftechpark 11 2628 XJ Delft, The Netherlands. KVK:
f equals m times a. When your f is steady, and your m is going down
your a is going up. -- Chris Hadfield about flying up the space
something like this?
[image: Screenshot 2023-01-31 at 7.22.57 AM.png]
On Tue, 31 Jan 2023 at 03:04, Adrian Mariano <avm4@cornell.edu> wrote:
> Your second example didn't run and I couldn't understand what you were
> trying to do there. But it sounds like you're saying the leading edge of
> the blade should be sharp and then it should get fat (like an airfoil) as
> we move back along the blade, and then thin again. If the radial sections
> are all rectangles, just with different thicknesses, that can be done using
> the method I outlined, where you get the transformation list from
> path_sweep(). On the other hand, the geometry is simple enough that you
> may not really need path sweep. It might work ok to construct your slices
> and then rotate them as desired and pass to skin().
>
> I wouldn't imagine that trying to operate on the polyhedron output of
> path_sweep() would be the best approach. Working on the slices and
> transformations is going to be easier.
>
> On Mon, Jan 30, 2023 at 3:08 PM Rogier Wolff <R.E.Wolff@bitwizard.nl>
> wrote:
>
>> On Sun, Jan 29, 2023 at 11:30:06AM -0500, Adrian Mariano wrote:
>> > Rogier, path_extrude2d() is a limited module that you should use only in
>> > the case where you can't access the points in your geometry. It will be
>> > slow, and is likely to produce an inferior result. It works by creating
>> > short extrusions of your geometry and then joining them with
>> > rotate_extruded joint sections that slightly overlap.
>> >
>> > It sounds like you made your profile using beziers, which means you have
>> > access to the profile as a point list. So unless your path produces
>> > self-intersections, you should therefore be using path_sweep, which will
>> > let you twist and will be much faster. It creates a single polyhedron,
>>
>> OK Good.
>>
>> Just to give you more of an understanding what I want to be able to do...
>>
>> Many openscad examples do
>>
>> cylinder (d=30,h=30); // hub.
>> linear_extrude (height=30, twist=100, $fn=100)
>> for (a=[0:120:359]) rotate (a) translate ([15,-1]) square ([45,2]);
>>
>> as an example of a fan blade. This is very suboptimal if you actually want
>> performance.
>>
>> The blades just are flat surfaces to the oncoming air. An actual
>> wing profile is much more efficient in getting the air to move. So...
>> along an arc concentric to the axis of rotation, the intersection should
>> be a wing profile.
>>
>> t=1; r=15+45*$t;
>> intersection () {
>> fan ();
>> translate ([0,0,-1])
>> difference () {cylinder (r=r,h=32);cylinder (r=r-t,h=32);}
>> }
>>
>> Each of those slices should look like a wing profile.
>>
>> The linear extrusion with twist does get one thing right. As this thing
>> rotates through 100 degrees, the air should get pushed 30mm along
>> the path through the fan.
>>
>> If you assume the air is already moving at this 30mm/100degrees of
>> rotation of the fan, the fan blades are simply cutting through the air
>> at no aoa.
>>
>> To optimize this, you need to start pushing the air, so you need an
>> angle-of-attack. And an airfoil as the cross section of the blade.
>>
>> Roger.
>>
>>
>>
>>
>> >
>> https://github.com/revarbat/BOSL2/wiki/skin.scad#functionmodule-path_sweep
>> >
>> > For your more complicated task where you would like to change the cross
>> > section as you go, it can be done, but I don't know enough about your
>> plan
>> > to say which way is the best. If you can characterize your goal by
>> saying
>> > you want to sweep along the path but also you want to apply some other
>> > transformation to the profile at different points in the path, then you
>> can
>> > do that using the generic sweep() module. The sweep module constructs a
>> > polyhedron by taking your profile and applying a list of
>> transformations to
>> > it to define the cross sections. The cross sections are then linked up
>> to
>> > create a polyhedron. In fact, the way path_sweep() works is by
>> computing a
>> > transformation list that it passes to sweep. So if you want to make a
>> > modified path_sweep() the simplest method would be to invoke
>> path_sweep()
>> > with transforms=true to get that transformation list. Then you
>> multiply in
>> > your own modifications and call sweep().
>> >
>> > If what you want to do involves changes in the form that are not a
>> > transformation, then you need to use skin() to do the job. You would
>> > compute all the cross sections and invoke skin, or maybe
>> > vnf_vertex_array(). It might still be advantageous to get the
>> > transformation list from path_sweep() to use as a starting point.
>> >
>> > The situation with having path_extrude() in OpenSCAD has been discussed
>> I
>> > think as long ago as 2015, with an extremely long thread on this forum.
>> > The problem is not that nobody sat down to write the code. The problem
>> is
>> > that nobody was able to actually define the behavior of what
>> path_extrude
>> > should do. So somebody who wants to get path_extrude() into OpenSCAD
>> > really needs to focus not on the implementation, but on understanding
>> the
>> > full complexity of the problem and presenting a coherent and complete
>> > resolution of all the issues and complexity. Then and only then does it
>> > make sense to pursue implementation, once there is some kind of
>> agreement
>> > from other developers that a good approach has been identified. Writing
>> > code that handles a few easy cases will go nowhere.
>> >
>> > Perhaps the right answer might be to push for a geometry based
>> equivalent
>> > to the sweep() module. It would be a huge advantage if we had a generic
>> > sweep() in native OpenSCAD that accepted a list of transformation
>> matrices
>> > and then operated on 2d geometry to link up the result into a
>> polyhedron,
>> > where it was not constrained by the requirement that we avoid
>> > self-intersection. I think there are still complications, but many
>> fewer
>> > complications than trying to do path_extrude().
>> >
>> >
>> >
>> > On Sun, Jan 29, 2023 at 10:30 AM Rogier Wolff <R.E.Wolff@bitwizard.nl>
>> > wrote:
>> >
>> > > Hi all,
>> > >
>> > > With all the work on path_extrude I got "nerd-sniped" into making some
>> > > wings. I downloaded BOSL2, used a bezier representation to generate
>> > > the 2D cross section of a wing (NACA4412 IIRC).
>> > >
>> > > I then extruded it with "linear_extrude" and was able to generate a 3D
>> > > wing. Using twist I was able to put a twist in the wing (*). Using
>> scale,
>> > > I was able to make a tapered wing. Looking good. I'm confident that I
>> > > can generate a swept wing as well. (But I haven't actually done it
>> yet).
>> > >
>> > > Now there are still two things that I'd want to do with this. One is
>> > > to sweep/extrude along a path. I tried that with path_extrude_2d from
>> > > BOSL2. That works, but I lose the ability to twist and scale.
>> > >
>> > > This would allow me to make a wing that has a curve to it instead of
>> > > just being swept and straight.
>> > >
>> > > Another application is the new toroidal props that are in the news
>> > > this week. (google toroidal props and you'll find them).
>> > >
>> > > The last application is to make a fan blade. Those have a wing profile
>> > > that will get bigger further to the outside. And I might want to sweep
>> > > the wing-profile back a bit to experiment. And this too has a tilt
>> > > that changes along the extrusion lenght.
>> > >
>> > >
>> > > If someone knows that this can already be done... I'd like to know
>> > > about it. If not, fine. No worries.
>> > >
>> > > But for those who are working on another path_extrude implementation,
>> > > this is a "use-case" that you might want to support. Or not. Keep
>> > > it in mind....
>> > >
>> > > Roger.
>> > >
>> > >
>> > > (*) The twist together with the wing sweep ensures good "stall"
>> > > characteristics of the aircraft. If you don't believe me that wings
>> > > have this twist look at a hanglider from behind at takeoff
>> > >
>> https://www.pond5.com/stock-footage/item/64591446-hang-glider-takeoff
>> > > The thumbnail of this footage is the image I was looking for.
>> > > Even if this is a picture of a hang glider, airliners have this too.
>> > >
>> > > The reason for such a twist in the wing is that if a stall is
>> > > imminent, the wing stalls (loses lift) in the middle first, while the
>> > > wingtips, which are further back still have lift. Thus the nose drops
>> > > and the aircraft takes up speed again and continues to fly. This'll
>> > > cost you some height but at least you're flying again which is
>> > > preferable to being helpless until you hit the ground. (AF447 managed
>> > > to hit the ocean by not allowing the plane to exit the stall by giving
>> > > lots of "nose up" input. Turkish 1951 and Asiana 214 hit the ground
>> > > because they didn't have enough height for the stall recovery to
>> > > work. Most cases where it DOES work end up being an incident instead
>> > > of an accident.)
>> > >
>> > > On Sat, Jan 28, 2023 at 07:43:04AM +0530, Sanjeev Prabhakar wrote:
>> > > > Looks great 👌
>> > > >
>> > > > On Sat, 28 Jan, 2023, 4:39 am Guenther Sohler, <
>> > > guenther.sohler@gmail.com>
>> > > > wrote:
>> > > >
>> > > > > Hi Adriano,
>> > > > >
>> > > > > Sorry, I got you wrong apparently.
>> > > > > I am now using a rectangle 3x10 as the extrude path and I have
>> created
>> > > a
>> > > > > polygon, which looks like an "U" Shape.
>> > > > > The thing rotates successfully around the extrusion axis all 360
>> > > degrees
>> > > > > and there aren't manifold problems at all during that time.
>> > > > > In each corner the successor segment has exactly one orientation
>> where
>> > > it
>> > > > > fits, so I believe it's not ambiguous at all.
>> > > > >
>> > > > > And yes, my implementation is missing the "closed loop option"
>> but I
>> > > can
>> > > > > implement that next.
>> > > > >
>> > > > >
>> > > > >
>> > > > > [image: image.png]
>> > > > >
>> > > > > On Fri, Jan 27, 2023 at 11:09 PM Adrian Mariano <avm4@cornell.edu
>> >
>> > > wrote:
>> > > > >
>> > > > >> The rectangle I was talking about is the path, not the cross
>> section.
>> > > > >> The point is that you need to decide how to orient the cross
>> section
>> > > at
>> > > > >> each corner of the rectangle, and an ambiguity exists that does
>> not
>> > > exist
>> > > > >> in the case with a smooth curve, so simply using the half-angle
>> may
>> > > not be
>> > > > >> the desired result. Video didn't seem notable. Not sure what I
>> was
>> > > > >> supposed to be seeing.
>> > > > >>
>> > > > >> On Fri, Jan 27, 2023 at 4:51 PM Guenther Sohler <
>> > > > >> guenther.sohler@gmail.com> wrote:
>> > > > >>
>> > > > >>> Hi Adrian, when i Use an rectangle 10x3 as a Profile , this
>> Profile
>> > > is
>> > > > >>> present in any Cross Section along the path when little apart
>> from
>> > > the
>> > > > >>> Corners of course.
>> > > > >>> This ist Independent from the original Rotation of the path or
>> the
>> > > > >>> Angles between the path Segments.as Well as i. Bosl2: faces
>> must Not
>> > > > >>> interec.but watch the Video. Pictures Tell more than 1000 words.
>> > > > >>>
>> > > > >>> Adrian Mariano <avm4@cornell.edu> schrieb am Fr., 27. Jän.
>> 2023,
>> > > 22:31:
>> > > > >>>
>> > > > >>>> Guenther, I'm not sure what you mean. Having points widely
>> spaced
>> > > can
>> > > > >>>> be done, of course. It's just harder to define the problem, I
>> > > think, so
>> > > > >>>> perhaps not the place to start. Nothing in BOSL2 assumes
>> anything
>> > > about
>> > > > >>>> point spacing, but if the points are far apart you may find
>> that
>> > > you don't
>> > > > >>>> like the automatically computed derivatives, especially if the
>> path
>> > > is very
>> > > > >>>> short. And transitions between the sections may be more
>> likely to
>> > > do
>> > > > >>>> something odd. Consider a rectangle that is 10 x 3. What are
>> the
>> > > > >>>> derivatives at the end? Are they 45 deg angles? Or do they
>> > > respect the
>> > > > >>>> aspect ratio of the rectangle? Either option can be defended
>> as
>> > > correct.
>> > > > >>>> The BOSL2 implementation is very general and should be able
>> to
>> > > handle any
>> > > > >>>> situation, as long as the sections don't lead to a
>> > > self-intersecting and
>> > > > >>>> hence invalid polyhedron.
>> > > > >>>>
>> > > > >>>> On Fri, Jan 27, 2023 at 3:39 PM Guenther Sohler <
>> > > > >>>> guenther.sohler@gmail.com> wrote:
>> > > > >>>>
>> > > > >>>>> Hi Adrian,
>> > > > >>>>> There are many great effects, which you can achieve when
>> having
>> > > the
>> > > > >>>>> points of the path wide enough apart.
>> > > > >>>>> Of course The Tangent and the normals (but especially the
>> angle
>> > > > >>>>> between x and y axis) need be correct, but then it looks
>> really
>> > > cool.
>> > > > >>>>> With my approach I can easily immitate your solution by
>> using many
>> > > > >>>>> points close together and skip the axis scaling(maybe worth an
>> > > option)
>> > > > >>>>> My Vision and my approach which I have chosen actually came
>> true.
>> > > > >>>>>
>> > > > >>>>> https://www.youtube.com/watch?v=1m5OeK2lW4U
>> > > > >>>>>
>> > > > >>>>> if it's too different from BOSL extrude maybe we can choose
>> > > another
>> > > > >>>>> name .
>> > > > >>>>>
>> > > > >>>>> On Fri, Jan 27, 2023 at 1:08 PM Rogier Wolff <
>> > > R.E.Wolff@bitwizard.nl>
>> > > > >>>>> wrote:
>> > > > >>>>>
>> > > > >>>>>>
>> > > > >>>>>> FYI,
>> > > > >>>>>>
>> > > > >>>>>> Freya Holmer worked on defining a "normal" or "reference"
>> vector
>> > > along
>> > > > >>>>>> a path recently. She works in "gaming", so she has built
>> what she
>> > > > >>>>>> found out into some library that she is making. So for those
>> > > wishing
>> > > > >>>>>> to delve into that, it probably pays to watch her videos on
>> > > youtube
>> > > > >>>>>> and then delve into figuring out if she has published the
>> code.
>> > > > >>>>>>
>> > > > >>>>>> That said, she's interested in fluid curves and motions. So
>> all
>> > > her
>> > > > >>>>>> "paths" are neat splines....
>> > > > >>>>>>
>> > > > >>>>>> Roger.
>> > > > >>>>>>
>> > > > >>>>>> On Fri, Jan 27, 2023 at 06:43:11AM -0500, Adrian Mariano
>> wrote:
>> > > > >>>>>> > I agree with Sanjeev that it's better to focus on the case
>> of
>> > > > >>>>>> points close
>> > > > >>>>>> > together. The problem is that some of the approaches are
>> > > difficult
>> > > > >>>>>> to
>> > > > >>>>>> > define, or simply won't work, if you have the points on
>> the path
>> > > > >>>>>> very
>> > > > >>>>>> > discrete and far apart. You need to compute tangent and
>> normal
>> > > to
>> > > > >>>>>> the
>> > > > >>>>>> > path, so how do you do that at corners on a path with very
>> few
>> > > > >>>>>> points?
>> > > > >>>>>> > There may be end effects in this computation, which will be
>> > > more of
>> > > > >>>>>> a
>> > > > >>>>>> > nuisance if you have only four points. One of the obvious
>> > > > >>>>>> algorithms for
>> > > > >>>>>> > choosing the rotation of the sections relies on the path
>> points
>> > > > >>>>>> being close
>> > > > >>>>>> > together and may produce bizarre results when they are too
>> far
>> > > > >>>>>> apart.
>> > > > >>>>>> >
>> > > > >>>>>> > On Fri, Jan 27, 2023 at 4:39 AM Guenther Sohler <
>> > > > >>>>>> guenther.sohler@gmail.com>
>> > > > >>>>>> > wrote:
>> > > > >>>>>> >
>> > > > >>>>>> > > Adrian,
>> > > > >>>>>> > > Thank you for the hint and the direct link.
>> > > > >>>>>> > > I am happy to compare my implementation against yours to
>> see
>> > > > >>>>>> where are the
>> > > > >>>>>> > > differences.
>> > > > >>>>>> > >
>> > > > >>>>>> > >
>> > > > >>>>>> > > Sanjeer, Thank you for your input.
>> > > > >>>>>> > > Your output looks very impressive and I want to reach
>> that
>> > > too.
>> > > > >>>>>> > > Personally I believe the challenge is to get it correct
>> with
>> > > very
>> > > > >>>>>> few
>> > > > >>>>>> > > points first.
>> > > > >>>>>> > > The error will be much more clearly visible when
>> choosing few
>> > > > >>>>>> points.
>> > > > >>>>>> > > Finally, using many points to make it look smooth is just
>> > > > >>>>>> exercise.
>> > > > >>>>>> > > Probably
>> > > > >>>>>> > > spline and many other functions are viable.
>> > > > >>>>>> > > Maybe its also there in BOSL2, will check later.
>> > > > >>>>>> > >
>> > > > >>>>>> > > Thank you for your answers!
>> > > > >>>>>> > >
>> > > > >>>>>> > >
>> > > > >>>>>> > >
>> > > > >>>>>> > >
>> > > > >>>>>> > > On Thu, Jan 26, 2023 at 10:50 PM Adrian Mariano <
>> > > avm4@cornell.edu>
>> > > > >>>>>> wrote:
>> > > > >>>>>> > >
>> > > > >>>>>> > >> Guenther, I'm a little unsure of your goal here. If
>> you are
>> > > > >>>>>> excited to
>> > > > >>>>>> > >> implement path_sweep for the fun of it that's fine, of
>> > > course,
>> > > > >>>>>> but this has
>> > > > >>>>>> > >> been done before by many people in OpenSCAD, starting
>> with
>> > > > >>>>>> > >> list-comprehension-demos and also in dotSCAD, and BOSL2.
>> > > These
>> > > > >>>>>> methods
>> > > > >>>>>> > >> exist already as OpenSCAD code. so a demonstration isn't
>> > > needed
>> > > > >>>>>> to show the
>> > > > >>>>>> > >> possibilities. There are some very difficult questions
>> about
>> > > how
>> > > > >>>>>> to rotate
>> > > > >>>>>> > >> the cross sections as you move around the path, and
>> yes, it's
>> > > > >>>>>> entirely
>> > > > >>>>>> > >> possible that you've gotten it wrong...assuming that
>> you can
>> > > > >>>>>> figure out
>> > > > >>>>>> > >> what "wrong" means. It's not clear. There was a very
>> long
>> > > > >>>>>> thread on the
>> > > > >>>>>> > >> forum many years ago about the various complications. I
>> > > > >>>>>> implemented
>> > > > >>>>>> > >> several different algorithms in BOSL2 for choosing how
>> to
>> > > line
>> > > > >>>>>> up the
>> > > > >>>>>> > >> sections. You might want to take a look to get more
>> > > > >>>>>> understanding of the
>> > > > >>>>>> > >> issues.
>> > > > >>>>>> > >>
>> > > > >>>>>> > >>
>> > > > >>>>>>
>> > >
>> https://github.com/revarbat/BOSL2/wiki/skin.scad#functionmodule-path_sweep
>> > > > >>>>>> > >>
>> > > > >>>>>> > >>
>> > > > >>>>>> > >> On Thu, Jan 26, 2023 at 11:26 AM Guenther Sohler <
>> > > > >>>>>> > >> guenther.sohler@gmail.com> wrote:
>> > > > >>>>>> > >>
>> > > > >>>>>> > >>> Hi List,
>> > > > >>>>>> > >>>
>> > > > >>>>>> > >>> right now i am attempting to add a path_extrude
>> function to
>> > > > >>>>>> openscad
>> > > > >>>>>> > >>> A demonstration what i am talking about is here:
>> > > > >>>>>> > >>>
>> > > > >>>>>> > >>> https://youtu.be/igMupYGvX1s
>> > > > >>>>>> > >>>
>> > > > >>>>>> > >>> (sorry, its in python, but still i hope you get the
>> idea. )
>> > > > >>>>>> > >>> This shows an arbitrary path_extrude of a square,
>> > > > >>>>>> > >>> but in the video you can clearly see the triangles in
>> the
>> > > faces,
>> > > > >>>>>> > >>> so i believe the cross section at the joints is not
>> correct.
>> > > > >>>>>> > >>> IMHO the square must turn to a deltoid especially when
>> the
>> > > base
>> > > > >>>>>> square
>> > > > >>>>>> > >>> is rotated by 45 degrees to be correct.
>> > > > >>>>>> > >>> Can anybody shade some light on that for me ?
>> > > > >>>>>> > >>>
>> > > > >>>>>> > >>>
>> > > > >>>>>> > >>> _______________________________________________
>> > > > >>>>>> > >>> OpenSCAD mailing list
>> > > > >>>>>> > >>> To unsubscribe send an email to
>> > > > >>>>>> discuss-leave@lists.openscad.org
>> > > > >>>>>> > >>>
>> > > > >>>>>> > >> _______________________________________________
>> > > > >>>>>> > >> OpenSCAD mailing list
>> > > > >>>>>> > >> To unsubscribe send an email to
>> > > discuss-leave@lists.openscad.org
>> > > > >>>>>> > >>
>> > > > >>>>>> > > _______________________________________________
>> > > > >>>>>> > > OpenSCAD mailing list
>> > > > >>>>>> > > To unsubscribe send an email to
>> > > discuss-leave@lists.openscad.org
>> > > > >>>>>> > >
>> > > > >>>>>>
>> > > > >>>>>> > _______________________________________________
>> > > > >>>>>> > OpenSCAD mailing list
>> > > > >>>>>> > To unsubscribe send an email to
>> > > discuss-leave@lists.openscad.org
>> > > > >>>>>>
>> > > > >>>>>>
>> > > > >>>>>> --
>> > > > >>>>>> ** R.E.Wolff@BitWizard.nl ** https://www.BitWizard.nl/ **
>> > > > >>>>>> +31-15-2049110 **
>> > > > >>>>>> ** Delftechpark 11 2628 XJ Delft, The Netherlands. KVK:
>> > > > >>>>>> 27239233 **
>> > > > >>>>>> f equals m times a. When your f is steady, and your m is
>> going
>> > > down
>> > > > >>>>>> your a is going up. -- Chris Hadfield about flying up the
>> space
>> > > > >>>>>> shuttle.
>> > > > >>>>>> _______________________________________________
>> > > > >>>>>> OpenSCAD mailing list
>> > > > >>>>>> To unsubscribe send an email to
>> discuss-leave@lists.openscad.org
>> > > > >>>>>>
>> > > > >>>>> _______________________________________________
>> > > > >>>>> OpenSCAD mailing list
>> > > > >>>>> To unsubscribe send an email to
>> discuss-leave@lists.openscad.org
>> > > > >>>>>
>> > > > >>>> _______________________________________________
>> > > > >>>> OpenSCAD mailing list
>> > > > >>>> To unsubscribe send an email to
>> discuss-leave@lists.openscad.org
>> > > > >>>>
>> > > > >>> _______________________________________________
>> > > > >>> OpenSCAD mailing list
>> > > > >>> To unsubscribe send an email to
>> discuss-leave@lists.openscad.org
>> > > > >>>
>> > > > >> _______________________________________________
>> > > > >> OpenSCAD mailing list
>> > > > >> To unsubscribe send an email to discuss-leave@lists.openscad.org
>> > > > >>
>> > > > > _______________________________________________
>> > > > > OpenSCAD mailing list
>> > > > > To unsubscribe send an email to discuss-leave@lists.openscad.org
>> > > > >
>> > >
>> > >
>> > >
>> > > > _______________________________________________
>> > > > OpenSCAD mailing list
>> > > > To unsubscribe send an email to discuss-leave@lists.openscad.org
>> > >
>> > >
>> > > --
>> > > ** R.E.Wolff@BitWizard.nl ** https://www.BitWizard.nl/ **
>> +31-15-2049110
>> > > **
>> > > ** Delftechpark 11 2628 XJ Delft, The Netherlands. KVK:
>> 27239233 **
>> > > f equals m times a. When your f is steady, and your m is going down
>> > > your a is going up. -- Chris Hadfield about flying up the space
>> shuttle.
>> > > _______________________________________________
>> > > OpenSCAD mailing list
>> > > To unsubscribe send an email to discuss-leave@lists.openscad.org
>> > >
>>
>> > _______________________________________________
>> > OpenSCAD mailing list
>> > To unsubscribe send an email to discuss-leave@lists.openscad.org
>>
>>
>> --
>> ** R.E.Wolff@BitWizard.nl ** https://www.BitWizard.nl/ ** +31-15-2049110
>> **
>> ** Delftechpark 11 2628 XJ Delft, The Netherlands. KVK: 27239233
>> **
>> f equals m times a. When your f is steady, and your m is going down
>> your a is going up. -- Chris Hadfield about flying up the space shuttle.
>> _______________________________________________
>> OpenSCAD mailing list
>> To unsubscribe send an email to discuss-leave@lists.openscad.org
>>
> _______________________________________________
> OpenSCAD mailing list
> To unsubscribe send an email to discuss-leave@lists.openscad.org
>
SP
Sanjeev Prabhakar
Tue, Jan 31, 2023 2:06 AM
Ah it's incorrect
Understood your point and I think it's difficult
On Tue, 31 Jan, 2023, 7:24 am Sanjeev Prabhakar, sprabhakar2006@gmail.com
wrote:
something like this?
[image: Screenshot 2023-01-31 at 7.22.57 AM.png]
On Tue, 31 Jan 2023 at 03:04, Adrian Mariano avm4@cornell.edu wrote:
Your second example didn't run and I couldn't understand what you were
trying to do there. But it sounds like you're saying the leading edge of
the blade should be sharp and then it should get fat (like an airfoil) as
we move back along the blade, and then thin again. If the radial sections
are all rectangles, just with different thicknesses, that can be done using
the method I outlined, where you get the transformation list from
path_sweep(). On the other hand, the geometry is simple enough that you
may not really need path sweep. It might work ok to construct your slices
and then rotate them as desired and pass to skin().
I wouldn't imagine that trying to operate on the polyhedron output of
path_sweep() would be the best approach. Working on the slices and
transformations is going to be easier.
On Mon, Jan 30, 2023 at 3:08 PM Rogier Wolff R.E.Wolff@bitwizard.nl
wrote:
On Sun, Jan 29, 2023 at 11:30:06AM -0500, Adrian Mariano wrote:
Rogier, path_extrude2d() is a limited module that you should use only
the case where you can't access the points in your geometry. It will
slow, and is likely to produce an inferior result. It works by
short extrusions of your geometry and then joining them with
rotate_extruded joint sections that slightly overlap.
It sounds like you made your profile using beziers, which means you
access to the profile as a point list. So unless your path produces
self-intersections, you should therefore be using path_sweep, which
let you twist and will be much faster. It creates a single polyhedron,
OK Good.
Just to give you more of an understanding what I want to be able to
do...
Many openscad examples do
cylinder (d=30,h=30); // hub.
linear_extrude (height=30, twist=100, $fn=100)
for (a=[0:120:359]) rotate (a) translate ([15,-1]) square ([45,2]);
as an example of a fan blade. This is very suboptimal if you actually
want
performance.
The blades just are flat surfaces to the oncoming air. An actual
wing profile is much more efficient in getting the air to move. So...
along an arc concentric to the axis of rotation, the intersection should
be a wing profile.
t=1; r=15+45*$t;
intersection () {
fan ();
translate ([0,0,-1])
difference () {cylinder (r=r,h=32);cylinder (r=r-t,h=32);}
}
Each of those slices should look like a wing profile.
The linear extrusion with twist does get one thing right. As this thing
rotates through 100 degrees, the air should get pushed 30mm along
the path through the fan.
If you assume the air is already moving at this 30mm/100degrees of
rotation of the fan, the fan blades are simply cutting through the air
at no aoa.
To optimize this, you need to start pushing the air, so you need an
angle-of-attack. And an airfoil as the cross section of the blade.
Roger.
For your more complicated task where you would like to change the cross
section as you go, it can be done, but I don't know enough about your
to say which way is the best. If you can characterize your goal by
you want to sweep along the path but also you want to apply some other
transformation to the profile at different points in the path, then
do that using the generic sweep() module. The sweep module constructs
polyhedron by taking your profile and applying a list of
it to define the cross sections. The cross sections are then linked
create a polyhedron. In fact, the way path_sweep() works is by
transformation list that it passes to sweep. So if you want to make a
modified path_sweep() the simplest method would be to invoke
with transforms=true to get that transformation list. Then you
your own modifications and call sweep().
If what you want to do involves changes in the form that are not a
transformation, then you need to use skin() to do the job. You would
compute all the cross sections and invoke skin, or maybe
vnf_vertex_array(). It might still be advantageous to get the
transformation list from path_sweep() to use as a starting point.
The situation with having path_extrude() in OpenSCAD has been
think as long ago as 2015, with an extremely long thread on this forum.
The problem is not that nobody sat down to write the code. The
that nobody was able to actually define the behavior of what
should do. So somebody who wants to get path_extrude() into OpenSCAD
really needs to focus not on the implementation, but on understanding
full complexity of the problem and presenting a coherent and complete
resolution of all the issues and complexity. Then and only then does
make sense to pursue implementation, once there is some kind of
from other developers that a good approach has been identified.
code that handles a few easy cases will go nowhere.
Perhaps the right answer might be to push for a geometry based
to the sweep() module. It would be a huge advantage if we had a
sweep() in native OpenSCAD that accepted a list of transformation
and then operated on 2d geometry to link up the result into a
where it was not constrained by the requirement that we avoid
self-intersection. I think there are still complications, but many
complications than trying to do path_extrude().
On Sun, Jan 29, 2023 at 10:30 AM Rogier Wolff R.E.Wolff@bitwizard.nl
wrote:
Hi all,
With all the work on path_extrude I got "nerd-sniped" into making
wings. I downloaded BOSL2, used a bezier representation to generate
the 2D cross section of a wing (NACA4412 IIRC).
I then extruded it with "linear_extrude" and was able to generate a
wing. Using twist I was able to put a twist in the wing (*). Using
I was able to make a tapered wing. Looking good. I'm confident that I
can generate a swept wing as well. (But I haven't actually done it
Now there are still two things that I'd want to do with this. One is
to sweep/extrude along a path. I tried that with path_extrude_2d from
BOSL2. That works, but I lose the ability to twist and scale.
This would allow me to make a wing that has a curve to it instead of
just being swept and straight.
Another application is the new toroidal props that are in the news
this week. (google toroidal props and you'll find them).
The last application is to make a fan blade. Those have a wing
that will get bigger further to the outside. And I might want to
the wing-profile back a bit to experiment. And this too has a tilt
that changes along the extrusion lenght.
If someone knows that this can already be done... I'd like to know
about it. If not, fine. No worries.
But for those who are working on another path_extrude implementation,
this is a "use-case" that you might want to support. Or not. Keep
it in mind....
Roger.
(*) The twist together with the wing sweep ensures good "stall"
characteristics of the aircraft. If you don't believe me that wings
have this twist look at a hanglider from behind at takeoff
The thumbnail of this footage is the image I was looking for.
Even if this is a picture of a hang glider, airliners have this too.
The reason for such a twist in the wing is that if a stall is
imminent, the wing stalls (loses lift) in the middle first, while the
wingtips, which are further back still have lift. Thus the nose drops
and the aircraft takes up speed again and continues to fly. This'll
cost you some height but at least you're flying again which is
preferable to being helpless until you hit the ground. (AF447 managed
to hit the ocean by not allowing the plane to exit the stall by
lots of "nose up" input. Turkish 1951 and Asiana 214 hit the ground
because they didn't have enough height for the stall recovery to
work. Most cases where it DOES work end up being an incident instead
of an accident.)
On Sat, Jan 28, 2023 at 07:43:04AM +0530, Sanjeev Prabhakar wrote:
Looks great 👌
On Sat, 28 Jan, 2023, 4:39 am Guenther Sohler, <
Hi Adriano,
Sorry, I got you wrong apparently.
I am now using a rectangle 3x10 as the extrude path and I have
polygon, which looks like an "U" Shape.
The thing rotates successfully around the extrusion axis all 360
and there aren't manifold problems at all during that time.
In each corner the successor segment has exactly one orientation
fits, so I believe it's not ambiguous at all.
And yes, my implementation is missing the "closed loop option"
implement that next.
[image: image.png]
On Fri, Jan 27, 2023 at 11:09 PM Adrian Mariano <
The rectangle I was talking about is the path, not the cross
The point is that you need to decide how to orient the cross
each corner of the rectangle, and an ambiguity exists that does
in the case with a smooth curve, so simply using the half-angle
the desired result. Video didn't seem notable. Not sure what
Hi Adrian, when i Use an rectangle 10x3 as a Profile , this
present in any Cross Section along the path when little apart
Corners of course.
This ist Independent from the original Rotation of the path or
Angles between the path Segments.as Well as i. Bosl2: faces
interec.but watch the Video. Pictures Tell more than 1000
Guenther, I'm not sure what you mean. Having points widely
be done, of course. It's just harder to define the problem, I
perhaps not the place to start. Nothing in BOSL2 assumes
point spacing, but if the points are far apart you may find
like the automatically computed derivatives, especially if
short. And transitions between the sections may be more
something odd. Consider a rectangle that is 10 x 3. What
derivatives at the end? Are they 45 deg angles? Or do they
aspect ratio of the rectangle? Either option can be
The BOSL2 implementation is very general and should be able
situation, as long as the sections don't lead to a
Hi Adrian,
There are many great effects, which you can achieve when
points of the path wide enough apart.
Of course The Tangent and the normals (but especially the
between x and y axis) need be correct, but then it looks
With my approach I can easily immitate your solution by
points close together and skip the axis scaling(maybe worth
My Vision and my approach which I have chosen actually came
name .
On Fri, Jan 27, 2023 at 1:08 PM Rogier Wolff <
FYI,
Freya Holmer worked on defining a "normal" or "reference"
a path recently. She works in "gaming", so she has built
found out into some library that she is making. So for those
to delve into that, it probably pays to watch her videos on
and then delve into figuring out if she has published the
That said, she's interested in fluid curves and motions. So
"paths" are neat splines....
Roger.
On Fri, Jan 27, 2023 at 06:43:11AM -0500, Adrian Mariano
I agree with Sanjeev that it's better to focus on the
together. The problem is that some of the approaches are
define, or simply won't work, if you have the points on
discrete and far apart. You need to compute tangent and
path, so how do you do that at corners on a path with
There may be end effects in this computation, which will
nuisance if you have only four points. One of the
choosing the rotation of the sections relies on the path
together and may produce bizarre results when they are
On Fri, Jan 27, 2023 at 4:39 AM Guenther Sohler <
Adrian,
Thank you for the hint and the direct link.
I am happy to compare my implementation against yours
differences.
Sanjeer, Thank you for your input.
Your output looks very impressive and I want to reach
Personally I believe the challenge is to get it correct
points first.
The error will be much more clearly visible when
Finally, using many points to make it look smooth is
Probably
spline and many other functions are viable.
Maybe its also there in BOSL2, will check later.
Thank you for your answers!
On Thu, Jan 26, 2023 at 10:50 PM Adrian Mariano <
Guenther, I'm a little unsure of your goal here. If
implement path_sweep for the fun of it that's fine, of
been done before by many people in OpenSCAD, starting
list-comprehension-demos and also in dotSCAD, and
exist already as OpenSCAD code. so a demonstration
possibilities. There are some very difficult questions
the cross sections as you move around the path, and
possible that you've gotten it wrong...assuming that
what "wrong" means. It's not clear. There was a very
forum many years ago about the various complications.
several different algorithms in BOSL2 for choosing how
sections. You might want to take a look to get more
Hi List,
right now i am attempting to add a path_extrude
This shows an arbitrary path_extrude of a square,
but in the video you can clearly see the triangles in
so i believe the cross section at the joints is not
IMHO the square must turn to a deltoid especially
is rotated by 45 degrees to be correct.
Can anybody shade some light on that for me ?
OpenSCAD mailing list
To unsubscribe send an email to
OpenSCAD mailing list
To unsubscribe send an email to
OpenSCAD mailing list
To unsubscribe send an email to
OpenSCAD mailing list
To unsubscribe send an email to
your a is going up. -- Chris Hadfield about flying up the
shuttle.
OpenSCAD mailing list
To unsubscribe send an email to
OpenSCAD mailing list
To unsubscribe send an email to
OpenSCAD mailing list
To unsubscribe send an email to
OpenSCAD mailing list
To unsubscribe send an email to
OpenSCAD mailing list
To unsubscribe send an email to
**
** Delftechpark 11 2628 XJ Delft, The Netherlands. KVK:
f equals m times a. When your f is steady, and your m is going down
your a is going up. -- Chris Hadfield about flying up the space
Ah it's incorrect
Understood your point and I think it's difficult
On Tue, 31 Jan, 2023, 7:24 am Sanjeev Prabhakar, <sprabhakar2006@gmail.com>
wrote:
> something like this?
> [image: Screenshot 2023-01-31 at 7.22.57 AM.png]
>
> On Tue, 31 Jan 2023 at 03:04, Adrian Mariano <avm4@cornell.edu> wrote:
>
>> Your second example didn't run and I couldn't understand what you were
>> trying to do there. But it sounds like you're saying the leading edge of
>> the blade should be sharp and then it should get fat (like an airfoil) as
>> we move back along the blade, and then thin again. If the radial sections
>> are all rectangles, just with different thicknesses, that can be done using
>> the method I outlined, where you get the transformation list from
>> path_sweep(). On the other hand, the geometry is simple enough that you
>> may not really need path sweep. It might work ok to construct your slices
>> and then rotate them as desired and pass to skin().
>>
>> I wouldn't imagine that trying to operate on the polyhedron output of
>> path_sweep() would be the best approach. Working on the slices and
>> transformations is going to be easier.
>>
>> On Mon, Jan 30, 2023 at 3:08 PM Rogier Wolff <R.E.Wolff@bitwizard.nl>
>> wrote:
>>
>>> On Sun, Jan 29, 2023 at 11:30:06AM -0500, Adrian Mariano wrote:
>>> > Rogier, path_extrude2d() is a limited module that you should use only
>>> in
>>> > the case where you can't access the points in your geometry. It will
>>> be
>>> > slow, and is likely to produce an inferior result. It works by
>>> creating
>>> > short extrusions of your geometry and then joining them with
>>> > rotate_extruded joint sections that slightly overlap.
>>> >
>>> > It sounds like you made your profile using beziers, which means you
>>> have
>>> > access to the profile as a point list. So unless your path produces
>>> > self-intersections, you should therefore be using path_sweep, which
>>> will
>>> > let you twist and will be much faster. It creates a single polyhedron,
>>>
>>> OK Good.
>>>
>>> Just to give you more of an understanding what I want to be able to
>>> do...
>>>
>>> Many openscad examples do
>>>
>>> cylinder (d=30,h=30); // hub.
>>> linear_extrude (height=30, twist=100, $fn=100)
>>> for (a=[0:120:359]) rotate (a) translate ([15,-1]) square ([45,2]);
>>>
>>> as an example of a fan blade. This is very suboptimal if you actually
>>> want
>>> performance.
>>>
>>> The blades just are flat surfaces to the oncoming air. An actual
>>> wing profile is much more efficient in getting the air to move. So...
>>> along an arc concentric to the axis of rotation, the intersection should
>>> be a wing profile.
>>>
>>> t=1; r=15+45*$t;
>>> intersection () {
>>> fan ();
>>> translate ([0,0,-1])
>>> difference () {cylinder (r=r,h=32);cylinder (r=r-t,h=32);}
>>> }
>>>
>>> Each of those slices should look like a wing profile.
>>>
>>> The linear extrusion with twist does get one thing right. As this thing
>>> rotates through 100 degrees, the air should get pushed 30mm along
>>> the path through the fan.
>>>
>>> If you assume the air is already moving at this 30mm/100degrees of
>>> rotation of the fan, the fan blades are simply cutting through the air
>>> at no aoa.
>>>
>>> To optimize this, you need to start pushing the air, so you need an
>>> angle-of-attack. And an airfoil as the cross section of the blade.
>>>
>>> Roger.
>>>
>>>
>>>
>>>
>>> >
>>> https://github.com/revarbat/BOSL2/wiki/skin.scad#functionmodule-path_sweep
>>> >
>>> > For your more complicated task where you would like to change the cross
>>> > section as you go, it can be done, but I don't know enough about your
>>> plan
>>> > to say which way is the best. If you can characterize your goal by
>>> saying
>>> > you want to sweep along the path but also you want to apply some other
>>> > transformation to the profile at different points in the path, then
>>> you can
>>> > do that using the generic sweep() module. The sweep module constructs
>>> a
>>> > polyhedron by taking your profile and applying a list of
>>> transformations to
>>> > it to define the cross sections. The cross sections are then linked
>>> up to
>>> > create a polyhedron. In fact, the way path_sweep() works is by
>>> computing a
>>> > transformation list that it passes to sweep. So if you want to make a
>>> > modified path_sweep() the simplest method would be to invoke
>>> path_sweep()
>>> > with transforms=true to get that transformation list. Then you
>>> multiply in
>>> > your own modifications and call sweep().
>>> >
>>> > If what you want to do involves changes in the form that are not a
>>> > transformation, then you need to use skin() to do the job. You would
>>> > compute all the cross sections and invoke skin, or maybe
>>> > vnf_vertex_array(). It might still be advantageous to get the
>>> > transformation list from path_sweep() to use as a starting point.
>>> >
>>> > The situation with having path_extrude() in OpenSCAD has been
>>> discussed I
>>> > think as long ago as 2015, with an extremely long thread on this forum.
>>> > The problem is not that nobody sat down to write the code. The
>>> problem is
>>> > that nobody was able to actually define the behavior of what
>>> path_extrude
>>> > should do. So somebody who wants to get path_extrude() into OpenSCAD
>>> > really needs to focus not on the implementation, but on understanding
>>> the
>>> > full complexity of the problem and presenting a coherent and complete
>>> > resolution of all the issues and complexity. Then and only then does
>>> it
>>> > make sense to pursue implementation, once there is some kind of
>>> agreement
>>> > from other developers that a good approach has been identified.
>>> Writing
>>> > code that handles a few easy cases will go nowhere.
>>> >
>>> > Perhaps the right answer might be to push for a geometry based
>>> equivalent
>>> > to the sweep() module. It would be a huge advantage if we had a
>>> generic
>>> > sweep() in native OpenSCAD that accepted a list of transformation
>>> matrices
>>> > and then operated on 2d geometry to link up the result into a
>>> polyhedron,
>>> > where it was not constrained by the requirement that we avoid
>>> > self-intersection. I think there are still complications, but many
>>> fewer
>>> > complications than trying to do path_extrude().
>>> >
>>> >
>>> >
>>> > On Sun, Jan 29, 2023 at 10:30 AM Rogier Wolff <R.E.Wolff@bitwizard.nl>
>>> > wrote:
>>> >
>>> > > Hi all,
>>> > >
>>> > > With all the work on path_extrude I got "nerd-sniped" into making
>>> some
>>> > > wings. I downloaded BOSL2, used a bezier representation to generate
>>> > > the 2D cross section of a wing (NACA4412 IIRC).
>>> > >
>>> > > I then extruded it with "linear_extrude" and was able to generate a
>>> 3D
>>> > > wing. Using twist I was able to put a twist in the wing (*). Using
>>> scale,
>>> > > I was able to make a tapered wing. Looking good. I'm confident that I
>>> > > can generate a swept wing as well. (But I haven't actually done it
>>> yet).
>>> > >
>>> > > Now there are still two things that I'd want to do with this. One is
>>> > > to sweep/extrude along a path. I tried that with path_extrude_2d from
>>> > > BOSL2. That works, but I lose the ability to twist and scale.
>>> > >
>>> > > This would allow me to make a wing that has a curve to it instead of
>>> > > just being swept and straight.
>>> > >
>>> > > Another application is the new toroidal props that are in the news
>>> > > this week. (google toroidal props and you'll find them).
>>> > >
>>> > > The last application is to make a fan blade. Those have a wing
>>> profile
>>> > > that will get bigger further to the outside. And I might want to
>>> sweep
>>> > > the wing-profile back a bit to experiment. And this too has a tilt
>>> > > that changes along the extrusion lenght.
>>> > >
>>> > >
>>> > > If someone knows that this can already be done... I'd like to know
>>> > > about it. If not, fine. No worries.
>>> > >
>>> > > But for those who are working on another path_extrude implementation,
>>> > > this is a "use-case" that you might want to support. Or not. Keep
>>> > > it in mind....
>>> > >
>>> > > Roger.
>>> > >
>>> > >
>>> > > (*) The twist together with the wing sweep ensures good "stall"
>>> > > characteristics of the aircraft. If you don't believe me that wings
>>> > > have this twist look at a hanglider from behind at takeoff
>>> > >
>>> https://www.pond5.com/stock-footage/item/64591446-hang-glider-takeoff
>>> > > The thumbnail of this footage is the image I was looking for.
>>> > > Even if this is a picture of a hang glider, airliners have this too.
>>> > >
>>> > > The reason for such a twist in the wing is that if a stall is
>>> > > imminent, the wing stalls (loses lift) in the middle first, while the
>>> > > wingtips, which are further back still have lift. Thus the nose drops
>>> > > and the aircraft takes up speed again and continues to fly. This'll
>>> > > cost you some height but at least you're flying again which is
>>> > > preferable to being helpless until you hit the ground. (AF447 managed
>>> > > to hit the ocean by not allowing the plane to exit the stall by
>>> giving
>>> > > lots of "nose up" input. Turkish 1951 and Asiana 214 hit the ground
>>> > > because they didn't have enough height for the stall recovery to
>>> > > work. Most cases where it DOES work end up being an incident instead
>>> > > of an accident.)
>>> > >
>>> > > On Sat, Jan 28, 2023 at 07:43:04AM +0530, Sanjeev Prabhakar wrote:
>>> > > > Looks great 👌
>>> > > >
>>> > > > On Sat, 28 Jan, 2023, 4:39 am Guenther Sohler, <
>>> > > guenther.sohler@gmail.com>
>>> > > > wrote:
>>> > > >
>>> > > > > Hi Adriano,
>>> > > > >
>>> > > > > Sorry, I got you wrong apparently.
>>> > > > > I am now using a rectangle 3x10 as the extrude path and I have
>>> created
>>> > > a
>>> > > > > polygon, which looks like an "U" Shape.
>>> > > > > The thing rotates successfully around the extrusion axis all 360
>>> > > degrees
>>> > > > > and there aren't manifold problems at all during that time.
>>> > > > > In each corner the successor segment has exactly one orientation
>>> where
>>> > > it
>>> > > > > fits, so I believe it's not ambiguous at all.
>>> > > > >
>>> > > > > And yes, my implementation is missing the "closed loop option"
>>> but I
>>> > > can
>>> > > > > implement that next.
>>> > > > >
>>> > > > >
>>> > > > >
>>> > > > > [image: image.png]
>>> > > > >
>>> > > > > On Fri, Jan 27, 2023 at 11:09 PM Adrian Mariano <
>>> avm4@cornell.edu>
>>> > > wrote:
>>> > > > >
>>> > > > >> The rectangle I was talking about is the path, not the cross
>>> section.
>>> > > > >> The point is that you need to decide how to orient the cross
>>> section
>>> > > at
>>> > > > >> each corner of the rectangle, and an ambiguity exists that does
>>> not
>>> > > exist
>>> > > > >> in the case with a smooth curve, so simply using the half-angle
>>> may
>>> > > not be
>>> > > > >> the desired result. Video didn't seem notable. Not sure what
>>> I was
>>> > > > >> supposed to be seeing.
>>> > > > >>
>>> > > > >> On Fri, Jan 27, 2023 at 4:51 PM Guenther Sohler <
>>> > > > >> guenther.sohler@gmail.com> wrote:
>>> > > > >>
>>> > > > >>> Hi Adrian, when i Use an rectangle 10x3 as a Profile , this
>>> Profile
>>> > > is
>>> > > > >>> present in any Cross Section along the path when little apart
>>> from
>>> > > the
>>> > > > >>> Corners of course.
>>> > > > >>> This ist Independent from the original Rotation of the path or
>>> the
>>> > > > >>> Angles between the path Segments.as Well as i. Bosl2: faces
>>> must Not
>>> > > > >>> interec.but watch the Video. Pictures Tell more than 1000
>>> words.
>>> > > > >>>
>>> > > > >>> Adrian Mariano <avm4@cornell.edu> schrieb am Fr., 27. Jän.
>>> 2023,
>>> > > 22:31:
>>> > > > >>>
>>> > > > >>>> Guenther, I'm not sure what you mean. Having points widely
>>> spaced
>>> > > can
>>> > > > >>>> be done, of course. It's just harder to define the problem, I
>>> > > think, so
>>> > > > >>>> perhaps not the place to start. Nothing in BOSL2 assumes
>>> anything
>>> > > about
>>> > > > >>>> point spacing, but if the points are far apart you may find
>>> that
>>> > > you don't
>>> > > > >>>> like the automatically computed derivatives, especially if
>>> the path
>>> > > is very
>>> > > > >>>> short. And transitions between the sections may be more
>>> likely to
>>> > > do
>>> > > > >>>> something odd. Consider a rectangle that is 10 x 3. What
>>> are the
>>> > > > >>>> derivatives at the end? Are they 45 deg angles? Or do they
>>> > > respect the
>>> > > > >>>> aspect ratio of the rectangle? Either option can be
>>> defended as
>>> > > correct.
>>> > > > >>>> The BOSL2 implementation is very general and should be able
>>> to
>>> > > handle any
>>> > > > >>>> situation, as long as the sections don't lead to a
>>> > > self-intersecting and
>>> > > > >>>> hence invalid polyhedron.
>>> > > > >>>>
>>> > > > >>>> On Fri, Jan 27, 2023 at 3:39 PM Guenther Sohler <
>>> > > > >>>> guenther.sohler@gmail.com> wrote:
>>> > > > >>>>
>>> > > > >>>>> Hi Adrian,
>>> > > > >>>>> There are many great effects, which you can achieve when
>>> having
>>> > > the
>>> > > > >>>>> points of the path wide enough apart.
>>> > > > >>>>> Of course The Tangent and the normals (but especially the
>>> angle
>>> > > > >>>>> between x and y axis) need be correct, but then it looks
>>> really
>>> > > cool.
>>> > > > >>>>> With my approach I can easily immitate your solution by
>>> using many
>>> > > > >>>>> points close together and skip the axis scaling(maybe worth
>>> an
>>> > > option)
>>> > > > >>>>> My Vision and my approach which I have chosen actually came
>>> true.
>>> > > > >>>>>
>>> > > > >>>>> https://www.youtube.com/watch?v=1m5OeK2lW4U
>>> > > > >>>>>
>>> > > > >>>>> if it's too different from BOSL extrude maybe we can choose
>>> > > another
>>> > > > >>>>> name .
>>> > > > >>>>>
>>> > > > >>>>> On Fri, Jan 27, 2023 at 1:08 PM Rogier Wolff <
>>> > > R.E.Wolff@bitwizard.nl>
>>> > > > >>>>> wrote:
>>> > > > >>>>>
>>> > > > >>>>>>
>>> > > > >>>>>> FYI,
>>> > > > >>>>>>
>>> > > > >>>>>> Freya Holmer worked on defining a "normal" or "reference"
>>> vector
>>> > > along
>>> > > > >>>>>> a path recently. She works in "gaming", so she has built
>>> what she
>>> > > > >>>>>> found out into some library that she is making. So for those
>>> > > wishing
>>> > > > >>>>>> to delve into that, it probably pays to watch her videos on
>>> > > youtube
>>> > > > >>>>>> and then delve into figuring out if she has published the
>>> code.
>>> > > > >>>>>>
>>> > > > >>>>>> That said, she's interested in fluid curves and motions. So
>>> all
>>> > > her
>>> > > > >>>>>> "paths" are neat splines....
>>> > > > >>>>>>
>>> > > > >>>>>> Roger.
>>> > > > >>>>>>
>>> > > > >>>>>> On Fri, Jan 27, 2023 at 06:43:11AM -0500, Adrian Mariano
>>> wrote:
>>> > > > >>>>>> > I agree with Sanjeev that it's better to focus on the
>>> case of
>>> > > > >>>>>> points close
>>> > > > >>>>>> > together. The problem is that some of the approaches are
>>> > > difficult
>>> > > > >>>>>> to
>>> > > > >>>>>> > define, or simply won't work, if you have the points on
>>> the path
>>> > > > >>>>>> very
>>> > > > >>>>>> > discrete and far apart. You need to compute tangent and
>>> normal
>>> > > to
>>> > > > >>>>>> the
>>> > > > >>>>>> > path, so how do you do that at corners on a path with
>>> very few
>>> > > > >>>>>> points?
>>> > > > >>>>>> > There may be end effects in this computation, which will
>>> be
>>> > > more of
>>> > > > >>>>>> a
>>> > > > >>>>>> > nuisance if you have only four points. One of the
>>> obvious
>>> > > > >>>>>> algorithms for
>>> > > > >>>>>> > choosing the rotation of the sections relies on the path
>>> points
>>> > > > >>>>>> being close
>>> > > > >>>>>> > together and may produce bizarre results when they are
>>> too far
>>> > > > >>>>>> apart.
>>> > > > >>>>>> >
>>> > > > >>>>>> > On Fri, Jan 27, 2023 at 4:39 AM Guenther Sohler <
>>> > > > >>>>>> guenther.sohler@gmail.com>
>>> > > > >>>>>> > wrote:
>>> > > > >>>>>> >
>>> > > > >>>>>> > > Adrian,
>>> > > > >>>>>> > > Thank you for the hint and the direct link.
>>> > > > >>>>>> > > I am happy to compare my implementation against yours
>>> to see
>>> > > > >>>>>> where are the
>>> > > > >>>>>> > > differences.
>>> > > > >>>>>> > >
>>> > > > >>>>>> > >
>>> > > > >>>>>> > > Sanjeer, Thank you for your input.
>>> > > > >>>>>> > > Your output looks very impressive and I want to reach
>>> that
>>> > > too.
>>> > > > >>>>>> > > Personally I believe the challenge is to get it correct
>>> with
>>> > > very
>>> > > > >>>>>> few
>>> > > > >>>>>> > > points first.
>>> > > > >>>>>> > > The error will be much more clearly visible when
>>> choosing few
>>> > > > >>>>>> points.
>>> > > > >>>>>> > > Finally, using many points to make it look smooth is
>>> just
>>> > > > >>>>>> exercise.
>>> > > > >>>>>> > > Probably
>>> > > > >>>>>> > > spline and many other functions are viable.
>>> > > > >>>>>> > > Maybe its also there in BOSL2, will check later.
>>> > > > >>>>>> > >
>>> > > > >>>>>> > > Thank you for your answers!
>>> > > > >>>>>> > >
>>> > > > >>>>>> > >
>>> > > > >>>>>> > >
>>> > > > >>>>>> > >
>>> > > > >>>>>> > > On Thu, Jan 26, 2023 at 10:50 PM Adrian Mariano <
>>> > > avm4@cornell.edu>
>>> > > > >>>>>> wrote:
>>> > > > >>>>>> > >
>>> > > > >>>>>> > >> Guenther, I'm a little unsure of your goal here. If
>>> you are
>>> > > > >>>>>> excited to
>>> > > > >>>>>> > >> implement path_sweep for the fun of it that's fine, of
>>> > > course,
>>> > > > >>>>>> but this has
>>> > > > >>>>>> > >> been done before by many people in OpenSCAD, starting
>>> with
>>> > > > >>>>>> > >> list-comprehension-demos and also in dotSCAD, and
>>> BOSL2.
>>> > > These
>>> > > > >>>>>> methods
>>> > > > >>>>>> > >> exist already as OpenSCAD code. so a demonstration
>>> isn't
>>> > > needed
>>> > > > >>>>>> to show the
>>> > > > >>>>>> > >> possibilities. There are some very difficult questions
>>> about
>>> > > how
>>> > > > >>>>>> to rotate
>>> > > > >>>>>> > >> the cross sections as you move around the path, and
>>> yes, it's
>>> > > > >>>>>> entirely
>>> > > > >>>>>> > >> possible that you've gotten it wrong...assuming that
>>> you can
>>> > > > >>>>>> figure out
>>> > > > >>>>>> > >> what "wrong" means. It's not clear. There was a very
>>> long
>>> > > > >>>>>> thread on the
>>> > > > >>>>>> > >> forum many years ago about the various complications.
>>> I
>>> > > > >>>>>> implemented
>>> > > > >>>>>> > >> several different algorithms in BOSL2 for choosing how
>>> to
>>> > > line
>>> > > > >>>>>> up the
>>> > > > >>>>>> > >> sections. You might want to take a look to get more
>>> > > > >>>>>> understanding of the
>>> > > > >>>>>> > >> issues.
>>> > > > >>>>>> > >>
>>> > > > >>>>>> > >>
>>> > > > >>>>>>
>>> > >
>>> https://github.com/revarbat/BOSL2/wiki/skin.scad#functionmodule-path_sweep
>>> > > > >>>>>> > >>
>>> > > > >>>>>> > >>
>>> > > > >>>>>> > >> On Thu, Jan 26, 2023 at 11:26 AM Guenther Sohler <
>>> > > > >>>>>> > >> guenther.sohler@gmail.com> wrote:
>>> > > > >>>>>> > >>
>>> > > > >>>>>> > >>> Hi List,
>>> > > > >>>>>> > >>>
>>> > > > >>>>>> > >>> right now i am attempting to add a path_extrude
>>> function to
>>> > > > >>>>>> openscad
>>> > > > >>>>>> > >>> A demonstration what i am talking about is here:
>>> > > > >>>>>> > >>>
>>> > > > >>>>>> > >>> https://youtu.be/igMupYGvX1s
>>> > > > >>>>>> > >>>
>>> > > > >>>>>> > >>> (sorry, its in python, but still i hope you get the
>>> idea. )
>>> > > > >>>>>> > >>> This shows an arbitrary path_extrude of a square,
>>> > > > >>>>>> > >>> but in the video you can clearly see the triangles in
>>> the
>>> > > faces,
>>> > > > >>>>>> > >>> so i believe the cross section at the joints is not
>>> correct.
>>> > > > >>>>>> > >>> IMHO the square must turn to a deltoid especially
>>> when the
>>> > > base
>>> > > > >>>>>> square
>>> > > > >>>>>> > >>> is rotated by 45 degrees to be correct.
>>> > > > >>>>>> > >>> Can anybody shade some light on that for me ?
>>> > > > >>>>>> > >>>
>>> > > > >>>>>> > >>>
>>> > > > >>>>>> > >>> _______________________________________________
>>> > > > >>>>>> > >>> OpenSCAD mailing list
>>> > > > >>>>>> > >>> To unsubscribe send an email to
>>> > > > >>>>>> discuss-leave@lists.openscad.org
>>> > > > >>>>>> > >>>
>>> > > > >>>>>> > >> _______________________________________________
>>> > > > >>>>>> > >> OpenSCAD mailing list
>>> > > > >>>>>> > >> To unsubscribe send an email to
>>> > > discuss-leave@lists.openscad.org
>>> > > > >>>>>> > >>
>>> > > > >>>>>> > > _______________________________________________
>>> > > > >>>>>> > > OpenSCAD mailing list
>>> > > > >>>>>> > > To unsubscribe send an email to
>>> > > discuss-leave@lists.openscad.org
>>> > > > >>>>>> > >
>>> > > > >>>>>>
>>> > > > >>>>>> > _______________________________________________
>>> > > > >>>>>> > OpenSCAD mailing list
>>> > > > >>>>>> > To unsubscribe send an email to
>>> > > discuss-leave@lists.openscad.org
>>> > > > >>>>>>
>>> > > > >>>>>>
>>> > > > >>>>>> --
>>> > > > >>>>>> ** R.E.Wolff@BitWizard.nl ** https://www.BitWizard.nl/ **
>>> > > > >>>>>> +31-15-2049110 **
>>> > > > >>>>>> ** Delftechpark 11 2628 XJ Delft, The Netherlands. KVK:
>>> > > > >>>>>> 27239233 **
>>> > > > >>>>>> f equals m times a. When your f is steady, and your m is
>>> going
>>> > > down
>>> > > > >>>>>> your a is going up. -- Chris Hadfield about flying up the
>>> space
>>> > > > >>>>>> shuttle.
>>> > > > >>>>>> _______________________________________________
>>> > > > >>>>>> OpenSCAD mailing list
>>> > > > >>>>>> To unsubscribe send an email to
>>> discuss-leave@lists.openscad.org
>>> > > > >>>>>>
>>> > > > >>>>> _______________________________________________
>>> > > > >>>>> OpenSCAD mailing list
>>> > > > >>>>> To unsubscribe send an email to
>>> discuss-leave@lists.openscad.org
>>> > > > >>>>>
>>> > > > >>>> _______________________________________________
>>> > > > >>>> OpenSCAD mailing list
>>> > > > >>>> To unsubscribe send an email to
>>> discuss-leave@lists.openscad.org
>>> > > > >>>>
>>> > > > >>> _______________________________________________
>>> > > > >>> OpenSCAD mailing list
>>> > > > >>> To unsubscribe send an email to
>>> discuss-leave@lists.openscad.org
>>> > > > >>>
>>> > > > >> _______________________________________________
>>> > > > >> OpenSCAD mailing list
>>> > > > >> To unsubscribe send an email to
>>> discuss-leave@lists.openscad.org
>>> > > > >>
>>> > > > > _______________________________________________
>>> > > > > OpenSCAD mailing list
>>> > > > > To unsubscribe send an email to discuss-leave@lists.openscad.org
>>> > > > >
>>> > >
>>> > >
>>> > >
>>> > > > _______________________________________________
>>> > > > OpenSCAD mailing list
>>> > > > To unsubscribe send an email to discuss-leave@lists.openscad.org
>>> > >
>>> > >
>>> > > --
>>> > > ** R.E.Wolff@BitWizard.nl ** https://www.BitWizard.nl/ **
>>> +31-15-2049110
>>> > > **
>>> > > ** Delftechpark 11 2628 XJ Delft, The Netherlands. KVK:
>>> 27239233 **
>>> > > f equals m times a. When your f is steady, and your m is going down
>>> > > your a is going up. -- Chris Hadfield about flying up the space
>>> shuttle.
>>> > > _______________________________________________
>>> > > OpenSCAD mailing list
>>> > > To unsubscribe send an email to discuss-leave@lists.openscad.org
>>> > >
>>>
>>> > _______________________________________________
>>> > OpenSCAD mailing list
>>> > To unsubscribe send an email to discuss-leave@lists.openscad.org
>>>
>>>
>>> --
>>> ** R.E.Wolff@BitWizard.nl ** https://www.BitWizard.nl/ **
>>> +31-15-2049110 **
>>> ** Delftechpark 11 2628 XJ Delft, The Netherlands. KVK: 27239233
>>> **
>>> f equals m times a. When your f is steady, and your m is going down
>>> your a is going up. -- Chris Hadfield about flying up the space shuttle.
>>> _______________________________________________
>>> OpenSCAD mailing list
>>> To unsubscribe send an email to discuss-leave@lists.openscad.org
>>>
>> _______________________________________________
>> OpenSCAD mailing list
>> To unsubscribe send an email to discuss-leave@lists.openscad.org
>>
>
RW
Rogier Wolff
Tue, Jan 31, 2023 9:16 AM
On Mon, Jan 30, 2023 at 04:32:48PM -0500, Adrian Mariano wrote:
Your second example didn't run and I couldn't understand what you were
trying to do there.
Just wrap the first code snippet in
module fan () {...}
You say the leading edge should be sharp. Counter intuitively the leading
edge of a wing should be quite blunt! (until you hit the speed of sound).
Roger.
--
** R.E.Wolff@BitWizard.nl ** https://www.BitWizard.nl/ ** +31-15-2049110 **
** Delftechpark 11 2628 XJ Delft, The Netherlands. KVK: 27239233 **
f equals m times a. When your f is steady, and your m is going down
your a is going up. -- Chris Hadfield about flying up the space shuttle.
On Mon, Jan 30, 2023 at 04:32:48PM -0500, Adrian Mariano wrote:
> Your second example didn't run and I couldn't understand what you were
> trying to do there.
Just wrap the first code snippet in
module fan () {...}
You say the leading edge should be sharp. Counter intuitively the leading
edge of a wing should be quite blunt! (until you hit the speed of sound).
Roger.
--
** R.E.Wolff@BitWizard.nl ** https://www.BitWizard.nl/ ** +31-15-2049110 **
** Delftechpark 11 2628 XJ Delft, The Netherlands. KVK: 27239233 **
f equals m times a. When your f is steady, and your m is going down
your a is going up. -- Chris Hadfield about flying up the space shuttle.