discuss@lists.openscad.org

OpenSCAD general discussion Mailing-list

View all threads

sweeped object from 3D rotated object.

RW
Rogier Wolff
Sat, Oct 12, 2024 4:18 PM

Hi All,

Everybody (I hope) knows that when you take a stick, put it at an
angle, and rotate it around, the cutout needed in a sheet of paper for
it to pass through is a hyperbolic curve.

module thestick () translate ([50,0,0]) rotate ([45,0,0]) cylinder (h=100, d=3, center=true);
rotate (360*$t) thestick ();

youtube.com/watch?v=CeMnhMiy59Y

What I want to do is more complex than the "stick" and the "flat
surface", but what I want to do is given the stick, what object is
swept out by the rotation of this base form.

While writing this, I think I've already found my answer:

module rsweep (angle, steps)
{
sa = angle/steps;
for (i=[0:1:steps-1])
hull () {
rotate (sa* i  ) children ();
rotate (sa*(i+1)) children ();
}
}

rsweep (360, 90) thestick ();

(looks nicer with 360, 360 as the arguments, but I don't want to
overload the less powerful computers of people on this list). (You can
better see what's going on with less than 360 as the first argument.)

in case anybody needs it..... (and probably done 1000 times before)

(for the rotating stick you now difference your plane with the object
created above. I'm going to be doing something similar, but with more
complex shapes rotating and more complex things than a "thin solid").

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.
**  'a' for accelleration.

Hi All, Everybody (I hope) knows that when you take a stick, put it at an angle, and rotate it around, the cutout needed in a sheet of paper for it to pass through is a hyperbolic curve. module thestick () translate ([50,0,0]) rotate ([45,0,0]) cylinder (h=100, d=3, center=true); rotate (360*$t) thestick (); youtube.com/watch?v=CeMnhMiy59Y What I want to do is more complex than the "stick" and the "flat surface", but what I want to do is given the stick, what object is swept out by the rotation of this base form. While writing this, I think I've already found my answer: module rsweep (angle, steps) { sa = angle/steps; for (i=[0:1:steps-1]) hull () { rotate (sa* i ) children (); rotate (sa*(i+1)) children (); } } rsweep (360, 90) thestick (); (looks nicer with 360, 360 as the arguments, but I don't want to overload the less powerful computers of people on this list). (You can better see what's going on with less than 360 as the first argument.) in case anybody needs it..... (and probably done 1000 times before) (for the rotating stick you now difference your plane with the object created above. I'm going to be doing something similar, but with more complex shapes rotating and more complex things than a "thin solid"). 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. ** 'a' for accelleration.
M
mikeonenine@web.de
Sat, Oct 12, 2024 5:52 PM

Rogier Wolff wrote:

Hi All,

Everybody (I hope) knows that when you take a stick, put it at an
angle, and rotate it around, the cutout needed in a sheet of paper for
it to pass through is a hyperbolic curve.

module thestick () translate ([50,0,0]) rotate ([45,0,0]) cylinder (h=100, d=3, center=true);
rotate (360*$t) thestick ();

youtube.com/watch?v=CeMnhMiy59Y

What I want to do is more complex than the "stick" and the "flat
surface", but what I want to do is given the stick, what object is
swept out by the rotation of this base form.

While writing this, I think I've already found my answer:

module rsweep (angle, steps)
{
sa = angle/steps;
for (i=[0:1:steps-1])
hull () {
rotate (sa* i  ) children ();
rotate (sa*(i+1)) children ();
}
}

rsweep (360, 90) thestick ();

