eine gerade durch zwei punkte ermitteln.



  • guten tag zusammen,

    ich suche eine möglich folgendes zu bestimmen..

    ich habe zwei punkte (jeweils x,y,z), die eine strecke in einem 3d-raum bilden. außerdem habe ich noch ein polynom mit n punkten und einer höhe (für jeden punkt), sodass es einen 3d-körper bildet.

    jetzt möchte ich schauen, ob dieser 3d-körper auf meiner strecke liegt..

    habt ihr eine idee oder einen ansatz? ich weiß leider nichtmal wonach ich im netz suchen soll.

    danke und schöne grüße



  • ich habe vergessen zu sagen, was ich mir schon so gedacht habe:

    ich dachte mir eine geradengleichung aus den beiden punkten zu ermitteln, dann das gleiche für jede gerade des polygons und diese dann jeweils gleichzusetzen. wenn eine dieser gleichungen lösbar ist, dann schneidet die Strecke das
    polygon.

    was meint ihr?
    (.. ich muss das ganze übrigens später in c++ realisieren können.)

    danke und grüße



  • ja klar... dein anstatz ist gut:

    Geradengleichung von zwei punkten a, b:
    (alles vektoren, außer g, das ist der geradenname und u, das ist ein skalar)
    
    g: x = a + u * (b-a)
    

    Damit kannst du eine Gleichung für die gerade durch die zwei punkte aufbaun.
    Dann baust du noch geraden die die verbindungsstücke der punkte des polynoms sind und dann prüfst du, ob eine gerade des polynoms die gerade schneidet.

    Schnitt kannst du mit gleichsetzung und dann zB guaß oder determinante errechnen.



  • okay, aber ich habe noch probleme mit dem verständniss bei einem 3d-raum.. muss ich dann nicht zwischen den polygon-punkten eine ebene/fläche bilden und schauen, ob die strecke diese schneidet? wie rechnet man sowas?

    schöne grüße

    (ps: ich muss jetzt leider nach hause, kann also erst später/morgen antworten)

    vielen dank!



  • Denke schon, dass das ist, was du willst. Ist das nun ein Polynom oder ein Polygon (mit Dicke also ein Prisma?) ? Für ein Polygon:

    Eine Ebene E ist definiert durch;
    Eine Normale n (Vektor senkrecht zur Oberfläche)
    Eine Entfernung vom Ursprung h

    Aus drei Punkten mit den Ortsvektoren a, b und c, die auf einer Ebene liegen (z.B. drei Punkte deines Polygons) kannst du das berechnen indem du
    für n das Kreuzprodukt aus (b-a) und (c-a) bildest und normalisierst
    für h dann das Skalarprodukt von n und a, b oder c bildest

    Mit folgender Formel kriegst du raus, wo eine Gerade eine Ebene schneidet:
    Die Gerade ist gegeben wie Maxi gesagt hat, statt (b-a) nehme ich d.
    OK, Latex geht wohl nicht, als Text:
    us = (h - n·a) / (n·d)
    Der Punkt bezeichnet das Skalarprodukt. Den Punkt kriegst du raus indem du us in die gegebene Geradenfunktion einsetzt.



  • ja super.. so läufts denke ich! werde dann jetzt mal das ganze umsetzen.
    vielen dank euch beiden und schöne grüße


Anmelden zum Antworten