Joh*_*ton 4 javascript math geometry trigonometry
我有一个旋转的矩形(在本例中为 45 度),如下所示:
我知道 X 来自矩形的左上角(如果它未旋转,在本例中是图片顶部的点)。Y 也是从左上角开始。我有宽度、高度和边界框。我想知道这个矩形的其他点是什么。左上角(在本例中技术上是 X 位置)、右上角、右下角和左下角。我试图使用变换矩阵,但我似乎无法理解它。
如何找到这个矩形的其他点?从技术上讲,我正在使用 JavaScript,但任何语言都应该能够处理这个问题。
对于其他正在寻找这个的人。这是一个执行此操作的函数。
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)