Abstand zwischen zwei Strecken < Skalarprodukte < Lineare Algebra < Hochschule < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 16:17 Di 04.01.2005 | Autor: | magni |
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
Hallo,
wie bestimme ich den minimalen Abstand zwischen zwei Strecken, _nicht_ Geraden?
Z.B. :
- Strecke A, AnfangsPunkt: [mm] \vektor{-100 \\ 10\\0} [/mm] EndPunkt: [mm] \vektor{100 \\ 10\\0}
[/mm]
- Strecke B, AnfangsPunkt: [mm] \vektor{150 \\ 40 \\ 1000} [/mm] EndPunkt: [mm] \vektor{150 \\ 40 \\ -1000}
[/mm]
Was ist nun der minimale Abstand zwischen diesen beiden Strecken?
Würde mich für jeden Tip freuen!
Gruß
Magni
PS: Wie man den Abstand zwischen zwei Geraden erhält ist z.B. auf der Seite http://sites.inka.de/picasso/Cappel/abstand.html#ghMeth zu lesen.
|
|
|
|
Hallo,
fasse die Punktepaare als Teil einer Geraden auf:
[mm]p = \;p_A \; + \;t\;\left( {p_B - \;p_A } \right)[/mm]
bzw,
[mm]q = \;q_A \; + \;t\;\left( {q_B - \;q_A } \right)[/mm]
mit [mm]0 \le t \le 1[/mm].
Konkret also:
[mm]p_A = \;\left( {\begin{array}{*{20}c} { - 100} \\ {10} \\
0 \\ \end{array}} \right),\;p_B = \;\left( {\begin{array}{*{20}c}
{100} \\ {10} \\ 0 \\ \end{array}} \right)[/mm]
bzw.
[mm]q_A = \;\left( {\begin{array}{*{20}c} {150} \\ {40} \\
{1000} \\ \end{array}} \right),\;q_B = \;\left( {\begin{array}{*{20}c}
{150} \\ {40} \\ { - 1000} \\ \end{array}} \right)[/mm]
Bilde dann die Abstandsgerade d(t):
[mm]d(t) = \;(q_A - p_A )\; + t\;\left( {\left( {q_B - q_A } \right) - \left( {p_B - p_A } \right)} \right)[/mm]
Und minimiere dann das Abstandsquadrat d²(t).
Hieraus bekommst Du dann ein t für das
das Abstandsquadrat ein Minimum ist.
Gruss
Michael
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 19:47 Mi 05.01.2005 | Autor: | magni |
Hallo Michael,
danke für deine Antwort, ist eine super Idee. Habe aber noch ein kleines Problem, und zwar ein Minimierungsproblem. Wollte das ganze programmieren und es soll in Echtzeit errechnet werden. Leider haben aber Minimierungsprobleme den Nachteil, dass ihre Berechnung relativ lange dauert oder kennst du zufällig einen passenden/zügigen Algorithmus?
Danke für die Mühe.
Gruß
Magni
|
|
|
|
|
Hallo Magni,
wenn Du das Problem des minimalen Abstandes zweier Strecken gelöst hast,
dann steht da eine explizite Formel für t.
Diese Formel kannst Du dann für das Programm verwenden.
Wobei natürlich noch entschieden werden muss, ob der Parameter
t im gültigen Bereich liegt.
Gruss
MathePower
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 20:57 Mi 05.01.2005 | Autor: | magni |
Hallo Michael,
müsste aber dei Formel nicht auf beiden Strecken den Punkt verschieben?
Also in der art:
d = (pA + s(pB - pA)) - ((qA + t(qB - qA))
Und dann wüsste ich nicht wirklich wie ein Minimum für d in Abhängigkeit von s und t finden könnte.
Gruß
Magni
|
|
|
|
|
Hallo Magni,
auch hierfür, läßt sich ein Minimum finden, indem Du das Abstandsquadrat betrachtest.
[mm]< d,d > \; = \; < p_A + s\left( {p_B - p_A } \right)\; - q_A - t\left( {q_B - q_A } \right),\;p_A + s\left( {p_B - p_A } \right)\; - q_A - t\left( {q_B - q_A } \right) > [/mm]
Dies ist eine Funktion von zwei Variablen:
[mm]f(s,t)\; = \;a_{00} \; + \;a_{01} \;s\; + \;a_{10} \;t\; + \;a_{11} \;st\; + \;a_{02} \;s^2 \; + \;a_{20} \;t^{2} [/mm]
Die Bedingungen für ein Minimum sind:
[mm]\begin{array}{l} f_s \; = \;0 \\ f_t \; = \;0 \\ \end{array}[/mm]
Dies führt auf ein lineares Gleichungssystem, dass gelöst werden muss.
[mm]\begin{array}{l} a_{02} \;s\; + \;a_{11} \;t\; = \; - a_{01} \\
a_{11} \;s\; + \;a_{20} \;t\; = \; - a_{10} \\ \end{array}[/mm]
Gruss
MathePower
|
|
|
|