У меня есть три параллельные линии (все 3-и линии). скажем AB, CD, EF. Центральная линия, т. Е. CD, дается пересечением двух плоскостей, на которых лежат AB, DE. Кратчайшее расстояние между AB и CD (скажем, d1) не совсем равно CD и EF (скажем, d2).
линия, которая находится на более коротком расстоянии от центральной линии, должна быть заменена четвертой линией, делающей расстояние на равном расстоянии с другой линией.
Я знаю векторы каждой линии, а также знаю, что 3D-точки лежат на каждой линии. (для AB и EF я знаю другую точку, лежащую на линиях; это означает, что AB и EF могут быть приняты за отрезки)
Я пытался это сделать. Но не могу понять точно и получил некоторые неправильные ответы. иногда четвертая строка делает разделение более коротким (может быть, вектор направляет другой путь, или я следую некоторым неправильным путем). Я должен сказать, что векторы AB, CD & Линии EF не направлены в одном направлении.
Итак, я ищу конкретный способ сделать это. У меня есть vector3 и класс строки, чтобы сделать это в C ++.
пожалуйста, кто-нибудь покажет мне, как это сделать, сдвинув одну линию (т.е. рисуя 4-ю линию). Спасибо
я ответил Ваш вопрос на математике обмен стека, так как возможности набора формул там были очень полезны для этого ответа. Основная идея состоит в том, чтобы установить два вектора, которые указывают от центральной линии на каждую из других линий, и которые перпендикулярны направлениям ваших линий. Затем вы можете сравнить длины этих векторов, масштабировать более короткий с длиной более длинного и использовать этот масштабированный вектор для получения новой линии.
Других решений пока нет …