0
我試圖通過鼠標位置在等距世界中獲得正確的瓷磚。鼠標座標到等距座標
我已經閱讀了一些關於此的帖子,但它似乎並不適用於我。 基本的想法是重新計算正常的鼠標座標到等角磁貼座標。
正如您所看到的,鼠標光標位於平鋪5/4並且重新計算錯誤(所選平鋪爲4/5)。這是我的代碼:
var params.tx = 100, params.ty=54,
PI = 3.14152,
x1 = x_mouse - params.tx*5,
y1 = y_mouse * -2,
xr = Math.cos(PI/4)*x1 - Math.sin(PI/4)*y1,
yr = Math.sin(PI/4)*x1 + Math.cos(PI/4)*y1,
diag = (params.ty) * Math.sqrt(2),
x2 = parseInt(xr/diag)+1,
y2 = parseInt(yr * -1/diag)+1;
瓷磚的原始高度爲54px,但你可以看到,只有邊界瓷磚展示自己的最大高度。其餘的瓷磚被削減4個像素。
請幫助我 - 可能是我的整個公式是錯誤的。
我是否正確? ox/oy是我的鼠標座標,canvas是整個等軸測圖的包裝,screenOffset是畫布的偏移量,cols/rows是x和y方向上的圖塊數量,unitWidth/unitHeight是圖塊寬度/高度, w,h是畫布的寬度/高度? –
Js沒有Math.constrain函數,因此它不起作用... –
'Math.constrain'是我的代碼中的一個自定義原型。邏輯足夠簡單:'Math.max(0,Math.min(this.cols - (w || 0),isoX))'。其他一切看起來正確 –