более элегантный способ вычислить центр многоугольника, если у меня уже есть центр аналогичного многоугольника - PullRequest
0 голосов
/ 21 апреля 2020

Итак, у меня есть массив полигонов, и мне нужно получить центр каждого из них, они все одинаковые многоугольники, расположенные в разных местах. Полигоны выглядят следующим образом

[[1100,173.2050807567],[1100,86.60254037829999],[1137.5,108.25317547289998],[1175,129.9038105675]]

Так что в настоящее время я делаю следующее

polygons.forEach((polygon) => {
     const polygonX = getX(polygon);
     const polygonY = getY(polygon);
     const xmin = Math.min( ...polygonX );
     const xmax = Math.max( ...polygonX );
     const ymin = Math.min( ...polygonY );
     const ymax = Math.max( ...polygonY );
     const dx = (xmin+xmax) / 2;
     const dy = (ymin+ymax) / 2;

, поэтому dx и dy дают мне центр. Однако я должен думать, что возможна матрица преобразования, если у меня есть центр первой, потому что все они имеют одинаковую форму, есть ли функция матрицы преобразования, которую я могу использовать, чтобы получить центр многоугольника [1], если я уже вычислил центр многоугольника [0]

, чтобы я мог сделать что-то вроде

const firstPolygon = polygons[0];
const polygonX = getX(firstPolygon);
const polygonY = getY(firstPolygon);
const xmin = Math.min( ...polygonX );
const xmax = Math.max( ...polygonX );
const ymin = Math.min( ...polygonY );
const ymax = Math.max( ...polygonY );
const dx = (xmin+xmax) / 2;
const dy = (ymin+ymax) / 2;

polygons.forEach((polygon) => {
  const center = transformMatrixFunction([dx, dy], polygon);

Очевидно, что функция может быть структурирована, однако это желательно, приведенный выше просто глупый пример, в любом случае я Предположим, что первый параметр не будет [dx, dy], но где-то потребуются некоторые нули.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...