Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   länge im 3D Raum?! (https://www.delphipraxis.net/54579-laenge-im-3d-raum.html)

XeRo 6. Okt 2005 21:30


länge im 3D Raum?!
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi.
Das bild im Anhang zeigt den Blick in einen Gang. Die hintere wand des Ganges besteht aus einem Quadrat(Seitenlänge a). Die Wand soll aus lauter gleichen Quadraten, die nebeneinander stehen, aufgebaut sein. Was mich interessieren würd ist, wie man die seitenlänge berechnen kann damit sie rein optisch a entspricht.
Was vielleicht wichtig ist: der "Fluchtpunkt"(="Zentrum" des Ganges) ist der rote punkt. von dort laufen alle linien weg.

Speedmaster 6. Okt 2005 21:51

Re: länge im 3D Raum?!
 
Das kann verschieden sein, zumindestens bei OpenGL ist es so das man einen Winkel einstellen kann( Denke ich zumindestens )!

Die genauen Werte wie weit es nach hinten geht weiss ich allerdings nicht!

Oxmyx 6. Okt 2005 22:23

Re: länge im 3D Raum?!
 
Wenn das eine perspektische Darstellung ist, dann hängt die scheinbare Länge von a* auch von der Wahl der Kameralinse ab (d.h. die Verzerrung der Welt). Das macht die Rechnung gleich um einiges komplizierter. ;)

ripper8472 7. Okt 2005 03:17

Re: länge im 3D Raum?!
 
Liste der Anhänge anzeigen (Anzahl: 1)
platziere die vertices (eckpunkte) in einem 3dimensionalen raum.
dann transformiere sie in ein koordinatensystem, das der position und ausrichtung der kamera entspricht.
dann projeziere sie auf eine ebene.
damit hast du eine gute darstellung.

hab mal einen jahrealten code angehaengt, den ich vor jahren aus einem basicsource fuer meinen grafiktaschenrechner portiert habe.

Puhbaehr 7. Okt 2005 05:01

Re: länge im 3D Raum?!
 
Sowas konnte man doch irgendwie ausrechnen...arg wie ging das...
Ich erinner mich grade an die Zentrische Streckung:

Zitat:

Bei einer zentrischen Streckung (Z; k) sind die Originalfigur und die Bildfigur zueinander ähnlich.

Strecke A'B' (Bildfigur) = k * Strecke AB (Original)
Strecke B'C' (Bildfigur) = k * Strecke BC (Original)
Strecke AB wäre in deinem Falle die Linie(n) a und somit = BC.
Z ist der Brennpunkt.
Aber was wäre k? Die Strecke zwischen Z und der Bildfigur? :gruebel:

Puhbaehr 7. Okt 2005 05:47

Re: länge im 3D Raum?!
 
Ok ich habs mal eben ausprobiert.
Jetzt wird es Mathematisch!
Nehm doch einfach mal ein Blatt Papier, einen Bleistift und ein vernünftiges Linial mit Maßeinheit (cm). Noch besser wäre dazu irgendein Dreieick.

Ok Zeichne auf dem Blatt Papier etwa links in der Mitte einen Punkt (oder Kreuz) und benenne ihn Punkt Z.
Nun zeichnest du etwas rechts vom Punkt Z drei weitere Punkte, benennst sie A, B und C und verbindest diese zu einem Dreieick:


Code:
Blatt Papier:
                      A
                     X
    Z
   X         B
             X
                    C
                   X
Nun zeichnest du einen Strahl von Z nach A und noch etwas länger.
Zwei weitere Strahle zeichnest du von Z nach B und Z nach C, auch wieder noch etwas länger.

Nun zeichnest du auf dem ersten Strahl von Z nach A weiter rechts genau auf dem Strahl einen Punkt und benennst ihn A' oder A2.
Nun misst du mit dem Linial den Abstand von Z und A. Den nennen wir nun Strecke ZA.
Jetzt misst du den Abstand von Z und dem eben gezeichnetem A' bzw. A2 und das nennen wir Strecke ZA' bzw. ZA2.

Nun kommt das interessante:
Rechne Strecke ZA' geteilt durch Strecke ZA. Der Wert der heraus kommt nennen wir k. Merke dir den bzw. schreib ihn auf! Denn damit rechnest du nun weiter.
Nun rechnest du Strecke ZB mal k (dem eben ausgerechnetem Wert). Halte das Linial an den Strahl ZB an und zeichne an der nun ausgerechneten Position einen Punkt und benenne ihn B' bzw. B2.
Genauso rechnest du jetzt noch Strecke ZC mal k und zeichnest diesen Punkt ebenfalls auf dem Strahl ZC an und benennst ihn C' bzw. C2.

Nun verbindest du die Punkte A', B' und C' (bzw. A2, B2 und C2) mit dem Linial.
Herauskommen sollte ein vergrößertes Abbild deines original Dreiecks.
Willst du wissen ob das Abbild wirklich dem original entspricht prüfe einfach ob die Seiten der beiden Dreiecke zueinander paralell verlaufen. D.h. Strecke AB ist paralell zu Strecke A'B' (AB || A'B'). Strecke BC || Strecke B'C'. Und Strecke CA || Strecke C'A'.

Fertig. Ich könnte dir jetzt noch ein Bitmap anhängen damit du weißt wie das hinterher aussieht.
Aber wenn du wirklich was lernen willst solltest du versuchen das zu zeichnen, denn so verstehst du es auch! Und wenn du das Prinzip vorher schon verstanden hast dann hättest du hier nicht gefragt ;)

Also ran... und wenn du fertig bist weißt du nun wie ein Abbild deines Originals entsteht und kannst nun hoffentlich auch die fehlende Seite deines 3D-Bildes ausrechnen ;)
Du musst dir nur noch überlegen was das Originalbild und was das Abbild ist.

PS: @Oxmys die Verzerrung der Linse hab ich hier erstmal weggelassen ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:37 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz