How to calculate rotation angle from rectangle points?

后端 未结 3 1900
春和景丽
春和景丽 2020-12-03 01:04

I have 4 points 1,2,3,4 that closes a rectangle.

The points are in a array in this following way: x1

3条回答
  •  执念已碎
    2020-12-03 02:08

    This is how you get the angle between the vertical pink line and the black line starting at the pink line intersection:

    var deg = 90 - Math.arctan((x2-x1) / (y2-y1));
    

    The dimensions can be calculated with the help of the Pythagoras theorem:

    var width = Math.sqrt((x2-x1)^2 / (y2-y1)^2));
    var height = Math.sqrt((x1-x4)^2) / (y4-y1)^2));
    

    The positional coordinates (left and top) are the averages of x1 and x3 and y1 and y3 respectively.

    var left = Math.floor((x1 + x3) / 2);
    var top = Math.floor((y1 + y3) / 2);
    

    You want to use the negative-margin trick.

    var marginLeft = -Math.ceil(width / 2);
    var marginTop = -Math.ceil(height / 2);
    

提交回复
热议问题