Autor |
Beitrag |
Prometheus1995
Hält's aus hier
Beiträge: 4
|
Verfasst: Fr 24.02.12 00:00
Hallo Zusammen!
Ich bin seit geraumer Zeit stolzer Informatikschüler, doch nun habe ich ein Problem wo ich leider keinen Plan und auch nicht mehr viel Zeit habe.
Ich hoffe auch die Unterstützung der Community
Problem:
Erstellen eines Würfels, der sich in einem Punkt innerhalb des Würfels dreht.(Punkte mit Linien verbunden)
Mein bisheriger Lösungsansatz sieht so aus das ich versuchen Möchte 8 Punkte zuersellen und diese dann durch Linien zu einem Würfel zu verbingen,der sich auf einer Kreisbahn drehen sollte.
Dafür sollte ich Möglichst mit Canvas arbeiten, ich denke das ich ebenso Vektorrechnung benötige(leider noch keinen Plan von).
Cos und Sin sind sicherlich auch gefragt.
Habe einen imensen Zeitdruck und würde mich über Hilfen und/oder Quelltexte(die verständlich für einen Neueinsteiger sind) freuen.
MfG Prom Moderiert von Narses: Topic aus Delphi Tutorials verschoben am Do 23.02.2012 um 23:02
|
|
bummi
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Fr 24.02.12 00:18
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|
GuaAck
Beiträge: 378
Erhaltene Danke: 32
Windows 8.1
Delphi 10.4 Comm. Edition
|
Verfasst: Fr 24.02.12 00:29
Verstehe ich richtig, dass Du die Ansicht des "Drahtmodelles" eine Würfels auf eine Ebene (als Canvas) projezieren sollst, wobei die Ansicht (Blickwinkel, Abstand) frei wählbar sein sollen?
Falls ja: Das ist die klassische Aufgabe von Programmen wie DirectX oder OpenGL. Googele mal nach "DirectX Tutorial", da wirst Du schnell was finden, wo die ganzen Transformationen bestens beschrieben sind.
Gruß GuaAck
|
|
Prometheus1995
Hält's aus hier
Beiträge: 4
|
Verfasst: Fr 24.02.12 00:33
danke schonmal für die schnellen Antworten
Nein es sollte mit Canvas gemacht werden, da ich verstehen und sehen möchte was da passiert, mit diesen von dir anderen beschrieben Formen hatte ich bisher noch keinen Kontakt. Moderiert von Narses: Beiträge zusammengefasstdanke schonmal an Bummi,hab es gedownloaded, habe leider selber kein delphi daher kann ich erst in der schule wider draufzugreifen
|
|
Xion
Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Fr 24.02.12 02:27
Prometheus1995 hat folgendes geschrieben : | Nein es sollte mit Canvas gemacht werden, da ich verstehen und sehen möchte was da passiert, mit diesen von dir anderen beschrieben Formen hatte ich bisher noch keinen Kontakt. |
Ja, dort erklären die das auch.
wiki.delphigl.com/in...rial_Lineare_Algebra
Nur finde ich das vielleicht etwas schwierig, wir hatten in der Schule keine Matrizenrechnung (Mathe LK Bayern)
wiki.delphigl.com/in.../Tutorial_Nachsitzen
Prometheus1995 hat folgendes geschrieben : | danke schonmal an Bummi,hab es gedownloaded, habe leider selber kein delphi daher kann ich erst in der schule wider draufzugreifen |
Zum angucken reicht ja auch erstmal nur ein Texteditor Die .pas ist in Klartext.
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
Martok
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Fr 24.02.12 03:39
Man kann das im Ansatz auch ohne Matrizen machen, indem man eine orthogonale Projektion nimmt. Dann kann man mit ein paar clever verteilten sin/cos schon die Projektion herleiten, ohne über die Matrizen dahinter nachzudenken. Isometrische Projektionen mit verstellbaren Winkeln bietet sich da an, das ist einfach solange man nur Drahtmodelle zeichnen will. Flächen sind etwas schwierig, man müsste ja einen ZBuffer simulieren.
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
Prometheus1995
Hält's aus hier
Beiträge: 4
|
Verfasst: Fr 24.02.12 13:05
ja Martok ähnlich war auch meine Vorstellung, Kantenmodell reicht!, aber technisch habe ich leider keine Ahnung wie ich das umsetzten kann.
Habe auch nur Lazeros auf meinen Heimrechner, in der Schule leider nur Delphi....
|
|
Martok
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Fr 24.02.12 13:42
Womit du das machst is ja erstmal egal. Das Canvas sieht bei beiden gleich aus, und die Sprache ist eh die gleiche (wenn du FPC in den Delphi-Modus schaltest).
Technisch ist das auch keine Herausforderung, nur Moveto/Lineto; eher Mathematisch. Die Projektion solltest du dir vielleicht mal mit Papier und Bleistift und einer Hand voll Skizzen herleiten: da sieht man dann schön, welche Winkel wo auftauchen und welche Winkelfunktion dann die Koordinaten ergibt.
Du hast ja 2 Winkel: Drehen um die Z(hoch)-Achse und Kippen zur lokalen X(oder Y)-Achse. Wenn du die erstmal einzeln machst (also einmal ein Objekt nur von der Seite gesehen umkreisen und einmal nur rotieren) hast du beide Einzelteile und kannst die dann einfach zusammenführen.
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
Prometheus1995
Hält's aus hier
Beiträge: 4
|
Verfasst: Fr 24.02.12 13:55
|
|
Blup
Beiträge: 174
Erhaltene Danke: 43
|
Verfasst: Di 28.02.12 12:25
Ist der Radius konstant und der Winkel wird z.B. in einer Schleife kontinuierlich verändert, beschreiben die beiden Formeln einen Kreis um den Punkt x,y in einer Ebene. Was hat das mit deiner urspünglich formulierten Aufgabenstellung zu tun?
Ein Objekt lässt sich durch eine Menge von Punkten beschreiben.
Das Objekt wird um einen Punkt M rotiert, in dem dem jeder einzelne Punkt P des Objektes rotiert wird.
Dazu werden die Weltkoordinaten von Punkt P in ein Koordinatensystem überführt in dem die Drehpunkt M die Position 0,0 hat:
Delphi-Quelltext 1: 2: 3:
| P1.x := P.x - M.x; P1.y := P.y - M.y; |
Dann wird der Punkt mit der Rotationsmatrix transformiert:
Delphi-Quelltext 1: 2: 3:
| P2.x := P1.x * Cos(Alpha) + P1.y * -Sin(Alpha); P2.y := P1.x * Sin(Alpha) + P1.y * Cos(Alpha); |
Zum Schluss wieder die Umrechnung in Weltkoordinaten:
Delphi-Quelltext 1: 2: 3:
| P.x := P2.x + M.x; P.y := P2.y + M.y; |
Die Berechnung für dreidimensionale Objekte läuft im Prinzip genauso ab.
|
|