Re: How to ParametricPlot3D a plane given Normal and Distance
- To: mathgroup at smc.vnet.net
- Subject: [mg84694] Re: How to ParametricPlot3D a plane given Normal and Distance
- From: "David Park" <djmpark at comcast.net>
- Date: Thu, 10 Jan 2008 02:26:16 -0500 (EST)
- References: <fm22bj$94u$1@smc.vnet.net>
Let d be the distance of the plane from the origin and n the normal to the
plane. Then the plane will be tangent to a sphere of radius d about the
origin. We can use the Mathematica geometric transformation routines. Draw a
plane segment in the xy-plane. Then rotate the z-axis to the n direction.
Then translate in the n direction to the suface of the sphere.
I'm going to make the diagram using the Presentations package using
particular values for d and n.
Needs["Presentations`Master`"]
With[
{d=3,
n={1,-1,1}},
Draw3DItems[
{(* Draw sphere of radius d *)
Opacity[.5,Orange],Sphere[{0,0,0},d],
(* Draw xy-plane segment, rotate to normal and translate to the sphere *)
Opacity[.8,Lighter@Blue],
ParametricDraw3D[{x,y,0},{x,-d,d},{y,-d,d},
Mesh->10]//RotationTransformOp[{{0,0,1},n}]//TranslationTransformOp[d
Normalize[n]],
(* Draw a line and 3D arrow to indicate the normal *)
Opacity[1,Black],
Line[{{0,0,0},d Normalize[n]}],
Green,
Arrow3D[d Normalize[n],2d Normalize[n]]},
NeutralLighting[0,.6,.1,40=B0],
NiceRotation,
PlotRange->2d,
Axes->True,
ImageSize->350]
]
To obtain the parametrization for the plane, so you could plot it with
ParametricPlot3D we can use:
With[
{d = 3,
n = {1, -1, 1}},
TranslationTransform[d Normalize[n]]@
RotationTransform[{{0, 0, 1}, n}]@{x, y, 0} // Simplify]
{Sqrt[3] + 1/6 (3 + Sqrt[3]) x - 1/6 (-3 + Sqrt[3]) y,
1/6 (-6 Sqrt[3] - (-3 + Sqrt[3]) x + (3 + Sqrt[3]) y), (
3 - x + y)/Sqrt[3]}
Unfortunately, RotationTransform will not evaluate with symbolic vectors so
it is not as easy to obtain a general symbolic parametrization.
--
David Park
djmpark at comcast.net
http://home.comcast.net/~djmpark/
"John Rivers" <first10 at btinternet.com> wrote in message
news:fm22bj$94u$1 at smc.vnet.net...
> hello
>
> this has eluded me for some reason ...
>
>
> nx = 0; ny = 0; nz = 1; (* plane's surface normal *)
>
> dist = 0; (* distance of plane from origin *)
>
> fx1 = ???;
> fx2 = ???;
> fx3 = ???;
>
> ParametricPlot3D[
> {fx1, fx2, fx3}, (* functions for x y and z coordinates *)
> {t, -10, 10},
> {u, -10, 10}
> ]
>
> what should the functions fx1 fx2 and fx3 be ?
>
> i have been playing around with:
>
> Ax + By + Cz = D
> - and -
> <x, y, z> dot <nx, ny, nz> = D
>
> but not got anywhere yet
>
> thanks
>
> John
>