AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Drehung eines Körpers um eine beliebige Achse
Thema durchsuchen
Ansicht
Themen-Optionen

Drehung eines Körpers um eine beliebige Achse

Ein Thema von Ben19 · begonnen am 5. Mai 2009 · letzter Beitrag vom 2. Jun 2009
Antwort Antwort
Seite 1 von 3  1 23      
Ben19

Registriert seit: 25. Feb 2009
17 Beiträge
 
#1

Drehung eines Körpers um eine beliebige Achse

  Alt 5. Mai 2009, 00:05
Hallo Leute
Ich muss für die Schule ein Projekt ausarbeiten und habe mich für ein Programm in Delphi entschieden in dem ich ein Objekt (Quadrat) um eine beliebige Achse drehen lasse. Habe mich auch schon schlau gemacht. Problem ist das die gefunden Formeln mir nicht schlüssig sind. Außerdem weiß ich nicht, da ich ein Anfänger im programieren bin, wie ich das in Delphi umsetze(vorallem die Darstellung von Matrizen ist mir nicht klar). Meine Fragen sind also, ob ihr mir die Drehformel erklären könntet, da ich das Projekt auch vorstellen muss und genau wissen muss wie die Formel zustande kommt und wie ich diese in Delphi umsetze(also vorallem wie ich Matrizen in Delphi einbaue)?

Hier eine Seite mit der Formel: www14.informatik.tu-muenchen.de/lehre/1998WS/proseminar/dlugosch/
Eine andere Möglichkeit der Drehung ist das Objekt in den Ursprung zu transformieren, dort zu drehen und zurück transformieren. Bei der Variante versteh ich allerdings die Rechnung nicht

Hoffe ihr könnt mir irgendwie helfen und schon mal vielen Dank im vorraus
Ben19
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#2

Re: Drehung eines Körpers um eine beliebige Achse

  Alt 5. Mai 2009, 00:19
Icvh nehme jetzt mal an, du möchtest das Teil um mehrere Achsten (=3) drehen können und nicht nur um eine.

Dann befindest du dich im 3D-Raum.

Dann machst du folgendes:

1. Das Quadrat vektorbasiert speichern. Also einen Mittelpunkt und von diesem aus Vektoren zu den Eckpunkten. Diese Vektoren sind dreidimensional.

2. Eine Vektor-Matrix-Multiplikations-Funktion schreiben. Eine Matrix hat hier 3x3 also 9 Elemente.

3. 3 Funktionen (eine für jede Achse) schreiben, die dir (unter Angabe eines Drehwinkels) die Matrix zurückgeben.

4. Das ganze verpacken

Beachte, dass die Reihenfolge der Drehmatrizen nicht egal ist. Es macht einen Unterschied, ob du erst um X, dann um y und zum Schluss um z drehst, oder andersherum

Vektorn und Matrizen kannst du in Delphi als recors implementieren
  Mit Zitat antworten Zitat
R2009

Registriert seit: 9. Mär 2009
Ort: Heidelberg
440 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Drehung eines Körpers um eine beliebige Achse

  Alt 5. Mai 2009, 06:10
Hi,

ein Vektor ist nichts anderes als ein eindimsionales Array:

   vektor:array[1..n] of double; wobei n die Dimension deines Vektors ist. ( in deinem Fall 3 )

eine Matrix ist nichts anderes als ein zweidimsionales Array (oder n dimensional brauchst du aber hier nicht):

   matrix:array[1..n,1..m] of double; wobei n=m eine symetrische Matrix ist (in deinem Fall n=m=3)

Viele Grüsse
Rainer Unger
Mein Profil:
Studium Allgemeine Elektrotechnik TH Darmstadt
Entwicklung von Tools für die Rundsteuer und Zählertechnik.
uP's Atmel Prozessoren (ATmega16,32,88...) in C und Assembler.
  Mit Zitat antworten Zitat
Ben19

Registriert seit: 25. Feb 2009
17 Beiträge
 
#4

Re: Drehung eines Körpers um eine beliebige Achse

  Alt 5. Mai 2009, 15:28
Erst einmal viel Dank für eure Antworten
Das mit den einbauen von Matrizen in Delphi hab ich begriffen(nochmal vielen Dank ).
Aber den Weg mit der Drehformel habe ich überhaupt nicht verstanden . Was bedeutet Vektorbasiert speichern oder eine Vektor-Matrix-Multiplikations-Funktion schreiben?
Wäre echt nett wenn du mir das nochmal erklären könntest.

Vielen Dank im voraus
Ben19
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#5

Re: Drehung eines Körpers um eine beliebige Achse

  Alt 5. Mai 2009, 15:57
Ich hab dir da mal ein Beispiel vorgerechnet ...

Um das ganze Quadrat zu verschieben, musst du nach der Drehung einfach einen Vektor hinzuaddieren!

P.S. Falls dir ein Schritt nicht klar ist - frag
Miniaturansicht angehängter Grafiken
hpim1438_100.jpg  
  Mit Zitat antworten Zitat
guidok

Registriert seit: 28. Jun 2007
417 Beiträge
 
#6

Re: Drehung eines Körpers um eine beliebige Achse

  Alt 5. Mai 2009, 16:10
Ein Quadrat ist doch nur zweidimensional, oder?

Ein möglicher Körper, der sich im dreidimensionalen Raum aus dem Quadrat ergibt ist z.B. der Quader (wobei hier natürlich der Sonderfall mit der Höhe Null möglich ist).
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Drehung eines Körpers um eine beliebige Achse

  Alt 5. Mai 2009, 16:13
Es müssen gar nicht drei Rotationsmatrizen sein - eine reicht völlig.

@guidok: Was hat ein Quader mit einem Quadrat zu tun? Ein Quadrat ist zwar kein Körper, aber man kann es trotzdem im dreidimensionalen Raum betrachten.

Alles, was hier zu machen ist, ist, eine entsprechende Rotationsmatrix zu erzeugen (Formel in der Wikipedia) und die mit den Punktvektoren des Quadrats zu multiplizieren.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#8

Re: Drehung eines Körpers um eine beliebige Achse

  Alt 5. Mai 2009, 16:18
Ja - ein Quadrat ist 2D - aber man kann es ja trotzdem im 3D-Raum einbetten. (Die 4 Eckpunkte müssen natürlich in einer Eebene liegen, sonst ists ja kein Quadrat mehr)

@roter kasten: Ja klar - aber die wird dann schon etwas komplizierter ... und für jemanden der noch nicht damit gearbeitet hat isses vll. einfacher 3 seperate Drehungen zu machen ...
  Mit Zitat antworten Zitat
Ben19

Registriert seit: 25. Feb 2009
17 Beiträge
 
#9

Re: Drehung eines Körpers um eine beliebige Achse

  Alt 5. Mai 2009, 17:13
Also vielen Dank
Dein Beispiel hat mir sehr geholfen. Habe es jetzt soweit verstanden .
Hätte aber noch eine Frage zum besseren Verständnis, um einen 3D Würfel drehen zulassen muss ich doch die 4 hinteren Punkte v5, v6, v7, v8 auch mit der Drehmatrite multiplizieren oder ?

Vielen Dank im vorraus
Ben19
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#10

Re: Drehung eines Körpers um eine beliebige Achse

  Alt 5. Mai 2009, 17:16
Ja, du musst immer alle Punkte mit der Drehmatrix multiplizieren.

Beachte jedoch, dass immer um den Ursprung gedreht wird - d.h. wenn du die Punkte von dem Quadrat nimmst und noch welche hinzufügst, wird der Würfel nicht um seine Mitte gedreht !
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 21:48 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