Kreise im Raum ermitteln



  • Dann gibts aber mehrere verschiedene Lösungen, bei ein und dem selben
    Punktebild, wenn verschiedene Algorithmen daran arbeiten.

    Ich dachte diese Normale ist die Normale der Tangetialebene an diesem Punkt.



  • Chuck schrieb:

    Ich dachte diese Normale ist die Normale der Tangetialebene an diesem Punkt.

    Ja, und warum sollte dann der komplette Kreis dadrin liegen?



  • Was sind denn hier nun die Normalen des Punktes?

    Sind das u und v? Aber was ist dann der dritte Parameter?
    Diese Werte sind doch auch sicher normiert.

    geom set #0:
    vertices = ( 1150.57, -152.249, -32.5767, 1150.42, -151.893, -32.6272, 1150.57, -151.901, -32.5872 )
    normals = ( 0.246937, -0.0322172, -0.968496, 0.327183, 0.00511223, -0.944947, 0.23095, -0.0321239, -0.972435 )
    geom set #1:
    vertices = ( 1194.49, -644.385, -30.1644, 1194.46, -644.36, -30.1512, 1194.44, -644.432, -30.1582 )
    normals = ( 0.309198, -0.150901, 0.938949, 0.308835, -0.151265, 0.93901, 0.286149, -0.174616, 0.94214 )

    Wie muss ich mir die Normalen an einem Punkt grafisch vorstellen?



  • Hier noch mal die genauen Daten die ich bekomme!

    Description: Get a facetted geometry primitive definition from the shape, specified by index.

    Outputs:
    coord3vecs - An array of consecutive (x,y,z) vertice values. Memory is internally allocation, and should be deallocated by the user via "delete[]".

    numcoords - The number of vertices in the returned vertice array.

    normal3vecs - An array of consecutive (x,y,z) normal values. Memory is internally allocation, and should be deallocated by the user via "delete[]".

    numnorms - The number of normals in the returned normal array.

    color3vecs - An array of consecutive (R,G,B) color values. Each value is in the range [0.0, 1.0]. Memory is internally allocation, and should be deallocated by the user via "delete[]".

    numcolors - The number of colors in the returned color array.

    texture2vecs - An array of consecutive (x,y) texture values. Memory is internally allocation, and should be deallocated by the user via "delete[]".

    numTextCoords - The number of texture coordinates in the returned texture array



  • Das mußt schon Du uns sagen, was die bedeuten. Woran sollen denn wir das erkennen?



  • Kann man denn jetzt was damit anfangen?

    😕 😕 😕



  • Nein.

    Es geht darum was bedeuten deine Normalen, die du bekommst?
    Sie stehen ja auf irgendwas senkrecht. Auf was?



  • Mehr kann ich auch nicht darüber aussagen. Mehr liefert die Bibliothek auch nicht an Informationen. In PMI Daten steht sowas auch nicht drin oder?!
    Die Normalen stehen auf jedem Punkt auf.

    *nu bin ich völlibg verwirrt*



  • Ich brauch doch aber auch die Funktionsgleichungen der Normalen in den Punkten. Nur die hab ich nicht. Es stehe wie gesagt nur die Normelenwerte zu jedem Punkt da. Um diese zu ermitteln brauch man ja auch nur den Punkt in die Funktionsgleichung einzusetzen. Und diese Funktionsgleichung ist mir nicht bekannt. Oder hab ich jetzt ein Denkfehler?



  • Im 3D Raum ist Ein Kreis Eindeutig bestimmt Durch 8 Kontrollpunkte. Mit dreien Geht es Einfach Nicht, Da eine Dimension Fehlt.
    Ein Kreis Kann um Seine eigene Achse Gedreht Sein im 3D-Raum, wobei Dies im 2D-Raum Nicht Möglich ist. Um Dies zu Kompensieren Braucht man Mindestens n+2 Andere Punkte. Im 3D-Raum Ist n=3, Also Braucht man Mindestens 5 Weitere Punkte.
    Um Es Klarer zu Formulieren. Im 2D-Raum Ist ein Kreis Bestimmt Durch 3 Punkte. Jedoch Nicht im 3D-Raum. Denn ein Kreis Ist Eigentlich ein 2D-Objekt. Wenn Dieses in den 3D-Raum eintaucht, Muss Die Ebene, in Der es Liegt, Mit Angegeben sein. Eine Ebene Braucht 4 Angaben. Die 8. Angabe Steckt In der Rotation Des Kreises um Seine eigene Achse.
    Wenn Du Dies in C++ Umsetzt, Sehe Ich Keine Probleme bei der Umsetzung.



  • Wenn ich drei Punkte im 3D-Raum habe, dann liegen die in einer Ebene, ein Kreis, der diese drei Punkte enthalten soll muß also auch in dieser Ebene liegen. Ich bekomme also eine Ebene und drei Punkte, damit also einen eindeutigen Kreis. Mehr Punkte braucht's nicht.

    Zu 4 Punkten findest Du im allgemeinen keinen Kreis mehr... wenn sie nicht koplanar sind.

    Aber unabhängig davon sehe ich auch nicht, wie das bei der Umsetzung helfen sollte.

    @Mister Wing: was für eine Funktionsgleichung?



  • @kreisforscher Ein Kreis brauch nur 3 Punkte um konstruiert zu werden. Wenn alle drei z-Koordinaten zum Beispiel Null sind, befinden wir uns wieder im R². Wenn man Ebene auf die der Kreis liegt kennt, kann man das 3-dimensionale Problem in eine 2-dimensionales reduzieren.

    @Jester Ich meinte die Parameterdarstellung der Normalen.



  • 3 Punkte und die Ebene. Eine Ebene braucht 4 Angaben (x, y, z, d). Das Macht 7 Angaben. Da der Kreis sich Um seine Eigene Achse drehen kann, noch die 8. Angabe.



  • Drei Punkte legen eine Ebene fest und nur in dieser Ebene kann sich ein Kreis befinden, der diese 3 Punkte enthält. Der Kreis ist also bereits durch 3 Punkte eindeutig bestimmt. Probier's aus. Und wenn Du schon dabei bist: Nimm mal folgende 8 Punkte: die Eckpunkte eines beliebigen Würfels (etwa (0,0,0),(0,0,1),(0,1,0),(0,1,1),(1,0,0),(1,0,1),(1,1,0),(1,1,1)) und zeig mir wie ein Kreis aussieht, der die enthält. Oder wenn 8 doch zu viel ist, zeig mir einen Kreis, der mehr als 4 dieser Punkte enhält. Vier geht hier noch, weil einige in der selben Ebene liegen. Bei einem Tetraeder kriegst Du das aber schon nicht mehr hin.



  • Mister Wing schrieb:

    Ich meinte die Parameterdarstellung der Normalen.

    Was soll das denn bitte sein?



  • @kreisforscher

    3 Punkte und nicht mehr.
    3 Punkte haben übrigens 9 "Angaben" aus denen du deine 4 für die Ebene
    bestimmen kannst. Diese achte "Angabe" wegen dem Um-Sich-Selbst-Drehen ist
    vollkommen irrelevant.

    Zurück zum Ausgangsproblem:

    Wenn du keine Ahnung hast, was diese Normalen bedeuten, würde ich trotzdem
    vorschlagen, du nimmst den Divide&Conquer-Ansatz und versucht so viele mögliche
    Kreise durch Zusatzbedingungen auszuschalten. Ich denke es ist effizienter, wenn
    du Kreise verschmelzt, anstatt Kreise mit nur einzelnen Punkten, wie du es
    machen willst.
    Diese Zusatzbedingung durch diese Normalen, die Jester vorgeschlagen hat,
    könnte auch so funktionieren, ohne dass du weißt was diese Normalen eigentlich
    bedeuten.

    Übrigens deine Parameterdarstellung eines Normalenvektors existiert wohl eher nur sehr theoretisch. Eine Ebene hat eine Parameterdarstellung
    (ax + by + cz = d), wobei (x y z)^T alle Ortsvektoren darstellen, die in
    dieser Ebene liegen.



  • Nur der Korrektheit halber: eine Ebene hat nicht 4, sondern 3 Freiheitsgrade. Das könnten z.B. die Richtung des Normalenvektors (2 Freiheitsgrade) plus der Abstand zum Ursprung sein. (bei der Normalengleichung mit 4 Parametern können beide Seiten der Gleichung mit einem freien Parameter mutlipliziert werden, man kann z.B. die Gleichung auf d = 1 normieren)
    Der Kreis hat in dieser Ebene wiederum 3 Freiheitsgrade, z.B. Mittelpunkt (2 FG) und Radius.
    Zusammen werden also aus den 9 Freiheitsgraden (z.B. jeweils 3 x-, y- und z-Koordinaten) der drei Punkte die Freiheitsgrade des Kreises im Raum hergeleitet, übrig bleiben 3 Freiheitsgrade die die Verteilung der Punkte auf dem Kreis beschreiben (z.B. pro Punkt der Winkelabstand zu einem gedachten "Anfangs"Punkt auf dem Kreis.) und für das gestellte Problem nicht weiter interessant sind.



  • Hmmm.

    Wie sieht deine genormte Ebene bei E: ax + by + cz = 0 aus?

    Ich hab bis jetzt immer in dem Glauben gelebt, dass eine Ebene 4 Freiheitsgrade
    besitzt. Aber du darfst ihn gerne zerstören.



  • einfach durch sqrt(a2+b2+c^2) teilen



  • 😃

    Scherzkeks. Ich meinte die mit d = 1. Wegen dem Ich-Brauch-Nur-3-Freiheitsgrade.


Anmelden zum Antworten