C# 如何将位置映射到栅格并返回?
所以我有一个空间,比如int(从0到990)。我想把所有的桥都映射到30个项目的网格上。我想出的那个C# 如何将位置映射到栅格并返回?,c#,.net,geometry,C#,.net,Geometry,所以我有一个空间,比如int(从0到990)。我想把所有的桥都映射到30个项目的网格上。我想出的那个 using System; public class Program { public static int MapToGrid(int pos = 123) { var xfactor = 990 / 29; return pos / xfactor; } public static float MapToSpace(int
using System;
public class Program
{
public static int MapToGrid(int pos = 123)
{
var xfactor = 990 / 29;
return pos / xfactor;
}
public static float MapToSpace(int idx = 10)
{
var xfactor = 990 / 30;
return (float)(idx * xfactor) + xfactor * 0.5f;
}
public static void Main()
{
Console.WriteLine((990 / 30).ToString());
Console.WriteLine(MapToGrid(990).ToString());
Console.WriteLine(MapToGrid(0).ToString());
Console.WriteLine(MapToGrid(34).ToString());
Console.WriteLine(MapToSpace(1).ToString());
Console.WriteLine(MapToSpace(0).ToString());
Console.WriteLine(MapToSpace(29).ToString());
}
}
结果似乎是正确的,但我不能只是把我的头绕在
29
和30
神奇的数字上。。。有人能解释一下如何将位置映射到网格和网格吗?简单的高中代数。假设您有一个大小为W
(示例中为=990)且单元格数为N
(=30)的网格:
返回坐标MapToGrid
所属单元格的索引(范围p
) 标准化坐标由[0,N-1]
(范围p/W
)给出,因此索引是最大索引的倍([0,1]
)。因此,公式为N-1
,其中index=p*(N-1)/W
(N-1)/W=1/xfactor
返回此单元格的中点MapToSpace
是每个单元格的宽度。因此,单元格W/N=xfactor
的左边界由index
给出。在此基础上添加index*xfactor
(即宽度的一半)以获得中点0.5*xfactor