Как я могу получить «фронт» параллелограмма, учитывая 4 точки и угол - PullRequest
1 голос
/ 03 августа 2011

Это должно быть простым делом, но по какой-то причине я не могу понять это.

У меня есть параллелограмм, определенный как четыре точки (в порядке против часовой стрелки, но кроме этого я незнаю какой угол какой).У меня также есть центральная точка параллелограмма и его ориентация (угол его, если «лицом»).То, что я хочу получить, это средняя точка линии на «фронте» параллелограмма.
Чтобы сделать это, я полагаю, мне нужно будет проследить луч от средней точки, под углом, к которому обращен параллелограмм, и проверитькакая из четырех линий она пересекает и где.Вот где я застрял.Я не могу найти формулу для достижения этой цели.Любые идеи?

Я кодирую в C #, но это математическая проблема больше всего, поэтому я приму формулу или psuedocode.

РЕДАКТИРОВАТЬ: Кажется, было немногоесли путаница в моей проблеме;извиняюсь за это.Я должен был указать, что я работаю с двумя измерениями, и «фронт» определяется как линия на параллелограмме, которая пересекает луч, сгенерированный путем наведения из средней точки, под предоставленным углом (к началу координат).Как указано в комментариях, вот диаграмма:

The Parallelogram

Оранжевые точки представляют углы параллелограмма, синяя точка - центроид, а желтая кривая - уголМне дано.Фиолетовая линия просто параллельна оси X, чтобы помочь представить угол.Серая линия, идущая от синей точки, - это (подраздел) луча, о котором я упоминал ранее, и, таким образом, зеленая точка - это точка, которую я хочу вычислить.Также обратите внимание, что эта диаграмма - просто эскиз, помогающий визуализировать проблему, а не сгенерированный моей программой.
Надеюсь, это поможет устранить любую путаницу.

Ответы [ 2 ]

0 голосов
/ 04 августа 2011

Вот отличная страница по алгоритмам пересечения линий .

0 голосов
/ 04 августа 2011

Немного грубой силы и не элегантно, но попробуйте это, чтобы получить координаты вашей зеленой точки (я надеюсь, что она в любом случае зеленая; я немного дальтоник):

  1. У вас естьчетыре отрезка.Вычислите уравнение линии, содержащей каждый отрезок (y = mx + b и все такое).Всего будет четыре уравнения.
  2. Рассчитайте угол от вашей центральной точки до каждой из четырех вершин параллелограмма.
  3. Определите, с какой стороны пересекается ваш луч, видя, между какими двумя углами находится ваш желтый угол.Он будет либо пересекать одну из сторон, либо одну из вершин.Если вы нажмете одну из вершин, все готово.
  4. В противном случае решите для пересечения вашего луча (который имеет свое собственное уравнение) соответствующее уравнение для соответствующей стороны.
...