|
 |
#version 3.8;
global_settings {assumed_gamma 1.0 }
camera {
location <0, 1, -3>
right x*image_width/image_height
up y
look_at <0, 1, 0>
}
light_source {<10, 20, -50> rgb 1}
sky_sphere {pigment {rgb 1}}
#declare TPI = 11; // (Threads per inch / TPI)
#declare DM = 0.625/2;
#declare Dm = 0.5167/2;
#declare Angle = 60;
#declare Pitch = 1/TPI;
#declare CompAngle = 90-Angle;
#declare Asin = atan(radians(CompAngle));
#declare dx = DM - Dm;
#declare dy = dx * Asin;
#declare AL = 2*dy; // total Angled length
#declare FL = (Pitch - AL)/2; // Flat length
// Profile
#declare P = array {
<Dm, 0, 0>,
<DM, dy, 0>,
<DM, dy+FL, 0>,
<Dm, dy+FL+dy, 0>,
<Dm, dy+FL+dy+FL, 0>
}
#declare OldPoint = array[5][3];
#declare NewPoint = array[5][3];
#macro MakeBoltProfile (Pitch,Steps, Tex, Copies)
#local Increment = tau/Steps;
#local Unit =
union {
#for (Theta, 0, tau, Increment)
#for (Pt, 0, 4)
#declare NewPoint[Pt][0] = P[Pt].x * cos (Theta);
#declare NewPoint[Pt][1] = P[Pt].y + Pitch * Theta/tau;
#declare NewPoint[Pt][2] = P[Pt].x * sin (Theta);
#end
#if (Theta > 0)
#for (T, 0, 3)
triangle {<OldPoint[T][0], OldPoint[T][1], OldPoint[T][2]>,
<NewPoint[T][0], NewPoint[T][1], NewPoint[T][2]>,
<OldPoint[T+1][0], OldPoint[T+1][1], OldPoint[T+1][2]>
}
triangle {<OldPoint[T+1][0], OldPoint[T+1][1],
OldPoint[T+1][2]>,
<NewPoint[T][0], NewPoint[T][1], NewPoint[T][2]>,
<NewPoint[T+1][0], NewPoint[T+1][1], NewPoint[T+1][2]>
}
#end
#end
#declare OldPoint = NewPoint;
#end
texture {Tex}
}
#for (C, 1, Copies)
object {Unit translate y*Pitch*C*1}
#end
#end
#declare MyTex = texture {pigment {rgb 0.9} finish {specular 0.4 reflection
0.01}}
MakeBoltProfile (Pitch, 72, MyTex, 25)
Post a reply to this message
Attachments:
Download 'lanuhumboltmesh.png' (83 KB)
Preview of image 'lanuhumboltmesh.png'

|
 |