首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从x、y、宽度、高度和旋转角度获取旋转后的矩形点

从x、y、宽度、高度和旋转角度获取旋转后的矩形点
EN

Stack Overflow用户
提问于 2016-07-11 06:42:44
回答 2查看 2.1K关注 0票数 3

我有一个旋转的矩形(在本例中是45度),看起来像这样:

我知道X来自矩形的左上角(如果它没有旋转,在本例中是图片顶部的点)。Y也是从左上角开始。我有宽度、高度和边界框。我想找出这个矩形的其他点是什么。左上角(严格来说,本例中的X位置),右上角,右下角和左下角。我试图使用变换矩阵,但我似乎无法理解它。

如何找到这个矩形的其他点?从技术上讲,我使用的是JavaScript,但是任何语言都应该能够处理这个问题。

EN

回答 2

Stack Overflow用户

发布于 2019-06-27 15:27:38

为其他任何人寻找这个。下面是一个这样做的函数。

x、y、高度和宽度如下图所示。ang是x,y点和Y轴之间的角度。如果想要x,y点和X轴之间的值,只需在将其发送到函数之前执行以下操作:ang = 90 - ang

isDeg简单地说就是你是以弧度还是度来发送ang。

代码语言:javascript
代码运行次数:0
运行
复制
function getRectFourPoints(x,y, width, height, ang, isDeg = false) {
  	
	if(isDeg) ang = ang * (Math.PI / 180)

	const points = {first: {x,y}}
	const sinAng = Math.sin(ang)	
	const cosAng = Math.cos(ang)
	
	let upDiff = sinAng * width
	let sideDiff = cosAng * width
	const sec = {x: x + sideDiff, y: y + upDiff}
	points.sec = sec
	
	upDiff = cosAng * height
	sideDiff = sinAng * height
	points.third = {x: x + sideDiff, y: y - upDiff}
	
	const fourth = {x: sec.x + sideDiff, y: sec.y - upDiff}
	points.fourth = fourth
	return points
}

票数 4
EN

Stack Overflow用户

发布于 2016-07-11 07:32:35

旋转矩阵可以帮助基于其先前的位置计算其当前位置。如果顺时针旋转,则2D旋转矩阵如下所示:

这使得

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38297082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档