discuss@lists.openscad.org

OpenSCAD general discussion Mailing-list

View all threads

Attempt to offer path_extrude in openscad

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:

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 <

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.

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


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.

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, <

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 <

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 <

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 <

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.

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


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.


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

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:

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.

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, <

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 <

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 <

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 <

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.

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


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.


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.

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

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, <

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 <

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 <

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 <

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.

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


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.


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 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

+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

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

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

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, <

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 <

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 <

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 <

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.

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


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.


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 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

+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

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

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

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

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, <

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 <

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 <

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 <

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 <

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.

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


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.


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


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

+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

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.