Autor Beitrag
Prometheus1995
Hält's aus hier
Beiträge: 4



BeitragVerfasst: 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 user profile iconNarses: Topic aus Delphi Tutorials verschoben am Do 23.02.2012 um 23:02
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Fr 24.02.12 00:18 

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
GuaAck
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 376
Erhaltene Danke: 32

Windows 8.1
Delphi 10.4 Comm. Edition
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: 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 user profile iconNarses: Beiträge zusammengefasst

danke schonmal an Bummi,hab es gedownloaded, habe leider selber kein delphi daher kann ich erst in der schule wider draufzugreifen
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
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)
BeitragVerfasst: Fr 24.02.12 02:27 
user profile iconPrometheus1995 hat folgendes geschrieben Zum zitierten Posting springen:
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

user profile iconPrometheus1995 hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Fr 24.02.12 13:55 
Hab jetzt erstmal 2 grundregelende Formeln aufgestellt(dürften stimmen),bin grade an der Überlegung wie ich im allgemeinen,durch welche Schleife den Vorgang widerholen könnte?
ausblenden Delphi-Quelltext
1:
2:
x2:=Round( x + ( Radius * cos(Winkel)) );
y2:=Round( y + ( Radius * sin(Winkel)) );


Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
Blup
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 173
Erhaltene Danke: 43



BeitragVerfasst: 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:
ausblenden Delphi-Quelltext
1:
2:
3:
// P1 = P - M
P1.x := P.x - M.x;
P1.y := P.y - M.y;

Dann wird der Punkt mit der Rotationsmatrix transformiert:
ausblenden Delphi-Quelltext
1:
2:
3:
// P2 = P1 * R
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:
ausblenden Delphi-Quelltext
1:
2:
3:
// P = P2 + M
P.x := P2.x + M.x;
P.y := P2.y + M.y;

Die Berechnung für dreidimensionale Objekte läuft im Prinzip genauso ab.