Take the 2-minute tour ×
Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. It's 100% free, no registration required.

I'm trying to figure out a formula... for how much a picture (rectangle) would have to be scaled up during a rotation (at any rotation amount) so that you don't see the edge of the picture in the square of the bounding box.

rotation problem graphic

If the bounding box is square it might be a simpler formula. But when the box is rectangle it seems like it gets harder to figure out. Although it might be a different formula if the width>height, than if the height>width. The graphic above shows 30 degrees which took 170%. I would think 45 degrees would be the worst case scenario then from there to 90 it would go down again.

To clarify, I am looking for a formula to calculate a scale factor to use given an angle a height and a width. We can assume the size and aspect of the bounding box to be equal to the size and aspect of the photo. So the input is Angle, Height, and Width.. the output is Scale Factor.

Or actually, maybe it can be figured out using the Angle and an Aspect Ratio.. where aspect ratio is width/height.

In practice this will be done in code.. so it doesn't have to be a single formula. It can be different formulas for different scenarios.. such as if the w>h or w=h or w

share|improve this question

1 Answer 1

up vote 2 down vote accepted

The formula you want in this case is as follows: $$ k = \cos\theta+\frac{W}{H}\sin\theta $$ Where: $H$ is the height, $W$ is the width, $\theta$ is the angle of rotation (from $0$ to $90$ degrees), and $k$ is the scaling factor.

Interestingly, this means that the "worst case" (largest scaling factor) corresponds to $$ \theta = \tan^{-1}\left(\frac{W}{H}\right) $$


Proof:

Proof of formula


In fact, I overlooked what happens when $W<H$. In fact, we should have

$$ k = \begin{cases} \cos\theta+\frac{W}{H}\sin\theta & W\geq H\\ \cos\theta+\frac{H}{W}\sin\theta & W < H \end{cases} $$

For the second case, we could draw the above and still have overlap. The more mathematically concise (but computationally expensive) way to write this would be $$k = \cos\theta + \max\left\{\frac{W}{H},\frac{H}{W}\right\}\sin\theta$$

share|improve this answer
    
Would you like a diagram to explain the formula, or is this all you needed? –  Omnomnomnom Jul 8 '13 at 1:47
    
Actually, I'm not totally sure about this. Have to check it over again –  Omnomnomnom Jul 8 '13 at 1:52
    
This is the correct formula, sorry for the hiccup before. I can provide a diagram if you'd like it. –  Omnomnomnom Jul 8 '13 at 2:02
    
Diagrams are always a good idea. –  dfeuer Jul 8 '13 at 3:58
    
Thanks! This is exactly what I was looking for. It makes sense when you show it like that too. The diagram helped a lot to make it make sense. I see the two triangles that you have to add up to make H'. And the ratio between H and H' is the scale factor. I'm not a mathematician but I have to figure out a lot of formulas to write games. –  badweasel Jul 8 '13 at 6:22

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.