![](/i/fill.gif) |
![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
my very first iso-surface (and second macro) :-)
the thread is a single iso-surface, bold heads and nuts are CSG.
shown:
M3 x 25
M6 x 50
M10 x 30
M16 x 50
M64 x 150
#macro thread_macro( thrOD, totalLen, solidLen, thrSpoed )
// thrOD : outer diameter, before "cutting" the thread.
// totalLen: result: <0,0,0> to <0,0,-totalLen>
// solidLen: <0,0,0> to <0,0,-solidLen> is not threaded.
// thrSpoed: displacement per revolution (spoed) (=25.4/tpi)
#declare thrAngle = 60; // (degrees)
#declare chamOut = 0.05; // chamfer outside (part of threadDepts)
#declare thrRad = 0.5*thrOD;
#declare thrs = 1/thrSpoed;
#declare thrDepts = 0.5*thrSpoed/tan(radians(thrAngle)*0.5);
isosurface {
function{ max(
sqrt(pow(x,2)+pow(y,2))-thrRad + // cilinder
max( min(thrDepts*max(chamOut, // chamfered threads
abs(mod(2+z*thrs*2+atan2(x,y)/pi,2)-1)), // threads
max((z-solidLen)*0.25, 0)), // = sollid part
thrDepts+z-totalLen) // = chamfered end
,2*thrOD-sqrt(pow(x,2)+pow(y,2)+
pow(totalLen+thrOD*1.965-z,2)) )}// = dimple in end
max_gradient 2.0
accuracy thrOD/1000
contained_by{box{<-thrRad,-thrRad,0>,<thrRad,thrRad,totalLen>}}
scale <1,1,-1>
}
#end
jaap.
Post a reply to this message
Attachments:
Download 'parts3.png' (158 KB)
Preview of image 'parts3.png'
![parts3.png](/povray.binaries.images/attachment/%3Cweb.4139722b2521c5a8399d8d0%40news.povray.org%3E/parts3.png?ttop=441697&toff=6150&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) |
Wow! That looks wonderful. How long to parse & render?
=Bob=
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) |
"=Bob=" <robertUNDERSCOREdobbinsATmailDOTtdsDOTnet> wrote:
> Wow! That looks wonderful. How long to parse & render?
Er.., just let me re-render it...
render time with pov 3.6: (-j +FN +a0.1)
Isosurface roots: 3554000
Peak memory used: 493921 bytes
Parse Time: 0 hours 0 minutes 1 seconds (1 seconds)
Render Time: 0 hours 6 minutes 7 seconds (367 seconds)
Total Time: 0 hours 6 minutes 8 seconds (368 seconds)
without the big M64 x 150 bold:
Isosurface roots: 1001127
Peak memory used: 485385 bytes
Parse Time: 0 hours 0 minutes 0 seconds (0 seconds)
Render Time: 0 hours 1 minutes 45 seconds (105 seconds)
Total Time: 0 hours 1 minutes 45 seconds (105 seconds)
jaap.
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
From: =Bob=
Subject: Re: my very first iso-surface (and second macro) :-)
Date: 4 Sep 2004 04:28:30
Message: <41397cae@news.povray.org>
|
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
"Jaap" <jws### [at] yahoo com> wrote in message
news:web.41397b70f757768da8399d8d0@news.povray.org...
: "=Bob=" <robertUNDERSCOREdobbinsATmailDOTtdsDOTnet> wrote:
: > Wow! That looks wonderful. How long to parse & render?
:
: Er.., just let me re-render it...
: render time with pov 3.6: (-j +FN +a0.1)
:
: Isosurface roots: 3554000
: Peak memory used: 493921 bytes
: Parse Time: 0 hours 0 minutes 1 seconds (1 seconds)
: Render Time: 0 hours 6 minutes 7 seconds (367 seconds)
: Total Time: 0 hours 6 minutes 8 seconds (368 seconds)
:
: without the big M64 x 150 bold:
:
: Isosurface roots: 1001127
: Peak memory used: 485385 bytes
: Parse Time: 0 hours 0 minutes 0 seconds (0 seconds)
: Render Time: 0 hours 1 minutes 45 seconds (105 seconds)
: Total Time: 0 hours 1 minutes 45 seconds (105 seconds)
:
: jaap.
Thanks! I also took a minute and set up a scene with
your macro. Goes pretty fast! Looks great!
=Bob=
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) |
In article <web.4139722b2521c5a8399d8d0@news.povray.org>,
"Jaap" <jws### [at] yahoo com> wrote:
> my very first iso-surface (and second macro) :-)
> the thread is a single iso-surface, bold heads and nuts are CSG.
>
> shown:
> M3 x 25
> M6 x 50
> M10 x 30
> M16 x 50
> M64 x 150
>
> #macro thread_macro( thrOD, totalLen, solidLen, thrSpoed )
> // thrOD : outer diameter, before "cutting" the thread.
> // totalLen: result: <0,0,0> to <0,0,-totalLen>
> // solidLen: <0,0,0> to <0,0,-solidLen> is not threaded.
> // thrSpoed: displacement per revolution (spoed) (=25.4/tpi)
> #declare thrAngle = 60; // (degrees)
> #declare chamOut = 0.05; // chamfer outside (part of threadDepts)
> #declare thrRad = 0.5*thrOD;
> #declare thrs = 1/thrSpoed;
> #declare thrDepts = 0.5*thrSpoed/tan(radians(thrAngle)*0.5);
> isosurface {
> function{ max(
> sqrt(pow(x,2)+pow(y,2))-thrRad + // cilinder
> max( min(thrDepts*max(chamOut, // chamfered threads
> abs(mod(2+z*thrs*2+atan2(x,y)/pi,2)-1)), // threads
> max((z-solidLen)*0.25, 0)), // = sollid part
> thrDepts+z-totalLen) // = chamfered end
> ,2*thrOD-sqrt(pow(x,2)+pow(y,2)+
> pow(totalLen+thrOD*1.965-z,2)) )}// = dimple in end
> max_gradient 2.0
> accuracy thrOD/1000
> contained_by{box{<-thrRad,-thrRad,0>,<thrRad,thrRad,totalLen>}}
> scale <1,1,-1>
> }
> #end
>
> jaap.
> ---------------------------------------------------------------------
> [Image]
working on the same thing from long time... but never get the correct result
your isosurface is top !!!
just one thing : how to remove the upper cone ? (from cylinder to thread)
i try to set 'chamOut' from 0.05 to 0 but not works.
a+
louis
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) |
Kurts <kur### [at] yahoo fr> wrote:
> just one thing : how to remove the upper cone ? (from cylinder to thread)
> i try to set 'chamOut' from 0.05 to 0 but not works.
>
chamOut only makes the thread less sharp.
it's the "thrDepts+z-totalLen" bit you want to remove:
function{ max(
sqrt(pow(x,2)+pow(y,2))-thrRad + // cilinder
min(thrDepts*max(chamOut, // chamfered threads
abs(mod(2+z*thrs*2+atan2(x,y)/pi,2)-1)), // threads
max((z-solidLen)*0.25, 0)) // = sollid part
,2*thrOD-sqrt(pow(x,2)+pow(y,2)+
pow(totalLen+thrOD*1.965-z,2)) )}// = dimple in end
you may also remove the dimpled end (sphere):
"2*thrOD-sqrt(pow(x,2)+pow(y,2)+pow(totalLen+thrOD*1.965-z,2))"
function{
sqrt(pow(x,2)+pow(y,2))-thrRad + // cilinder
min(thrDepts*max(chamOut, // chamfered threads
abs(mod(2+z*thrs*2+atan2(x,y)/pi,2)-1)), // threads
max((z-solidLen)*0.25, 0))} // = sollid part
and remove the solid part:
function{
sqrt(pow(x,2)+pow(y,2))-thrRad + // cilinder
thrDepts*max(chamOut,abs(mod(2+z*thrs*2+atan2(x,y)/pi,2)-1))}
i guess i should break it up in seperate functions before doing all
the min()/max() stuff.
replacing "thrDepts+z-totalLen"
with "thrRad+z-totalLen" will make a bold with a sharp point.
"atan2(x,y)/pi" is used to calculate how far we have completed a
revolution, witch is used to shift each thread exactly one thread
per revolution.
replacing "2+z*thrs*2+atan2(x,y)/pi" with
"10+z*thrs*2+2*atan2(x,y)/pi" should create a double thread.
the "10" is needed to keep things away from zero (the direction
of the thread will change if we cross sero with mod( ,2) )
jaap.
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) |
Kurts <kur### [at] yahoo fr> wrote:
> just one thing : how to remove the upper cone ? (from cylinder to thread)
> i try to set 'chamOut' from 0.05 to 0 but not works.
i just realized what you want, you may change the 0.25 to 10 to make the
cone from the solid half to the threaded half realy steep.
jaap.
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
From: Arlo J
Subject: Re: my very first iso-surface (and second macro) :-)
Date: 4 Sep 2004 18:42:12
Message: <413a44c4@news.povray.org>
|
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Jaap wrote:
> my very first iso-surface (and second macro) :-)
> the thread is a single iso-surface, bold heads and nuts are CSG.
Nice! I'd love to see radiosity render of some of these once you get
some good textures together. :)
Arlo
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) |
In article <web.413a1e4ff757768da8399d8d0@news.povray.org>,
"Jaap" <jws### [at] yahoo com> wrote:
> Kurts <kur### [at] yahoo fr> wrote:
> > just one thing : how to remove the upper cone ? (from cylinder to thread)
> > i try to set 'chamOut' from 0.05 to 0 but not works.
>
> i just realized what you want, you may change the 0.25 to 10 to make the
> cone from the solid half to the threaded half realy steep.
>
> jaap.
>
>
>
yes it is !!!
very, very good job.
thanks
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) |