c# - 找到人口最多地区的中点
问题描述
我希望你有一个美好的一天,所以这是我的问题:我试图在地图上找到人口最多的位置 (X/Y) 的中间点,但我被卡住了,我找不到一个好的和有效的方法来做到这一点。
为了找到这个位置,我可以访问实体集合(并且这些实体具有 Position 属性(它是 Vector2D)和地图大小
public readonly struct Vector2D
{
private static readonly double Sqrt = Math.Sqrt(2);
private static readonly Random Random = new Random();
public static Vector2D Zero { get; } = new Vector2D();
public int X { get; }
public int Y { get; }
public Vector2D(int x, int y)
{
X = x;
Y = y;
}
public Vector2D GetDistanceTo(Vector2D vector2D) => new Vector2D(Math.Abs(vector2D.X - X), Math.Abs(vector2D.Y - Y));
public int GetDistance(Vector2D destination)
{
int x = Math.Abs(X - destination.X);
int y = Math.Abs(Y - destination.Y);
int min = Math.Min(x, y);
int max = Math.Max(x, y);
return (int)(min * Sqrt + max - min);
}
public bool IsInRange(Vector2D position, int range)
{
int dx = Math.Abs(X - position.X);
int dy = Math.Abs(Y - position.Y);
return dx <= range && dy <= range && dx + dy <= range + range / 2;
}
public override string ToString() => $"{X}/{Y}";
}
这是我唯一尝试过的
public Vector2D FindMostPopulatedPosition()
{
IEnumerable<Vector2D> positions = Entities.Select(x => x.Position);
return new Vector2D((int)positions.Average(x => x.X), (int)positions.Average(x => x.Y));
}
这是一些示例图像
红点:所有实体
蓝点:我正在寻找的位置
感谢阅读(以及您的帮助)
解决方案
推荐阅读
- django - __str__ 返回非字符串(类型 takimlar)
- webgl - 为什么WebGL扩展的webidl规范有[NoInterfaceObject]扩展属性
- snmp - 以 Oid 列表作为输入的 Getbulk 操作
- c++ - GDB 漂亮的打印机子类信息
- javascript - 如何使用 javascript 访问 HTML 元素的数据属性
- .htaccess - 有人可以用简单的英语解释这个重写吗
- django - Django 模型组织:不同杂货店的食品位置
- r - 在 R 中为 networkD3 包创建列表时遇到问题
- batch-file - CMD 上的批处理脚本以获取变量上的 COM 端口
- javascript - 如何使用AngularJS过滤器获取数组索引