[英]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]
這里的公式一切都很好。 由於某種原因,它被拉伸(被 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.