Математика, стоящая за этим, довольно проста. Круг может быть представлен синусоидальной функцией по оси x и косинусоидальной функцией по оси y. Вот некоторый псевдокод:
int num = OverlappingPoints.Length;
for(int i = 0; i < num; ++i)
{
int radius = 50;
// using 2*pi because most math functions use radians... change 2*pi to 360 if your math library uses 360 degrees instead of 2*pi radians to represent a circle.
Map.Plot(OverlappingPoints[i].Latitude + radius*sin(2*pi*i/num),
OverlappingPoints[i].Latitude + radius*cos(2*pi*i/num));
}
Этот псевдокод, если он правильно реализован, будет рисовать точки по кругу вокруг исходной точки. Измените множитель радиуса на функции синуса и косинуса, если вы хотите увеличить радиус круга. Если вы хотите, чтобы точки располагались по спирали, вместо того чтобы делать круг , выберите число точек на оборот окружности и замените num
на это число в функциях sin / cos. Кроме того, увеличивайте радиус после каждой итерации цикла, возможно, используя число и умножая его на индекс цикла. (то есть вы можете изменить radius
на 50*i
).
Надеюсь, это поможет.