Springen naar inhoud

afstand punt tot rechte in 3D


  • Log in om te kunnen reageren

#1

Femke255

    Femke255


  • 0 - 25 berichten
  • 3 berichten
  • Gebruiker

Geplaatst op 05 mei 2012 - 13:06

Beste wetenschappers

Ik ben bezig met graph matching. Ik werk hiervoor in C++ met VTK. De grafen bevinden zich in een 3D ruimte en de link tussen twee knooppunten, zijn random krommen en liggen ook niet in een vlak.
Nu wil ik de verhouding berekenen tussen de kortste (Euclidische) afstand tussen twee knooppunten en de langste afstand van de link tot het lijnstuk tussen deze twee knooppunten.
Ik ken de coördinaten van de knooppunten en ik kan alle coördinaten van de link opvragen.
Ik dacht om eerst de richtingsgetallen van de rechte te bepalen door (x2-x1, y2-y1, z2-z1) of (a, b, c). Dan kan ik alle punten van de rechte definiëren met het stelsel:

x=x1+ka

y=y1+kb

z=z1+kc

Nu wil ik alle coördinaten van de link doorlopen en de kortste afstand van dit punt tot de rechte berekenen, maar hier weet ik niet hoe ik verder moet.

Alvast bedankt.

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

Xenion

    Xenion


  • >1k berichten
  • 2606 berichten
  • Moderator

Geplaatst op 05 mei 2012 - 14:17

Stel je beschouwt node A en B.
Van A heb je een pad dat naar B loopt en je hebt het lijnstuk AB.

Neem een punt X van het pad en projecteer de vector AX op AB.
Als je dan het verschil berekent tussen AX en die projectie dan krijg je een vector die uit X loodrecht op AB komt, de norm daarvan is de afstand die je zoekt. Dat kan je dan voor alle punten doen om de maximale afstand te vinden.

Kan je daarmee iets?

#3

Femke255

    Femke255


  • 0 - 25 berichten
  • 3 berichten
  • Gebruiker

Geplaatst op 06 mei 2012 - 16:53

Bedankt voor de hulp, maar ik heb het op aan andere manier gedaan.

Ik heb gebruik gemaakt van de cosinusregel, want ik ken alle coördinaten, dus ik kan alle afstanden berekenen.
Met behulp van de cosinusregel kan ik een hoek berekenen.
Met 1 knooppunt en een punt op de link kan ik een rechthoekige driehoek tekenen.
Ik heb nu een hoek en de afstand van de schuine zijde van de rechthoekige driehoek.
Uit sin(alpha)=overstaande rechthoekszijde/schuine zijde kan ik dan de lengte van de overstaande rechthoekszijde bepalen, wat dus gelijk is aan de afstand van een punt van de link tot de rechte.

Klopt deze redenering? Ik hoop dat mijn uitleg een beetje te volgen is.

Groetjes

#4

Xenion

    Xenion


  • >1k berichten
  • 2606 berichten
  • Moderator

Geplaatst op 06 mei 2012 - 17:37

Ik heb niet tot in de details gekeken, maar het idee kan zeker werken. Wat ik voorstelde verbergt het een beetje maar die projectie (scalair product) maakt ook gebruik van die hoek.

Ik zou zeggen, reken het eens na met een voorbeeld dat je zelf opstelt en makkelijk kan controleren.





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures