围绕 lat/lng 个点生成 "amoeba-like" 个聚类
Generating "amoeba-like" clusters around lat/lng points
我有一个相当独特的问题要解决,数学让我很困惑。我正在做一个地图项目,其中一个需求是在给定的 latitude/longitude 中心周围生成随机的 "amoeba-like" 点簇。
"amoeba-like",我的意思是集群不应该太圆或太均匀,但理想情况下,应该 "arms" 从中心向外延伸。同时,手臂应该是随机的,而不是特别像螺旋状。
我尝试了多种方法,但到目前为止,我生成的 none 簇的形状完全符合我的要求。我已经尝试过类似于 here 所描述的方法,并且我已经尝试过 sklearn 中的 make_blobs。但我无法弄清楚如何扩展其中任何一个以获得我正在寻找的 "arms",而且我不相信这些方法中的任何一个真的有意义。
任何人都可以提供任何建议,我们将不胜感激!
作为起点,我模拟了一些基于随机游走的东西,当到达离中心一定距离时停止。不过你是对的,手臂效应可以隐藏起来。我将其设置为创建 5 个手臂,但我只真正看到 2-3 个。如果你真的不在乎,那可能没关系
import random
import math
STEP_SIZE = 0.5
MAX_WALK_DIST = 5
for i in range(5):
x = y = 0
while x**2+y**2 < MAX_WALK_DIST**2:
dist = random.random() * STEP_SIZE
angle = random.random() * math.pi * 2
x += dist * math.cos(angle)
y += dist * math.sin(angle)
print(x, y)
我有一个相当独特的问题要解决,数学让我很困惑。我正在做一个地图项目,其中一个需求是在给定的 latitude/longitude 中心周围生成随机的 "amoeba-like" 点簇。
"amoeba-like",我的意思是集群不应该太圆或太均匀,但理想情况下,应该 "arms" 从中心向外延伸。同时,手臂应该是随机的,而不是特别像螺旋状。
我尝试了多种方法,但到目前为止,我生成的 none 簇的形状完全符合我的要求。我已经尝试过类似于 here 所描述的方法,并且我已经尝试过 sklearn 中的 make_blobs。但我无法弄清楚如何扩展其中任何一个以获得我正在寻找的 "arms",而且我不相信这些方法中的任何一个真的有意义。
任何人都可以提供任何建议,我们将不胜感激!
作为起点,我模拟了一些基于随机游走的东西,当到达离中心一定距离时停止。不过你是对的,手臂效应可以隐藏起来。我将其设置为创建 5 个手臂,但我只真正看到 2-3 个。如果你真的不在乎,那可能没关系
import random
import math
STEP_SIZE = 0.5
MAX_WALK_DIST = 5
for i in range(5):
x = y = 0
while x**2+y**2 < MAX_WALK_DIST**2:
dist = random.random() * STEP_SIZE
angle = random.random() * math.pi * 2
x += dist * math.cos(angle)
y += dist * math.sin(angle)
print(x, y)