Алгоритмически вписать треугольник в коробку - PullRequest
0 голосов
/ 22 января 2019

triangle in box

Допустим, у нас есть треугольник с известными длинами ребер a, b и c, внутри квадратного прямоугольника известного размера l. Треугольник вписывается «точно» в коробку, каждый угол соприкасается со стороной коробки. Два угла треугольника могут касаться одной и той же стороны коробки. Если мы знаем «общую ориентацию» треугольника в прямоугольнике (то есть, какое из четырех возможных решений у нас есть), как мы можем алгоритмически определить точное положение и ориентацию треугольника?

Мы имеем в качестве алгоритмических входных данных l, длину размера коробки, [a b c] - длины сторон треугольника и theta`, оценку ориентации. В качестве выходных данных мы хотим, чтобы x и y представляли положение внутри блока, а тета - ориентацию подшипника внутри блока.

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

Продолжение: как мы могли бы сделать это, если подгонка не была точной?

Я понимаю, как получить позицию, если дана ориентация, и ориентацию, учитывая позицию, но как определить оба, уклоняется от меня.

Ответы [ 2 ]

0 голосов
/ 24 января 2019

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

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

Обратите внимание, что в случаях, близких к предельным (горизонтальная сторона), зная приблизительную ориентацию будет недостаточно.

0 голосов
/ 22 января 2019

Если треугольник «точно соответствует», то есть только два вида вещей, которые могут ограничивать ориентацию треугольника:

  1. Одна (достаточно длинная) сторона треугольника зажата напротив противоположных сторон коробки, как на вашей диаграмме. В этом случае вы можете использовать acos (), чтобы вычислить его 4 возможные ориентации; или

  2. Одна сторона треугольника лежит вдоль стороны прямоугольника, в этом случае его ориентация является вертикальной или горизонтальной.

Существует небольшое количество возможностей на треугольник - не более 48. Таким образом, вы можете просто протестировать их все или выбрать одну из них, учитывая «общую ориентацию»

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