POV-Ray : Newsgroups : povray.newusers : Object design help requested : Re: Object design help requested Server Time
29 Jul 2024 22:25:00 EDT (-0400)
  Re: Object design help requested  
From: gonzo
Date: 23 Jan 2005 15:24:00
Message: <41f407e0@news.povray.org>
Stephen - remove the hyphens wrote:
> My skills with Povray are reasonable, using CSGs and more complicated spline
> designs, without yet getting into some of the more highly mathematical
> convolutions.  I have a couple simple objects I'd like to build, being a
> lock and key and a micrometer. Both the key and micrometer have parts which
> are I-beam in cross section and I can't figure out how to do that.
> 
> Suggestions requested.
> 
> - the key is essentially a long cylinder connected to four very short (flat)
> cylinders, overlaid edge to edge,  much like a "club" in a deck of cards.
> There is a rounded ridge ( similar to a torus ) around the perimeter, but of
> course does not cross into the middle of the key.
> 
> How to raise a smooth ridge on the perimeter of the key?  Best that I can
> think of is create the four short cylinders and ring them with tori
> (toruses) but then how to smooth the part of the ridge in the middle of the
> key. Possibly by subtracting another shape which would have to be carefully
> designed to follow the perimeter of key, but this seems like a lot of work.
> 
> - the micrometer is "C" shaped in design with the measuring points between
> the open parts of the "C" (like a c-clamp) . The backbone of the C looks
> like an I-Beam but also varies in what would be the height of the I-beam, in
> other words the central portion of the beam is much shorter towards the tips
> of the C than in the middle of the distance between the tips.
> 
> Suggestions?
> thanks in advance.

Here's a quickie micrometer backbone (set In to whatever scale you 
prefer, I use 1 PovUnit = 1 Ft):

// ----- begin -----
#declare In = 1/12;

#macro C_Clamp( RR, OR, IR, IS, RD )
   #local Outer_Rim = torus { OR, RR scale y*2 }

   #local Inner_Rim = torus { IR, RR scale <1,2,IS>}

   #local C_Bar = difference {
     cylinder { <0,-RR,0> <0,RR,0> OR }
     cylinder { <0,-RR*1.1,0> <0,RR*1.1,0> IR scale z*IS }
   }

   #local Rim = intersection {
     union {
       object { Outer_Rim scale y*2 }
       object { Inner_Rim scale y*2}
       object { C_Bar }
     }
     box { <0, -RR*2.1, -OR-RR*1.1> <OR+RR*1.1, RR*2.1, OR+RR*1.1> }
   }
   union {
     object { Rim }
     cylinder { <0,0,-.5*In> <0,0,.5*In> RR*3 translate z*(OR-RD)}
     cylinder { <0,0,-.5*In> <0,0,.5*In> RR*3 translate -z*(OR-RD)}
   }
#end


#declare Rim_Rad = .05*In;
#declare O_Rim = 6*In;
#declare I_Rim =  O_Rim - O_Rim*.15;
#declare R_Diff = (O_Rim-I_Rim)*.4;
#declare I_Scale = 1.075;

object { C_Clamp( Rim_Rad, O_Rim, I_Rim, I_Scale, R_Diff )
   pigment { rgb .7 }
}

// ----- end -----

Not sure what you're trying to do with the key, so I'll let someone else 
play with it.

RG


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.