midpoint = p1 + (p2 - p1) / 2это же тоже самое, что и (p1 + p2) / 2, ну если скобки раскрыть:)
midpoint + projP3 * lineDirectionа вот этого чтото я не совесем понял.
Пытаюсь подвинуть точку(midpoint) относительно прямой, заданной двумя точками(p1/p2), на определенное расстояние
Но проекция точки p3Пародон, а причем здесь точка p3? в коде эта точка используется только для получения минимального расстояния projP3, которое в свою очередь нигде потом не используется
double projP3 = (columnFaceLine.Project(p3).XYZPoint - p3).GetLength(); //расстояние от точки до проекции точки на прямую - минимальное расстояниеможно чуть проще кстати:
А если я все-таки ошибаюсь, можно же еще прощеДык я можно сказать тож самое и написал, только подробно по шагам:)
Меня это и насторожило это поведение проекцииНе, метод правильно сработал. метод ищет минимальное расстояние от точки до кривой. А если точка находится в границах кривой, то минимальное расстояние - это перпендикуляр от точки к прямой, либо от точки к касательной кривой.
А если точка находится не в границах отрезка, то что тогда метод возвращает?Кратчайшее расстояние от точки до прямой, в этом случае будет отрезком от точки до одного из концов прямой
Кратчайшее расстояние от точки до прямой, в этом случае будет отрезком от точки до одного из концов прямойэто в случае если прямая создана при помощи CreateBound
Line columnFaceLine = Line.CreateUnbound(p1, Line.CreateBound(p1, p2).Direction);Угу, только зачем создавать лишний объект.