| 
|  |  |  
|  |  |  |  |  |  |  |  |  |  |  
|  |  |  |  |  |  |  |  |  |  |  
|  |  | -----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
I've googled for examples on threads (on bolts and the like) and I've
written a macro that looks like this:
#macro do_threads (turns, start, length, outer, inner, perturn)
union {
  #local index = 0;
  #local total = 360*turns;
  #while (index < total)
    #local zee = start+index*length/total;
    cone {
      <outer, 0, zee> length/turns <inner, 0, zee> 0
      rotate index*z
    }
    #local index = index + 360/perturn;
  #end
}
#end
This macro creates a jillion (well, perturn*turns) cones to simulate a
triangular spiral prism.  It works, but it's ugly and slow as a dog.
Please tell me that there's a better way.  I stared at the docs for
lathe and prism, and I couldn't see anything useful there.
Help?
Jack.
- -- 
Jack Twilley
jmt at twilley dot org
http colon slash slash www dot twilley dot org slash tilde jmt slash
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (FreeBSD)
iD8DBQFAYuneGPFSfAB/ezgRAoMGAJ0aaJINe5OpXNP7UMxa9j1/coNovACgnBUu
MlX93neI9Bx0USOF+Tt13pE=
=Jafi
-----END PGP SIGNATURE-----
Post a reply to this message
 |  |  |  |  |  |  |  |  
|  |  | 
| From: Alf Peake Subject: Re: There must be a better way to do threads
 Date: 25 Mar 2004 10:34:24
 Message: <4062fc00@news.povray.org>
 
 |  |  |  |  |  |  |  |  |  
|  |  | Hi Jack
Have you tried pov's helix function (the thread shape does not have to
be round)?
Try playing with this:
//Start extract
#include "functions.inc"
// Bolt - thread is made 4 times larger.
#declare Thread =
isosurface {
  function{ f_helix1(x,y,z, 1, 40, 0.12, 0.28, 0.7, 2, 0) }
  contained_by{ box{ <-0.5,-3,-0.5>,<0.5,-0.6,0.5> } }
  accuracy 0.0001
  max_gradient 1.7
}
#declare Bolt =
difference{
   union{
      cylinder{ 0, y*0.3, 0.3 } // Head
      object{ Thread scale 0.25 }
      cylinder{ -y*0.75, -y*0.1, 0.07 }
      cylinder{ <0,-0.15,0>, <0,0.05,0>, 0.1 }
   }
   torus{ 0.1, 0.04 translate -y*0.15 }
   box{ <-0.05,0.2,-0.4>, <0.05,0.35,0.4> }
}
// End extract
You can see an example of these here:
http://www.peake42.freeserve.co.uk/pix1/tape.jpg
There is also a "Nut and Bolt" macro out there somewhere (also try
p.b.s-f and p.t.s-f).
-- 
Alf
http://www.peake42.freeserve.co.uk/
http://www.qsl.net/gw3srg/
Post a reply to this message
 |  |  |  |  |  |  |  |  
|  |  |  |  |  |  |  |  |  |  |  
|  |  | -----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
I hadn't tried f_helix[12] or f_spiral because I couldn't find any
example code using them, and I've never used isosurfaces before.
If f_helix1 will allow me to create a triangular spiral prism, then
I'm all set.  I'll tinker with the code you've posted (it all makes
sense except the isosurface stuff) and see if I can make it work.
Thanks!
Jack.
- -- 
Jack Twilley
jmt at twilley dot org
http colon slash slash www dot twilley dot org slash tilde jmt slash
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (FreeBSD)
iD8DBQFAYwtoGPFSfAB/ezgRAnbNAKCYiG2uygYwb13LAwMfVamzPqIScACgjNj2
jKq9N+VQxr59jYH4dBo5b6E=
=2Alh
-----END PGP SIGNATURE-----
 Post a reply to this message
 |  |  |  |  |  |  |  |  
|  |  |  |  |  |  |  |  |  |  |  
|  |  | Jack Twilley wrote:
 > Help?
Hello Jack.
Here's a simple way using an isosurface and a declared pattern to make 
triangular threads:
#declare threads=
  function{
   pattern{ spiral1 1 rotate x*90 triangle_wave}
  }
isosurface {
  function{
   // cylinder, with a radius of 5 units
   sqrt(x*x+z*z)-5
   // threads
   +threads(x,y,z)/4
  }
  accuracy .01
  evaluate 5, 1.2, 0.95
  contained_by{ box{<-5,-10,-5>,<5,10,5>} }
  pigment{rgb .1}
  finish{reflection .9 specular 1 roughness .05}
}
If I think of anything else, like a faster method, I'll post more code.
-Samuel Benge
Post a reply to this message
 |  |  |  |  |  |  |  |  
|  |  |  |  |  |  |  |  |  |  |  
|  |  | In article <86b### [at] duchess twilley  org>,
 Jack Twilley <jmt+use### [at] twilley  org> wrote:
> This macro creates a jillion (well, perturn*turns) cones to simulate a
> triangular spiral prism.  It works, but it's ugly and slow as a dog.
> Please tell me that there's a better way.  I stared at the docs for
> lathe and prism, and I couldn't see anything useful there.
There are several better ways. You could build a mesh or use an 
isosurface, for example. The mesh would probably be faster, the 
isosurface would use less memory and wouldn't have faceting problems.
-- 
Christopher James Huff <cja### [at] earthlink  net>
http://home.earthlink.net/~cjameshuff/
POV-Ray TAG: <chr### [at] tag  povray  org>
http://tag.povray.org/ Post a reply to this message
 |  |  |  |  |  |  |  |  
|  |  |  |  |  |  |  |  |  |  |  
|  |  | In article <cjameshuff-7E0E3C.13495525032004@news.povray.org>,
 Christopher James Huff <cja### [at] earthlink net> wrote:
> There are several better ways. You could build a mesh or use an 
> isosurface, for example. The mesh would probably be faster, the 
> isosurface would use less memory and wouldn't have faceting problems.
BTW, an easy method of generating a mesh would be to use the 
cylinderical height field macro in shapes.inc. Just use a spiral pattern 
function to bring out the threads.
-- 
Christopher James Huff <cja### [at] earthlink  net>
http://home.earthlink.net/~cjameshuff/
POV-Ray TAG: <chr### [at] tag  povray  org>
http://tag.povray.org/ Post a reply to this message
 |  |  |  |  |  |  |  |  
|  |  |  |  |  |  |  |  |  |