|
|
|
|
|
|
| |
| |
|
|
|
|
| |
| |
|
|
To be solved with SDL. No #includes, though. And of course the simpler
the answer, the better. Try to solve these before looking at other people's
answers... :)
1) Transform a "box { 0, 1 }" with one single 'rotate' so that the box
corner at <1,1,1> ends up exactly on the y axis.
2) Create 4 spheres of the same size so that 3 of them are sitting on
the x-z plane, each one touching the other two at one single point,
and the 4th sphere is on top of the three, touching all these other
three spheres at one single point each.
3) Add a fifth, smaller sphere to the previous scene so that it touches
all the four larger spheres at a single point each.
Commented code is preferable. :)
--
- Warp
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Warp <war### [at] tagpovrayorg> wrote:
> To be solved with SDL. No #includes, though. And of course the simpler
> the answer, the better. Try to solve these before looking at other people's
> answers... :)
>
> 1) Transform a "box { 0, 1 }" with one single 'rotate' so that the box
> corner at <1,1,1> ends up exactly on the y axis.
>
> 2) Create 4 spheres of the same size so that 3 of them are sitting on
> the x-z plane, each one touching the other two at one single point,
> and the 4th sphere is on top of the three, touching all these other
> three spheres at one single point each.
>
> 3) Add a fifth, smaller sphere to the previous scene so that it touches
> all the four larger spheres at a single point each.
>
> Commented code is preferable. :)
>
> --
> - Warp
WHAT???! I'm not doing your homework!
An answer to number 1:
/****************************************************************************
Version: POV-ray 3.6 (official)
File: news_box_test.pov
Scene Description: Transforms a "box { 0, 1 }" with one single 'rotate'
so that the box corner at <1,1,1> ends up exactly on the y axis.
Written by: Reactor
Date: 2009 June 08
****************************************************************************/
#version 3.6;
global_settings
{
assumed_gamma 1.0
}
background{ color rgb <1,1,1> }
light_source
{
<100,100,-100>
color rgb <1,1,1>
}
// visual representation of standard axis
// red for +x, green for +y, blue for +z
union
{
cylinder{ <0,0,0>, <1,0,0>, .005 pigment{ color rgb <1,0,0> } }
cylinder{ <0,0,0>, <0,1,0>, .005 pigment{ color rgb <0,1,0> } }
cylinder{ <0,0,0>, <0,0,1>, .005 pigment{ color rgb <0,0,1> } }
cone{ <1,0,0>, .015, <1.1,0.0,0.0>, 0 pigment{ color rgb <1,0,0> } }
cone{ <0,1,0>, .015, <0.0,1.1,0.0>, 0 pigment{ color rgb <0,1,0> } }
cone{ <0,0,1>, .015, <0.0,0.0,1.1>, 0 pigment{ color rgb <0,0,1> } }
scale 4
}
union
{
box // THE BOX
{
0, 1
pigment{ color rgb <0.5,0.5,0.5> }
}
sphere // yellow sphere marking corner at <1,1,1>
{
<1,1,1>, .05
pigment{ color rgb <1,1,0> }
}
rotate <-45,0, 180/pi*asin(1/sqrt(3))>
// where 180/pi converts from radians to degrees,
// 1 is a side length, and sqrt(3) is the length of the long diagonal
// between opposite corners.
}
camera
{
location <4,2,-5>
look_at <1,1.5,1>
}
//--------------------------
-Reactor
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Warp <war### [at] tagpovrayorg> wrote:
> To be solved with SDL. No #includes, though. And of course the simpler
> the answer, the better. Try to solve these before looking at other people's
> answers... :)
>
> 1) Transform a "box { 0, 1 }" with one single 'rotate' so that the box
> corner at <1,1,1> ends up exactly on the y axis.
>
> 2) Create 4 spheres of the same size so that 3 of them are sitting on
> the x-z plane, each one touching the other two at one single point,
> and the 4th sphere is on top of the three, touching all these other
> three spheres at one single point each.
>
> 3) Add a fifth, smaller sphere to the previous scene so that it touches
> all the four larger spheres at a single point each.
>
> Commented code is preferable. :)
>
> --
> - Warp
For the second one:
#local rad = 1;
union
{
sphere{ <0, rad*sqrt(8/3), 0>, rad } // top one
// the other spheres are laid out as corners of an equilateral triangle.
// all start at the +z distance away from the center of the triangle (the
origin)
// the spheres are then rotated into place
sphere{ <0, 0, rad*2/3*sqrt(3)>, rad rotate <0, 0,0> }
sphere{ <0, 0, rad*2/3*sqrt(3)>, rad rotate <0, 120,0> }
sphere{ <0, 0, rad*2/3*sqrt(3)>, rad rotate <0,-120,0> }
translate <0,rad,0> // move up to x-z plane
pigment{ color rgb <0.5,1.0,0.5> }
}
I *think* I can think of one for the third, but I can't finish it now.
-Reactor
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
"Reactor" <rea### [at] hotmailcom> wrote:
> rotate <-45,0, 180/pi*asin(1/sqrt(3))>
slightly shorter:
rotate <0,45,atan(sqrt(2))*180/pi>
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Reactor <rea### [at] hotmailcom> wrote:
> sphere{ <0, rad*sqrt(8/3), 0>, rad } // top one
> // the other spheres are laid out as corners of an equilateral triangle.
> // all start at the +z distance away from the center of the triangle (the
> origin)
> // the spheres are then rotated into place
> sphere{ <0, 0, rad*2/3*sqrt(3)>, rad rotate <0, 0,0> }
> sphere{ <0, 0, rad*2/3*sqrt(3)>, rad rotate <0, 120,0> }
> sphere{ <0, 0, rad*2/3*sqrt(3)>, rad rotate <0,-120,0> }
Can you explain in more detail how you came up with those magical
formulae?
--
- Warp
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Warp <war### [at] tagpovrayorg> wrote:
> Reactor <rea### [at] hotmailcom> wrote:
> > sphere{ <0, rad*sqrt(8/3), 0>, rad } // top one
>
> > // the other spheres are laid out as corners of an equilateral triangle.
> > // all start at the +z distance away from the center of the triangle (the
> > origin)
> > // the spheres are then rotated into place
> > sphere{ <0, 0, rad*2/3*sqrt(3)>, rad rotate <0, 0,0> }
> > sphere{ <0, 0, rad*2/3*sqrt(3)>, rad rotate <0, 120,0> }
> > sphere{ <0, 0, rad*2/3*sqrt(3)>, rad rotate <0,-120,0> }
>
> Can you explain in more detail how you came up with those magical
> formulae?
>
> --
> - Warp
I... no... not really. I am really bad at explaining these things via
news/text, primarily because I have to be able to see or draw the shapes to
visualize them. However, in lieu of a long-yet-poorly-worded description,
please accept these diagrams on my Povwiki talk page:
http://wiki.povray.org/content/User_talk:Reactor
I hope you can read my handwriting, if not I will try to decipher it myself and
transcribe it.
-Reactor
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
(1) After you rotate the box corner to the xz plane
the coordinates of the corner are now <sqrt(2),a>,
so to get the angle you just convert to polar coordinates,
there's a button for that on my caclulator.
(2) Three spheres form a triangle, the radius
of a circumscribed circle around a triangle is
a*sqrt(3)/3, so you have the first three spheres
by rotating them. Then four spheres form a
tetrahedron, the height of a tetrahedron is
a*sqrt(2/3), so you have the forth sphere.
(3) A sphere fit inside a tetrahedron (the insphere)
has a radius of a*0.5*sqrt(6), so we have the
location of the center sphere. Then the radius
of the circumsphere is a*sqrt(2/3), so that's the
distance from the center to the corners, and
the radius of the inner sphere is that distance
minus the bigger sphere radius.
#include "colors.inc"
global_settings {
assumed_gamma 1.0
max_trace_level 10
}
camera {
location <0.0, 1.5, -5.0>
direction 1.5*z
right x*image_width/image_height
look_at <0.0, 0.5, 0.0>
}
light_source {
<0, 0, 0>
color rgb <1, 1, 1>
translate <-30, 30, -30>
}
// ground plane
plane { y, 0 pigment {checker Tan Gray50}}
// a box with a single rotate
union {
box {0,1 rotate <45,54.73561,90>} // (sqrt 2),1 -> toPolar
cylinder {<0,0,0>,<0,100,0>,0.005} // axis marker
pigment {Red}
translate -x
}
// four spheres (close packed tetrahedral)
#declare sRad = 0.5; // sphere radius
#declare a = 2*sRad; // tetrahedral side length
#declare r = 0.5773503*a; // circumscribed circle radius: a*sqrt(3)/3
#declare h = 0.816496*a; // height of tetrahedron: a*sqrt(2/3)
union {
sphere {<0,sRad,r>,sRad}
sphere {<0,sRad,r>,sRad rotate <0, 120,0>}
sphere {<0,sRad,r>,sRad rotate <0,-120,0>}
sphere {<0,h+sRad,0>,sRad}
// a sphere inside four close packed spheres
#declare ir = 0.204124*a; // inradius: a*0.5*sqrt(6)
#declare cs = 0.6123724*a; // circumsphere radius: a*sqrt(2/3)
sphere {<0,ir+sRad,0>,cs-sRad pigment {Blue}}
pigment {Green transmit 0.5}
translate x
}
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
|
|