Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2000
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2000

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Rotation of 2D graphics

  • To: mathgroup at smc.vnet.net
  • Subject: [mg26445] Re: Rotation of 2D graphics
  • From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
  • Date: Thu, 21 Dec 2000 01:51:47 -0500 (EST)
  • Organization: Universitaet Leipzig
  • References: <91pjqi$601@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Hi,

say you have a 2d matrix m for the rotation and a center c
define a function

rotate[p:{_?NumericQ,_?NumericQ}]:=c+Dot[m,p-c]

and you with to rotate the 2d graphics gr


gr /. {Point[p_]:> Point[rotate[p]], 
       h:(Line|Polygon)[pts_]:> h[rotate /@ pts],
       Text[a_,p_,opt___]:> Text[a,rotate[p],opt}

and you graphics is rotated. Put all together with

Rotate2D[gr_Graphics, angle_?NumericQ, c : {_?NumericQ, _?NumericQ}] :=
  Module[{m, rotate},
    m = N[{{Cos[angle], -Sin[angle]},
           {Sin[angle], Cos[angle]}}];
    rotate[p : {_?NumericQ, _?NumericQ}] := c + Dot[m, p - c];
    gr /. {Point[p_] :> Point[rotate[p]], 
          (h : Line | Polygon)[pts_] :> 
          h[rotate /@ pts], Text[a_, p_, opt___] :> Text[a, rotate[p],
opt]}
    ]


Yo still need some rules to rotate ContourGraphics[] and
DensityGraphics[]
and to transform Disc[] and Cricle[] ...

gg=FullGraphics[Plot[Sin[x], {x, -Pi, Pi}]

and 

Show[Rotate2D[gg, -Pi/4, {0, 0}]]

will rotate it.

Regards
  Jens            



Stephen Sheppard wrote:
> 
> I have some graphics generated by showing several 2d plots, and I would like
> to be able to spin these about a specified point.  This is very easy if
> everything has been generated using primitives like Line, Point, etc.  What
> I would like to be able to do is to take an entire image that can be viewed
> using "Show" and rotate it by r radians about the point {x,y}.  Something
> like:
> 
> Show[%]
> 
> ShowRotate[%,r,{x,y}]
> would then produce the graphic with everything (including the axes, labels,
> etc.) rotated.
> 
> Any suggestions?  I would be happy if this were obvious.
> 
> Stephen Sheppard
> Department of  Economics
> Williams College


  • Prev by Date: RE: newbie question on sorting
  • Next by Date: Re: newbie question on sorting
  • Previous by thread: Rotation of 2D graphics
  • Next by thread: RE: Rotation of 2D graphics