AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

länge im 3D Raum?!

Ein Thema von XeRo · begonnen am 6. Okt 2005 · letzter Beitrag vom 7. Okt 2005
Antwort Antwort
XeRo

Registriert seit: 23. Okt 2003
Ort: Warth
461 Beiträge
 
Delphi 7 Enterprise
 
#1

länge im 3D Raum?!

  Alt 6. Okt 2005, 22:30
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.
Angehängte Grafiken
Dateityp: bmp gang_197.bmp (80,0 KB, 64x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Speedmaster
Speedmaster

Registriert seit: 4. Mär 2005
Ort: Karlsruhe
535 Beiträge
 
Delphi 2005 Personal
 
#2

Re: länge im 3D Raum?!

  Alt 6. Okt 2005, 22:51
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!
Felix K.
Zitat:
Siehst du diesen Park da unten?
Jeden Tag lernen sich leute kennen und verlassen einander, und du hast dein ganzes Leben Zeit darin zu gehen!
  Mit Zitat antworten Zitat
Oxmyx

Registriert seit: 21. Sep 2004
499 Beiträge
 
#3

Re: länge im 3D Raum?!

  Alt 6. Okt 2005, 23:23
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.
  Mit Zitat antworten Zitat
ripper8472

Registriert seit: 17. Aug 2003
275 Beiträge
 
#4

Re: länge im 3D Raum?!

  Alt 7. Okt 2005, 04:17
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.
Angehängte Dateien
Dateityp: rar render_120.rar (138,6 KB, 6x aufgerufen)
Christoph
  Mit Zitat antworten Zitat
Puhbaehr
(Gast)

n/a Beiträge
 
#5

Re: länge im 3D Raum?!

  Alt 7. Okt 2005, 06:01
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?
  Mit Zitat antworten Zitat
Puhbaehr
(Gast)

n/a Beiträge
 
#6

Re: länge im 3D Raum?!

  Alt 7. Okt 2005, 06:47
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz