POV-Ray : Newsgroups : povray.binaries.images : Cutty Sark : Re: Cutty Sark Server Time
25 Dec 2025 12:15:37 EST (-0500)
  Re: Cutty Sark  
From: Bald Eagle
Date: 24 Dec 2025 22:35:00
Message: <web.694cb0b0392cce911f9dae3025979125@news.povray.org>
"Ton" <ton### [at] gmailcom> wrote:

> The bell and compass on the poop deck, the rudder wheel, the railing along the
> stern.

I modeled a naval bell to honor clipka's father.
It's yours if you'd like to use it.

I have a compass rosette kicking around somewhere as well.

If that helps you get that much farther.

Great work as always. :)
Merry Christmas.



#version 3.8;
global_settings {assumed_gamma 1.0 }

camera {
 location <0, 2, -8>
 right x*image_width/image_height
 up y
 look_at <0, 0, 0>
}

light_source {<1, 2, -5> rgb 1 shadowless}
sky_sphere {pigment {rgb 1}}

#declare bellSpline = array [12] {
     < 3.4688, 0.0001>,
     < 3.4688, 0.0002>,
     < 3.0938, 0.4375>,
     < 2.9375, 0.6250>,
     < 2.4844, 1.3438>,
     < 2.1719, 2.6094>,
     < 2.0469, 4.4688>,
     < 1.9063, 4.6875>,
     < 1.7500, 4.8750>,
     < 1.0313, 5.0938>,
     < 0.0001, 5.1563>,
     < 0.0001, 5.1564>
}

//============================================================================================================
// braided rope handle
#declare Lines = 5;
#declare Pitch = 2;
#declare Degree = (1/360);

#declare Rad = 0.002;  // sphere radius
#declare Dia = Rad * 2;
#declare Cycles = 1;
#declare Freq = 1;

#declare R1 = 0.05; // radius of large spiral
#declare A = 0.01; //radius of small spiral
//#declare B = 1.5;
#declare H = 0.002; //large spiral pitch smaller = tighter
#declare W = 8; // pitch of small spiral - how many cycles around one loop

#declare C = 0.01; // amplitude of undulation 1
#declare U = 0.1;  // undulation 2

#declare STEPS = 0.002*10;

#declare Strand1 = union {
 #for (i, -(Cycles/2)*360, (Cycles/2)*360, STEPS)
  #declare R = R1+(C*sin(U*i));   // adds undulation to cylindrical braid
  #local Angle = Degree * i;
  #local j = i + 45;     /// rotates green strand 45 deg from red
  #local Helix1_X = (R+A*cos(W*i))*cos(i);
  #local Helix1_Z = (R+A*cos(W*i))*sin(i);
  sphere {<0, 0, 0> Rad translate <Helix1_X, (H*i), Helix1_Z>} //weave
 #end // end for i
} // end union

#declare Strand2 = union {
 #for (i, -(Cycles/2)*360, (Cycles/2)*360, STEPS)
  #declare R = R1+(C*sin(U*i));   // adds undulation to cylindrical braid
  #local Angle = Degree * i;
  #local j = i + 45;     /// rotates green strand 45 deg from red
  #local Helix2_X = (R+A*cos(W*j))*sin(j);
  #local Helix2_Z = (R+A*cos(W*j))*cos(j);
  sphere {<0, 0, 0> Rad translate <Helix2_X, (H*i), Helix2_Z>} //weave
 #end // end for i
} // end union


#declare AllStrands = union {

 #for (k, 1, W, 2)
  object {Strand1 rotate y*k*(360/W)}
  object {Strand2 rotate y*k*(360/W)}
 #end // end for k
}

#declare Handle = object {AllStrands texture {pigment {rgb 1} normal {bumps
0.01}} scale 2};
//============================================================================================================

#declare arraySize = dimension_size (bellSpline, 1)-1;
#declare Rad = 0.1;
#declare Xmax = 0;
#declare Ymax = 0;

#declare Bell1 =
union {

 cylinder {<0, 0, 0>, <0, (5.0938/2)+1, 0> 0.125}
 sphere {0, 0.25}
 torus {0.125, 0.125/4 rotate x*90 translate -y*0.25}
 object {Handle translate -y*1}
 sor {
     arraySize+1,
  #for (B, 0, arraySize)
  #local NewSpline = bellSpline [B]/2;
  //#debug concat ("B = ", str (B, 3, 1), "| Point = ", vstr (2, bellSpline [B],
",", 5, 1), "\n")
  #declare Xmax = max (Xmax, NewSpline.x);
  #declare Ymax = max (Ymax, NewSpline.y);
  NewSpline,
  #end
     open
     sturm
 }
 //texture { T_Gold_1B }
 //texture { mtex }
 pigment {rgb <1, 1, 0>}
}

object {Bell1}


Post a reply to this message

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