Получить конечные точки отрезка, определенного пересечением двух прямоугольников - PullRequest
0 голосов
/ 09 августа 2011

Я попробовал алгоритмы в Линия пересечения между двумя плоскостями

но все не дают правильных результатов

У меня есть два прямоугольника в 3D, каждый из которых определен тремя точками, я хочу получить две точки на линии пересечения, чтобы две точки в конце пересечения Я делаю следующие шаги:

  • преобразовать каждый прямоугольник в две плоскости, используя три точки
  • получить направление линии путем деления перекрестного произведения нормали каждой плоскости

Я хочу получить фактические конечные точки линии, которые лежат на границе плоскости

С наилучшими пожеланиями

1 Ответ

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

Ссылка, которую вы предоставили, скорее всего, имеет правильное решение :) Правильно ли вы преобразовали свои три точки в форме Ax + By + Cz + D = 0?Проверьте, все ли точки соответствуют этой формуле.Если у вас есть правильные {A, B, C, D}, тогда легко вычислить остаток, как описано в ссылке.


Здесь - это ссылка, которая объясняет, какчтобы получить эту формулу, используя 3 балла.


Хорошо, вот простое резюме:

  • Учитывая три точки в пространстве (x1, y1, z1), (x2, y2, z2), (x3, y3, z3), рассчитайте это:

    A = y1 (z2 - z3) + y2 (z3 - z1) + y3 (z1 - z2)

    B = z1 (x2 - x3) + z2 (x3 - x1) + z3 (x1 - x2)

    C = x1 (y2 - y3) + x2 (y3 - y1) + x3 (y1 -y2)

    D = - (x1 (y2 z3 - y3 z2) + x2 (y3 z1 - y1 z3) + x3 (y1 z2 - y2 z1))

    для обеих плоскостей.Это означает, что у вас есть A1, B1, C1, D1 и A2, B2, C2, D2.

  • Используя A, B, C, D, рассчитайте это:

    x1= 0

    z1 = (B2 / B1) * D1 - D2) / (C2 - C1 * B2 / B1)

    y1 = (-C1 * z1 - D1) / B1

  • Тогда это:

    x2 = какое-то значение ..

    z2 = (B2 / B1) * (A1 * x2 + D1) - A2 * x2- D2) / (C2 - C1 * B2 / B1)

    y2 = (-C1 * z2 -A1 * x2 - D1) / B1

В основном просто объединитьоба пути описаны в этих двух ссылках ..

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