Вопреки общему рефрену, существуют разные способы определения (и расчета) центра облака точек. Первое и наиболее распространенное решение уже было предложено вами, и я не буду утверждать, что с этим что-то не так:
centroid = average(x), average(y), average(z)
«Проблема» в том, что она «искажает» вашу центральную точку в зависимости от распределения ваших точек. Например, если вы предполагаете, что все ваши точки находятся в кубической рамке или какой-либо другой геометрической фигуре, но большинство из них расположены в верхней половине, ваша центральная точка также сместится в этом направлении.
В качестве альтернативы вы можете использовать математическую середину (среднее значение экстремумов) в каждом измерении, чтобы избежать этого:
middle = middle(x), middle(y), middle(z)
Вы можете использовать это, когда вас мало заботит количество точек, а больше - глобальная ограничительная рамка, потому что это все - центр ограничительной рамки вокруг ваших точек.
Наконец, вы также можете использовать median
(элемент посередине) в каждом измерении:
median = median(x), median(y), median(z)
Теперь это как бы противоположно middle
и фактически поможет вам игнорировать выбросы в облаке точек и найти центральную точку на основе распределения ваших точек.
Более надежным способом найти «хорошую» центральную точку может быть игнорирование верхнего и нижнего 10% в каждом измерении, а затем вычисление average
или median
. Как видите, вы можете определить центральную точку по-разному. Ниже я показываю вам примеры двухмерных облаков точек с учетом этих предложений.
Синяя точка - средний (средний) центроид.
Медиана показана зеленым цветом.
А середина показана красным.
На втором изображении вы увидите именно то, о чем я говорил ранее: зеленая точка находится «ближе» к самой плотной части облака точек, а красная точка находится дальше от нее, принимая во внимание самые крайние границы облако точек.