Re: Trouble with Rotate
- To: mathgroup at smc.vnet.net
- Subject: [mg83358] Re: Trouble with Rotate
- From: "David Park" <djmpark at comcast.net>
- Date: Sun, 18 Nov 2007 04:48:38 -0500 (EST)
- References: <fhmh8n$adj$1@smc.vnet.net>
This is a case where a clash of graphics levels gives users trouble. All of
the examples for Rotate use Graphics3D primitives and they don't show an
example of using a curve or surface. This is much easier with the
DrawGraphics package ($50) from my web site that automatically turns curves
and surfaces into primitives and also has simplified commands for the
various geometric transformations.
First I would define the circle parametrization as follows:
circ[r_, f_, q_] := {r*Sin[q]*Cos[f], r*Sin[q]*Sin[f], r*Cos[q]}
Then using DrawGraphics this could be drawn as:
Needs["DrawGraphics`DrawingMaster`"]
Draw3DItems[
{ParametricDraw3D[circ[1, f, Pi/4], {f, 0, 2 Pi}]},
Axes -> True]
To rotate the object, say about the x axis at the center point, you can use:
With[
{circle0=ParametricDraw3D[circ[1,f,Pi/4],{f,0,2Pi}]},
Draw3DItems[
{circle0,
Red,
circle0//RotateOp[Pi/2,{0,1,0},{0,0,Cos[Pi/4]}]},
Axes->True]
]
where RotateOp is just a more convenient postfix form of Rotate and I have
shown the before and after circles.
The new follow on Presentations package, which purchasers will be able to
freely update to, has the command Circle3D and Disk3D in which you can
specify the center, normal and radius of the circle or disk. With that we
can write.
Draw3DItems[
{Circle3D[{0, 0, 1}, {0, 0, 1}, 1],
Red,
Circle3D[{0, 0, 1}, {1, 0, 0}, 1]},
Axes -> True]
--
David Park
djmpark at comcast.net
http://home.comcast.net/~djmpark/
"Sergio Miguel Terrazas Porras" <sterraza at uacj.mx> wrote in message
news:fhmh8n$adj$1 at smc.vnet.net...
> Hi there!
>
>
>
> I am having trouble with Rotate.
>
> Here is the problem:
>
> I have a Graphics3D object called circ1 (obviously a circle in 3D space).
>
>
>
> r=1;q=p/4;
>
> circ1=ParametricPlot3D[{r*Sin[q]*Cos[f],r*Sin[q]*Sin[f],r*Cos[q]},{f,0,2
> p}]
>
>
>
> Now I want to rotate it by some angle about the vector eje={1,0,0} or
> whatever vector.
>
>
>
> y=p/4;eje={1,0,0};p={0,0,0};
>
> Graphics3D[Rotate[circ1,y,eje]]
>
>
>
> What I get is the message "Rotate is not a Graphics3D primitive or
> Directive" (??)
>
>
>
> Any help will be appreciated.
>
>
>
> BTW, where dis the command ShadowPlot go?
>
>
>
> Thanks
>
>
>
> Sergio Terrazas
>
>