【发布时间】:2012-04-15 19:21:21
【问题描述】:
我阅读了Calculate Bounding box coordinates from a rotated rectangle 以了解如何从旋转的矩形计算边界框坐标。但在特殊情况下如下图:
如果已经获得了边界框大小、坐标和旋转度数,如何获得旋转后的矩形大小?
我尝试用 javascript 编写代码
//assume w=123,h=98,deg=35 and get calculate box size
var deg = 35;
var bw = 156.9661922099485;
var bh = 150.82680201149986;
//calculate w and h
var xMax = bw / 2;
var yMax = bh / 2;
var radian = (deg / 180) * Math.PI;
var cosine = Math.cos(radian);
var sine = Math.sin(radian);
var cx = (xMax * cosine) + (yMax * sine) / (cosine * cosine + sine * sine);
var cy = -(-(xMax * sine) - (yMax * cosine) / (cosine * cosine + sine * sine));
var w = (cx * 2 - bw)*2;
var h = (cy * 2 - bh)*2;
但是……答案是 w 和 h 不匹配
【问题讨论】:
-
“矩形大小”是什么意思?如果您旋转一个对象,您将获得相同的对象旋转...相同的长度,相同的面积...如果您有旋转的结果而不是原始对象,只需使用坐标(你说你有它们),计算“角点”之间的距离以获得每条边的长度。
-
我假设,参考您的“案例图片”,您有
bh、bw和theta,并且您想要w和h?跨度> -
我认为您的 Javascript 代码几乎是正确的,但您偏离了几个加号/减号。看我的回答。
标签: math geometry rotation bounding-box