簡體   English   中英

從x,y,寬度,高度和旋轉角度獲取旋轉的矩形點

[英]Get rotated rectangle points from x, y, width, height and rotation

我有一個旋轉的矩形(在這種情況下為45度),看起來像這樣:

我的矩形

而且我知道X從矩形的左上角開始(如果未旋轉,則在圖片頂部為該點)。 Y也在左上角。 我有寬度,高度和邊界框。 我想找出這個矩形的其他點。 左上角(在這種情況下,通常是X位置),右上角,右下角和左下角。 我試圖使用轉換矩陣,但似乎無法將其包圍。

如何找到該矩形的其他點? 從技術上講,我正在使用JavaScript,但是任何語言都應該能夠解決此問題。

旋轉矩陣可以幫助根據其先前位置計算其當前位置。 如果順時針旋轉,則2D旋轉矩陣如下:

在此處輸入圖片說明

這使得

在此處輸入圖片說明 在此處輸入圖片說明

對於尋找這個的其他人。 這是這樣做的功能。

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 } 
示例三角形

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM