Расположение четырех точек в виде квадрата - PullRequest
0 голосов
/ 08 марта 2012

Это скорее вопрос геометрии, но
У меня есть массив из 4 точек (из пользовательского ввода), который может быть в любом порядке.
Я пытаюсь разработать процедуру, которая быверните, какова будет каждая точка, то есть

top left,
top right,
bottom left,
bottom Right

Я сейчас работаю в PHP, но любая помощь на любом языке в порядке.

{'Я добавлю то, что у меня естьв скором времени займёмся таким языком PHP}

Может быть, этот вопрос лучше задать на другом стеке, возможно, по математике?

Ответы [ 3 ]

0 голосов
/ 08 марта 2012

Вы можете отсортировать точки по их x координатам по возрастанию, а при наличии связи - по y координате по возрастанию.

Первые две точки - это «левая» сторона: одна с большим y - «верхняя», а другая - «нижняя».

Последние два пункта - "правая" сторона, та же сделка.

Это не будет работать для алмаза, хотя! (Но что в любом случае "слева вверху" на бриллианте?)

Как правило, для набора выпуклых можно вычислить центр тяжести (значение x является средним значением всех значений x, значение y является средним значением всех значений y).

Затем вы можете вычислить аргумент (то есть угол) линии между центроидом и точкой, равный arctan2 из (y_pt-y_centroid,x_pt-x_centroid).

Если затем вы отсортируете точки по их аргументам, они будут в порядке против часовой стрелки, где -pi - это точка западного направления компаса, 0 - это восток, и снова оборачивается до + pi - это точка западного направления. *

0 голосов
/ 08 марта 2012

Две точки с наименьшими значениями x составляют левую сторону, две другие - правую.

То же самое касается у и сверху / снизу.

0 голосов
/ 08 марта 2012

Вы можете отсортировать точки сначала по вертикали и назвать верхние 2 точки верхними точками и 2 нижними нижними точками.Затем отсортируйте точки по горизонтали и назовите две самые правые точки справа, а две другие слева.Теперь у вас есть один из каждого.

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