|
|
You guys are missing something...
Remco de Korte wrote:
>
> David Fontaine wrote:
> >
> > Remco de Korte wrote:
> >
> > > I know there are many of you for whom this is daily stuff, so perhaps someone
> > > can help me with this:
> > >
> > > If I have a sphere with radius 1 intersected by a cylinder with radius .5, with
> > > an axis in the z-direction through point <.75,0> how can I calculate the points
> > > on the curve where these two intersect?
> > > The values are arbitrary and I know there are several ways to calculate both
> > > objects and that you should cross these two some way but I get very weird
> > > looking results and I'm convinced it should be something simple (or at least I
> > > hope).
> >
> > Assuming <.75,0> means <.75,0,0>:
>
> Yes, of course :)
And it doesn't matter as the Cylinder runs through EVERY single point
along the Z axis whose X,Y coordinates are (.75,0).
>
> >
> > x^2 + y^2 + z^2 = 1 <-> x^2 + y^2 + z^2 - 1 = 0
> > (x-.75)^2 + y^2 = .25 <-> x^2 + y^2 - 1.5x + .3125 = 0
> > -----------------------------------
> > z^2 + 1.5x - 1.3125 = 0
> >
> > I think...
> >
>
> That's (similar to) what I found. Now to get that into some traceable code...
Here's the code (picture in p.b.i), as you can see the above equation is
that of a parabolic prism (or whatever you want to call it) and while
the shape of the intersection between the cylinder and the sphere
conforms to the parabolic surface, the aforemention equation is not
enough to define properly the shape of the intersection. I'm still way
too sleepy to actually work on the exact equation.
(Apologies for the sloppy formating)
#version unofficial megapov 0.6;
#include "colors.inc"
camera{ location <6,2.5,2.5> look_at <0,0,2.5> }
light_source{ <10,10,2.5> White }
//
// The cylinder and sphere
//
merge {
sphere { <0,0,0> 1 }
cylinder { <.75,0,-2> <.75,0,2> 0.5 }
texture { pigment { color Blue transmit 0.75 } }
}
//
// The intersection of...
//
#declare Inter = intersection {
difference {
sphere { <0,0,0> 1.02 }
sphere { <0,0,0> 1 }
}
difference {
cylinder { <.75,0,-2> <.75,0,2> 0.52 }
cylinder { <.75,0,-3> <.75,0,3> 0.5 }
}
texture { pigment { color Red } }
}
object { Inter }
//
// David's function
//
object {
isosurface {
function { z^2 + 1.5*x - 1.315 }
contained_by { box { <-2,-1,-2 > < 2,1,2 > } }
texture { pigment { color Green transmit 0.75} }
}
translate z*5
}
//
// The real intersection overlaid on David's func...
//
object { Inter translate z*5 }
plane { y, -1 texture { pigment { color White } } }
--
Francois Labreque | Unfortunately, there's no such thing as a snooze
flabreque | button on a cat who wants breakfast.
@ | - Unattributed quote from rec.humor.funny
videotron.ca
Post a reply to this message
|
|