Тема: Точки и прямая

Доброго времени суток. У меня такая задача:
существует прямая, заданная 2 точками.
Мне нужно найти точку лежащую на продолжении этой прямой, на определенном расстоянии от 1 или 2 точки!

Re: Точки и прямая

> Михаил
Ну так ищи...

Re: Точки и прямая

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 должна быть меньше длины отрезка!

Re: Точки и прямая

> Михаил
Я рад, что все получилось.
Но мою реплику вряд ли можно считать ответом, поскольку в первом посте  (2008-04-29 13:46:50)
не видно вопроса.