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

Joh*_*ton 4 javascript math geometry trigonometry

我有一个旋转的矩形(在本例中为 45 度),如下所示:

我的矩形

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

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

jon*_*nyB 6

对于其他正在寻找这个的人。这是一个执行此操作的函数。

x,y,高度和宽度如下图所示。ang 是 x,y 点与 Y 轴之间的角度。如果您想要 x,y 点和 X 轴之间的一个,只需这样做: ang = 90 - ang 在将其发送到函数之前

isDeg 只是您是否以弧度或度数发送 ang。

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
}
Run Code Online (Sandbox Code Playgroud)
示例三角形