应用数学计算锯齿状等距正方形的面积

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了应用数学计算锯齿状等距正方形的面积相关的知识,希望对你有一定的参考价值。

我正在做一个等距游戏,我希望能够通过鼠标位置确定所选的图块。

我已经在使用常规磁贴之前完成了此操作,但是等轴测更加复杂。尽管我的代码看起来并不愉快,但我之前对此进行了许多尝试,并且取得了一定程度的成功。而且我想,任何看到该代码的人都会以为自己只是在“挥舞它”或“强行施加它”。

我以前的尝试看起来像这样。

    public static Vector2 ToIsometric( int x , int y )
    {
        float selectedTileX = ( y * 32.0f ) + ( x * 16.0f );
        float selectedTileY = ( y * 16.0f / 2 ) - ( x * 16.0f / 2 );

        return new Vector2 ( selectedTileX , selectedTileY );
    }

其中X和Y表示鼠标在屏幕上的位置。 16.0f表示每个图块的高度,32.0f表示每个图块的宽度。下图不使用这些值,但希望能帮助解释我确定鼠标悬停的锯齿状等距图块的索引的目标。

enter image description here

答案

自问这个问题以来很长时间了,但是没有得到答复,所以我将尝试提出解决方案。

[我知道您没有使用javascript,但是在这种情况下,您的问题与进行该计算所需的数学有关,并且由于SO提供了良好的JavaScript摘录,因此该语言非常适合查看计算结果结果。

检查此代码段,它是一个基本的图块网格,并且根据鼠标坐标选择了图块(我将使用此代码段作为基础来向您展示最终的计算):

const tileSize = 40;
const divs = document.querySelectorAll('.container div');

const tiles = Array.prototype.reduce.call(divs, (a, t) => {
  a[t.dataset.row] = a[t.dataset.row] || [];
  a[t.dataset.row][t.dataset.col] = t;
  return a;
}, []);

const unselect = () => divs.forEach(d => d.style.background = '');
const select = (row, col) => tiles[row] && tiles[row][col] && (tiles[row][col].style.background = 'red');

document.addEventListener('mousemove', (e) => {  
  const row = Math.floor(e.pageY / tileSize);
  const col = Math.floor(e.pageX / tileSize);
  unselect();
  select(row, col);  
});
body {
  margin: 0;
  padding: 0;
}

.container {
  border: 1px solid black;
  display: flex;
  flex-wrap: wrap;
  height: 120px;
  width: 120px;
}

.container * {
  background: white;
  border: 1px solid black;
  box-sizing: border-box;
  height: 40px;
  width: 40px;
}
<div class="container">
  <div data-row="0" data-col="0"></div>
  <div data-row="0" data-col="1"></div>
  <div data-row="0" data-col="2"></div>
  <div data-row="1" data-col="0"></div>
  <div data-row="1" data-col="1"></div>
  <div data-row="1" data-col="2"></div>
  <div data-row="2" data-col="0"></div>
  <div data-row="2" data-col="1"></div>
  <div data-row="2" data-col="2"></div>
</div>

以上是关于应用数学计算锯齿状等距正方形的面积的主要内容,如果未能解决你的问题,请参考以下文章

LQ0160 三角形面积计算几何

用C++编程求解圆,长方形,正方形等面积

C++编程练习:抽象类——编写一个程序,计算三角形正方形的面积,抽象出一个基类base。

python计算长方形面积 青少年编程电子学会python编程等级考试一级真题解析2021-3

常见图形,圆形长方形和正方形面积的计算

sparkspark应用(分布式估算圆周率+基于Spark MLlib的贷款风险预测)