Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get size of a rotated rectangle [duplicate]

Tags:

geometry

Possible Duplicate:
Calculate Bounding box coordinates from a rotated rectangle, Picture inside.

I have a rotated rectangle, So how do i calculate the size of axis-aligned bounding box for the rotated rectangle in 2D Coordinates?

Attach Image http://img88.imageshack.us/img88/503/rotp.png

i know x, y, o (angle) but how do i get a, b

Thank you

like image 566
Northern Avatar asked Jul 12 '10 18:07

Northern


1 Answers

To construct an axis-aligned bounding box, one must find the extreme points of the rotated box. i.e.,

given a rectangle 'P', given by points P1=(0,0), P2=(x,0), P3(x,y), P4(0,y), rotated 'R' degrees; find minX, maxX, minY, maxY, such that the box [(minX,minY),(maxX,maxY)] completely bounds the rotated 'P'.

                          +-------P3'----+maxY
                          |     /    \   |
  P4------P3              |   /        \ |
   |      |    rotate     | /            P2'
   |      | => by 'R' =>  P4'           /|
   |      |    degrees    | \         /  |
  P1------P2              |   \     /    |
                          |     \ /      |
                          +-----P1'------+minY
                         minX           maxX

The values for the bounding box are the minimum/maximum of the components of the rotated points P1'..P4'; thus,

minX=min(P1'[x],P2'[x],P3'[x],P4'[x])
maxX=max(P1'[x],P2'[x],P3'[x],P4'[x])
minY=min(P1'[y],P2'[y],P3'[y],P4'[y])
maxY=max(P1'[y],P2'[y],P3'[y],P4'[y])

For a discussion of 2D rotations, see http://en.wikipedia.org/wiki/Transformation_matrix#Rotation

like image 116
eric Avatar answered Oct 25 '22 05:10

eric



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!