已知矩形中心点,宽高,求矩形旋转后的坐标

	//  pt1-------pt2
	//   |         |
	//   |         |
	//   |         |
	//  pt4-------pt3

// 已知矩形中心点QPoint pt, 矩形宽W,高H,求沿中心点旋转_anle后的坐标位置

QPoint _pt1, _pt2, _pt3, _pt4;

qreal angle = _angle / 180.0 * M_PI;
qreal a = qSin(angle) * 0.5;
qreal b = qCos(angle) * 0.5;


_pt1 = QPoint(pt.x() + a * H- b * W, pt.y() - b * H- a * W);
_pt3 = QPoint(2 * pt.x() - _pt1.x(), 2 * pt.y() - _pt1.y());
_pt4 = QPoint(pt.x() - a * H- b * W, pt.y() + b * H- a * W);
_pt2 = QPoint(2 * pt.x() - _pt4.x(), 2 * pt.y() - _pt4.y());

使用QT

QRectF rectF = QRectF((m_windowCenter - QPointF(m_windowSize.width() / 2, m_windowSize.height() / 2)), m_windowSize);

QPolygonF polyf;
polyf  << rectF.topLeft() << rectF.topRight() << rectF.bottomRight() << rectF.bottomLeft() << rectF.topLeft();

QTransform trans;
trans.translate(m_windowCenter.x(), m_windowCenter.y());
trans.rotate(m_windowRotation);
trans.translate(-m_windowCenter.x(), -m_windowCenter.y());
	
polyf = trans.map(polyf);

pt1 = polyf.at(0);
pt2 = polyf.at(1);
pt3 = polyf.at(2);
pt4 = polyf.at(3);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值