Тема: Точки и прямая
Доброго времени суток. У меня такая задача:
существует прямая, заданная 2 точками.
Мне нужно найти точку лежащую на продолжении этой прямой, на определенном расстоянии от 1 или 2 точки!
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → VBA → Точки и прямая
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Доброго времени суток. У меня такая задача:
существует прямая, заданная 2 точками.
Мне нужно найти точку лежащую на продолжении этой прямой, на определенном расстоянии от 1 или 2 точки!
LeonidSN (2008-04-29 20:37:10)
Спасибо, ваш ответ мня просто вдохновил :)
Function getInLinePoint(StartBol As Boolean, subLenDbl As Double, StrtPointVar, EndPointVar) As Variant ' находит точку на отрезке проходяещем через strtPointVar и endPointVar ' и находящуюсья внутри отрезка на расстоянии subLenDbl ' с начала StartBol = true ' или с конца StartBol = false Dim TmpDblArr(2) As Double Dim AlpaDbl As Double Dim DistDbl As Double DistDbl = GetDistance(StrtPointVar, EndPointVar) AlpaDbl = (DistDbl - subLenDbl) / subLenDbl If Not StartBol Then AlpaDbl = 1 / AlpaDbl TmpDblArr(0) = (EndPointVar(0) + StrtPointVar(0) * AlpaDbl) / (AlpaDbl + 1) TmpDblArr(1) = (EndPointVar(1) + StrtPointVar(1) * AlpaDbl) / (AlpaDbl + 1) TmpDblArr(2) = (EndPointVar(2) + StrtPointVar(2) * AlpaDbl) / (AlpaDbl + 1) getInLinePoint = TmpDblArr End Function Function getOutLinePoint(StartBol As Boolean, addLenDbl As Double, StrtPointVar, EndPointVar) As Variant ' находит точку лежащую на продолжении отрезка проходяещего через strtPointVar и endPointVar ' на расстоянии subLenDbl ' с начала StartBol = true ' или с конца StartBol = false Dim SubPointVar As Variant Dim DeltaVar As Variant Dim resPointDblArr(2) As Double SubPointVar = getInLinePoint(Not StartBol, addLenDbl, StrtPointVar, EndPointVar) If Not StartBol Then DeltaVar = getDxDyDz(SubPointVar, StrtPointVar) resPointDblArr(0) = StrtPointVar(0) + DeltaVar(0) resPointDblArr(1) = StrtPointVar(1) + DeltaVar(1) resPointDblArr(2) = StrtPointVar(2) + DeltaVar(2) Else DeltaVar = getDxDyDz(SubPointVar, EndPointVar) resPointDblArr(0) = EndPointVar(0) + DeltaVar(0) resPointDblArr(1) = EndPointVar(1) + DeltaVar(1) resPointDblArr(2) = EndPointVar(2) + DeltaVar(2) End If getOutLinePoint = resPointDblArr End Function
Может это и не самое элегантное решение, но оно рабтает!
B tot subLenDbl должна быть меньше длины отрезка!
> Михаил
Я рад, что все получилось.
Но мою реплику вряд ли можно считать ответом, поскольку в первом посте (2008-04-29 13:46:50)
не видно вопроса.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → VBA → Точки и прямая
Форум работает на PunBB, при поддержке Informer Technologies, Inc