(looks nicer with 360, 360 as the arguments, but I don't want to
overload the less powerful computers of people on this list). (You can
better see what's going on with less than 360 as the first argument.)

in case anybody needs it..... (and probably done 1000 times before)

(for the rotating stick you now difference your plane with the object
created above. I'm going to be doing something similar, but with more
complex shapes rotating and more complex things than a "thin solid").

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.
**  'a' for accelleration.

youtube.com/watch?v=CeMnhMiy59Y (I like!)

The shape looks like the cooling tower of a power station:

module thestick () translate ([50,15,0]) rotate ([30,0,0]) cylinder (h=170, d=3, center=true);

module rsweep (angle, steps)

{

sa = angle/steps;

for (i=[0:1:steps-1])

hull () {

rotate (sa* i ) children ();

rotate (sa*(i+1)) children ();

}

}

rsweep (360, 90)

thestick ();

translate([0, 0, -88])

for (i=[1:15])

rotate([i*360/15, 90])

translate([0, 80])

rotate([0, 30, 20])

cube([33, 3, 3], center=true);

translate([0, 0, -88])

for (i=[1:15])

rotate([i*360/15+12, 90])

translate([0, 80])

rotate([0, -30, 20])

cube([33, 3, 3], center=true);

Will be interested to see what shapes you come up with!

Rogier Wolff wrote: > Hi All, > > Everybody (I hope) knows that when you take a stick, put it at an > angle, and rotate it around, the cutout needed in a sheet of paper for > it to pass through is a hyperbolic curve. > > module thestick () translate (\[50,0,0\]) rotate (\[45,0,0\]) cylinder (h=100, d=3, center=true); > rotate (360\*$t) thestick (); > > youtube.com/watch?v=CeMnhMiy59Y > > What I want to do is more complex than the "stick" and the "flat > surface", but what I want to do is given the stick, what object is > swept out by the rotation of this base form. > > While writing this, I think I've already found my answer: > > module rsweep (angle, steps) > { > sa = angle/steps; > for (i=\[0:1:steps-1\]) > hull () { > rotate (sa\* i ) children (); > rotate (sa\*(i+1)) children (); > } > } > > rsweep (360, 90) thestick (); > > (looks nicer with 360, 360 as the arguments, but I don't want to > overload the less powerful computers of people on this list). (You can > better see what's going on with less than 360 as the first argument.) > > in case anybody needs it..... (and probably done 1000 times before) > > (for the rotating stick you now difference your plane with the object > created above. I'm going to be doing something similar, but with more > complex shapes rotating and more complex things than a "thin solid"). > > ``` > 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. > \*\* 'a' for accelleration. youtube.com/watch?v=CeMnhMiy59Y (I like!) The shape looks like the cooling tower of a power station: `module thestick () translate ([50,15,0]) rotate ([30,0,0]) cylinder (h=170, d=3, center=true); ` `module rsweep (angle, steps)` `{` `sa = angle/steps;` `for (i=[0:1:steps-1])` `hull () {` `rotate (sa* i ) children ();` `rotate (sa*(i+1)) children ();` `}` `}` `rsweep (360, 90) ` `thestick ();` `translate([0, 0, -88])` `for (i=[1:15])` `rotate([i*360/15, 90])` `translate([0, 80])` `rotate([0, 30, 20])` `cube([33, 3, 3], center=true);` `translate([0, 0, -88])` `for (i=[1:15])` `rotate([i*360/15+12, 90])` `translate([0, 80])` `rotate([0, -30, 20])` `cube([33, 3, 3], center=true);` Will be interested to see what shapes you come up with!
RW
Rogier Wolff
Sat, Oct 12, 2024 6:28 PM

On Sat, Oct 12, 2024 at 06:18:14PM +0200, Rogier Wolff via Discuss wrote:

I'm going to be doing something similar, but with more
complex shapes rotating and more complex things than a "thin solid").

Of course it doesn't work with more comples forms: hull doesn't only
work between the adjacent slightly-moved corresponding parts of my
complex form. :-(

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.
**  'a' for accelleration.

On Sat, Oct 12, 2024 at 06:18:14PM +0200, Rogier Wolff via Discuss wrote: > I'm going to be doing something similar, but with more > complex shapes rotating and more complex things than a "thin solid"). Of course it doesn't work with more comples forms: hull doesn't only work between the adjacent slightly-moved corresponding parts of my complex form. :-( 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. ** 'a' for accelleration.
RW
Rogier Wolff
Sat, Oct 12, 2024 6:44 PM

On Sat, Oct 12, 2024 at 05:52:39PM +0000, Caddiy via Discuss wrote:

youtube.com/watch?v=CeMnhMiy59Y (I like!)

The shape looks like the cooling tower of a power station:

Absolutely! It looks like it, because it IS! Cooling towers are built
with this shape. (move the cylinder a bit down before all the rotating
and stuff to get the wider base for the cooling tower).

(And yes, you could build one of them from straight concrete bars!)

Will be interested to see what shapes you come up with!

It is a puzzle.

There are three.

You see the first, think that's impossible, think a bit more and
think... AH! Got it! and you've solved the first.

Then I need to give you the second. It looks the same. You think I
know this one. You don't.

And once you figure out the second, there is still the third. From the
outside, all of them look the same. But seeing the inside which is
inevetable if I send you the STL files to 3Dprint... the secret is
blown.

So to not spoil the fun of solving the puzzles, I can't really publish
anything.

That said... you can buy these in shops. I'm replicating them to 3D
print them myself. Curently printing... my most reliable printer has
started failing prints. I set the margin to "should probably work" but
due to an oversight I'm getting double that. So the tolerances will
probably give away the secret on these ones, but I can verify the
principles...

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.
**  'a' for accelleration.

On Sat, Oct 12, 2024 at 05:52:39PM +0000, Caddiy via Discuss wrote: > youtube.com/watch?v=CeMnhMiy59Y (I like!) > > The shape looks like the cooling tower of a power station: Absolutely! It looks like it, because it IS! Cooling towers are built with this shape. (move the cylinder a bit down before all the rotating and stuff to get the wider base for the cooling tower). (And yes, you could build one of them from straight concrete bars!) > Will be interested to see what shapes you come up with! It is a puzzle. There are three. You see the first, think that's impossible, think a bit more and think... AH! Got it! and you've solved the first. Then I need to give you the second. It looks the same. You think I know this one. You don't. And once you figure out the second, there is still the third. From the outside, all of them look the same. But seeing the inside which is inevetable if I send you the STL files to 3Dprint... the secret is blown. So to not spoil the fun of solving the puzzles, I can't really publish anything. That said... you can buy these in shops. I'm replicating them to 3D print them myself. Curently printing... my most reliable printer has started failing prints. I set the margin to "should probably work" but due to an oversight I'm getting double that. So the tolerances will probably give away the secret on these ones, but I can verify the principles... 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. ** 'a' for accelleration.
HL
Hans L
Sun, Oct 13, 2024 5:24 AM

You can also figure out the overall profile by taking a number of
projections as it rotates, then rotate_extruding that shape.

This doesn't involve any hull operation, but could optionally be used to
help interpolate the step-like jaggedness that can result
between projection positions.  The advantage of this is that more work is
done on 2D geometry which is a lot faster than 3D (though it's less of an
issue nowadays with manifold in dev snapshots)

module rotate_extrude3D(clearance, bounds=[1000,1000], $fa=1) {
rotate_extrude()
intersection() { // clip to positive x axis before rotate_extrude
translate([0,-bounds[1]/2]) square(bounds);
offset(delta=clearance) // add clearance to profile
union() for(a=[-90:$fa:90]) // union projections from multiple
angles
projection(cut=true) rotate([-90,a]) children();
}
}

rotate_extrude3D(0.01) thestick ();

On Sat, Oct 12, 2024 at 1:44 PM Rogier Wolff via Discuss <
discuss@lists.openscad.org> wrote:

On Sat, Oct 12, 2024 at 05:52:39PM +0000, Caddiy via Discuss wrote:

youtube.com/watch?v=CeMnhMiy59Y (I like!)

The shape looks like the cooling tower of a power station:

Absolutely! It looks like it, because it IS! Cooling towers are built
with this shape. (move the cylinder a bit down before all the rotating
and stuff to get the wider base for the cooling tower).

(And yes, you could build one of them from straight concrete bars!)

Will be interested to see what shapes you come up with!

It is a puzzle.

There are three.

You see the first, think that's impossible, think a bit more and
think... AH! Got it! and you've solved the first.

Then I need to give you the second. It looks the same. You think I
know this one. You don't.

And once you figure out the second, there is still the third. From the
outside, all of them look the same. But seeing the inside which is
inevetable if I send you the STL files to 3Dprint... the secret is
blown.

So to not spoil the fun of solving the puzzles, I can't really publish
anything.

That said... you can buy these in shops. I'm replicating them to 3D
print them myself. Curently printing... my most reliable printer has
started failing prints. I set the margin to "should probably work" but
due to an oversight I'm getting double that. So the tolerances will
probably give away the secret on these ones, but I can verify the
principles...

     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.
**  'a' for accelleration.


OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org

You can also figure out the overall profile by taking a number of projections as it rotates, then rotate_extruding that shape. This doesn't involve any hull operation, but could optionally be used to help interpolate the step-like jaggedness that can result between projection positions. The advantage of this is that more work is done on 2D geometry which is a lot faster than 3D (though it's less of an issue nowadays with manifold in dev snapshots) module rotate_extrude3D(clearance, bounds=[1000,1000], $fa=1) { rotate_extrude() intersection() { // clip to positive x axis before rotate_extrude translate([0,-bounds[1]/2]) square(bounds); offset(delta=clearance) // add clearance to profile union() for(a=[-90:$fa:90]) // union projections from multiple angles projection(cut=true) rotate([-90,a]) children(); } } rotate_extrude3D(0.01) thestick (); On Sat, Oct 12, 2024 at 1:44 PM Rogier Wolff via Discuss < discuss@lists.openscad.org> wrote: > On Sat, Oct 12, 2024 at 05:52:39PM +0000, Caddiy via Discuss wrote: > > youtube.com/watch?v=CeMnhMiy59Y (I like!) > > > > The shape looks like the cooling tower of a power station: > > Absolutely! It looks like it, because it IS! Cooling towers are built > with this shape. (move the cylinder a bit down before all the rotating > and stuff to get the wider base for the cooling tower). > > (And yes, you could build one of them from straight concrete bars!) > > > Will be interested to see what shapes you come up with! > > It is a puzzle. > > There are three. > > You see the first, think that's impossible, think a bit more and > think... AH! Got it! and you've solved the first. > > Then I need to give you the second. It looks the same. You think I > know this one. You don't. > > And once you figure out the second, there is still the third. From the > outside, all of them look the same. But seeing the inside which is > inevetable if I send you the STL files to 3Dprint... the secret is > blown. > > So to not spoil the fun of solving the puzzles, I can't really publish > anything. > > That said... you can buy these in shops. I'm replicating them to 3D > print them myself. Curently printing... my most reliable printer has > started failing prints. I set the margin to "should probably work" but > due to an oversight I'm getting double that. So the tolerances will > probably give away the secret on these ones, but I can verify the > principles... > > 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. > ** 'a' for accelleration. > _______________________________________________ > OpenSCAD mailing list > To unsubscribe send an email to discuss-leave@lists.openscad.org >