![](/i/fill.gif) |
![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
From: StephenS
Subject: Rounded block section, isosurface equivalent
Date: 5 Sep 2016 15:06:20
Message: <57cdc22c@news.povray.org>
|
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
I have macros for rounded_box, rounded_cylinder, and
rounded_cylinder_section, for both CSG and isosurface.
I need help with the rounded_cylinder_section, isosurface.
I only need from >0 to 180 degrees sections
(I know this has no rounding yet)
How do I make my second cut at an angle? Hints?
isosurface{
function {
max(
sqrt(pow(x,2)+pow(z,2))-Radius+Block_gap,
abs(y-Height/2)-Height/2+Block_gap, // cylinder height
abs(z-Radius/2)-Radius/2+Block_gap, // my reference edge
abs(x-Radius/2)-Radius/2+Block_gap // wrong except for 90 degrees
)
+Block_surface_iso_noise(x,y,z)
}
contained_by { box { <-Radius,0,-Radius>, <Radius,Height,Radius> } }
}
The bottom right of the second image wants to be 120 degrees each.
Stephen S
Post a reply to this message
Attachments:
Download 'stone_blocks_csg.png' (733 KB)
Download 'stone_blocks_isosurface.png' (776 KB)
Preview of image 'stone_blocks_csg.png'
![stone_blocks_csg.png](/povray.binaries.images/attachment/%3C57cdc22c%40news.povray.org%3E/stone_blocks_csg.png?ttop=437698&toff=700&preview=1)
Preview of image 'stone_blocks_isosurface.png'
![stone_blocks_isosurface.png](/povray.binaries.images/attachment/%3C57cdc22c%40news.povray.org%3E/stone_blocks_isosurface.png?ttop=437698&toff=700&preview=1)
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Help yourself,
Le 05/09/2016 à 21:04, StephenS a écrit :
> abs(x-Radius/2)-Radius/2+Block_gap // wrong except for 90 degrees
> )
What is abs(x-Radius/2)-Radius/2+Block_gap, but the projection of the coordinate on
the normal of the plane, for a very particular case,
Actually, abs is slicing twice, so
abs(x-Radius/2)-Radius/2+Block_gap can be replaced by -x+Block_gap for the same effect
of cutting along a plane.
now, replace the -x by the computation of the distance along the normal at 120° and
you are nearly done.
isosurface{
function {
max(
sqrt(pow(x,2)+pow(z,2))-Radius+Block_gap,
abs(y-Height/2)-Height/2+Block_gap, // cylinder height
abs(z-Radius/2)-Radius/2+Block_gap, // my reference edge
-x*sin(radians(120))+z*cos(radians(120))+Block_gap
)
}
contained_by { box { <-Radius,0,-Radius>, <Radius,Height,Radius> } }
texture { pigment { color rgb 1 } }
}
Have a good night.
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
On 05/09/2016 4:09 PM, Le_Forgeron wrote:
> Help yourself,
>
> Le 05/09/2016 à 21:04, StephenS a écrit :
>> abs(x-Radius/2)-Radius/2+Block_gap // wrong except for 90 degrees
>> )
>
> What is abs(x-Radius/2)-Radius/2+Block_gap, but the projection of the coordinate on
the normal of the plane, for a very particular case,
>
> Actually, abs is slicing twice, so
> abs(x-Radius/2)-Radius/2+Block_gap can be replaced by -x+Block_gap for the same
effect of cutting along a plane.
I may have seen this if I started from scratch, but I started from my
box code.
>
> now, replace the -x by the computation of the distance along the normal at 120° and
you are nearly done.
>
>
> isosurface{
> function {
> max(
> sqrt(pow(x,2)+pow(z,2))-Radius+Block_gap,
> abs(y-Height/2)-Height/2+Block_gap, // cylinder height
> abs(z-Radius/2)-Radius/2+Block_gap, // my reference edge
> -x*sin(radians(120))+z*cos(radians(120))+Block_gap
I saw this from the isosurface tutorial, but was not sure how to fit,
abs(x-Radius/2)-Radius/2+Block_gap, to it.
> )
> }
> contained_by { box { <-Radius,0,-Radius>, <Radius,Height,Radius> } }
> texture { pigment { color rgb 1 } }
> }
>
>
> Have a good night.
>
Not yet, still time for one more render ;-)
Thanks.
Stephen S
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Le 05/09/2016 à 22:24, StephenS a écrit :
> I saw this from the isosurface tutorial, but was not sure how to fit,
> abs(x-Radius/2)-Radius/2+Block_gap, to it.
The problem is that abs(...) is from a BOX code, with two parallel
planes. You only need one plane for your rounded block, because the
other "side" is circular and done with the sqrt() part.
abs(x - Foo) - Foo : it is for a box with x from 0 to 2*Foo.
Just solve the equation for 0 (all the isosurface is in the negative
domain of the function):
For x = 0, the value is 0.
For x = Foo, the value is -Foo, so inside
For x = 2Foo, the value is 0.
But you do not need the wall at 2Foo. so forget abs().
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
From: StephenS
Subject: Re: Rounded block section, isosurface equivalent
Date: 6 Sep 2016 21:56:41
Message: <57cf73d9@news.povray.org>
|
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
On 05/09/2016 3:04 PM, StephenS wrote:
> I have macros for rounded_box, rounded_cylinder, and
> rounded_cylinder_section, for both CSG and isosurface.
And now rounded_cylinder_arc_section.
Except there's no rounding. Large radius, small radius, flat surface is
more math than I can remember.
I might only need the large/small radius to match. I should be able to
figure that out.
This is for CSG.
Stephen S
Post a reply to this message
Attachments:
Download 'stone_blocks_0000.png' (160 KB)
Preview of image 'stone_blocks_0000.png'
![stone_blocks_0000.png](/povray.binaries.images/attachment/%3C57cf73d9%40news.povray.org%3E/stone_blocks_0000.png?ttop=437698&toff=700&preview=1)
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |