簡體   English   中英

使用 2 個不同的測量單位在 2d 網格中旋轉一個點

[英]rotate a point in a 2d grid with 2 different measure units

我處於一種情況,我需要在使用任意非相關長度測量的網格系統中旋轉一組點(六邊形)。 與軸系統相關的可用數據只是百分比,因此 X/Y = 1/2。 我沒有調整大小或更改軸單位的選項。 當我應用那個旋轉方程時:ox, oy = origin px, py = point

qx = ox + math.cos(angle) * (px - ox) - math.sin(angle) * (py - oy)
qy = oy + math.sin(angle) * (px - ox) + math.cos(angle) * (py - oy)
return qx, qy

旋轉的六邊形沿着旋轉角度毫無疑問地扭曲了。 我的問題是我應該添加到旋轉方程中以消除失真的“校正因子”是什么。

[從 0 旋轉到 90 產生軸拉伸][1]

https://i.imgur.com/yoDTLzZ.gif

這里的公式一切都很好。 由於某種原因,它被拉伸(被 X 軸擠壓或被 Y 軸延伸)。 我建議在您的程序中找到根本原因(繪圖上下文等)。 否則,您可以將代碼更正為:

qx = ox + math.cos(angle) * (px - ox) - math.sin(angle) * (py - oy)
qy = oy + (math.sin(angle) * (px - ox) + math.cos(angle) * (py - oy))/2.0;
return qx, qy

暫無
暫無

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

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