Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Der Dude

Treue Seele

  • »Der Dude« ist der Autor dieses Themas

Beiträge: 73

Wohnort: Elleringhausen-City

Beruf: ITA

  • Private Nachricht senden

1

10.09.2005, 19:15

Drehen und verschieben

Aloa,

dieses mal nur eine ganz kurze Frage.

this.m_mWorld = Matrix.Translation(10.0f, 10.0f, 30.0f) + Matrix.RotationY((float)(((Math.PI / 2) * ttime)));

this.m_mWorld = Matrix.RotationY((float)(((Math.PI / 2) * ttime))) + Matrix.Translation(10.0f, 10.0f, 30.0f) ;

Wieso machen die beiden Zeilen keinen Unterscheid?

Gruss
TIM :)
"Wenn ich morgens doppelt so schnell über den Flur laufe, kann ich 2 Minuten länger schlaften!" - leider war es ein Irrtum.

Anonymous

unregistriert

2

10.09.2005, 20:31

Weil die Addition von Matrizen kommutativ ist.

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

3

10.09.2005, 21:40

beachte dass du damit vermtl nicht das gewünschte ergebnis erreichst, weil du für eine drehung und nachfolgender verschiebung malnehmen musst (operater *) dann ist das ergebnis auch nicht mehr gleich.

Der Dude

Treue Seele

  • »Der Dude« ist der Autor dieses Themas

Beiträge: 73

Wohnort: Elleringhausen-City

Beruf: ITA

  • Private Nachricht senden

4

10.09.2005, 21:44

Hi SpikeDevil,

ich denke genau das meinte ich.
Aber wieso erscheint dann doch was ich haben möchte? Das Dreieck dreht sich oben links immer um sich selbst. Genau so soll es sein.

Kannst du dir den Effekt erklären?

TIM :)
"Wenn ich morgens doppelt so schnell über den Flur laufe, kann ich 2 Minuten länger schlaften!" - leider war es ein Irrtum.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

5

11.09.2005, 13:06

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    |1    0    0    0|
    |0    1    0    0|
T = |0    0    1    0|
    |tx   ty   tz   1|

    |cos  0  sin  0|
    |0    1   0   0|
R = |-sin 0  cos  0|
    |0    0   0   1|

                |1+cos  0   sin 0|
R + T = T + R = |0      2   0   0|
                |-sin   0 1+cos 0|
                |tx     ty  tz  1|

punkt mit matrix transformiert:

x' = x * (1 + cos) - z * sin + tx
y' = y * 2 + ty
z' = x * sin + z * (1 + cos) + tz


ich bin zwar grad beim bundesheer (grundwehrdienst :( ) und mein hirn is deshalb grad irgendwo zwischen offline und standby^^, aber ich denk, dass das den punkt richtig verschiebt.
die rotation wird aber etwas komisch ausschaun (wegen dem 1+cos zeug) und in y richtung wird das ganze doppelt so groß.

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

6

11.09.2005, 19:34

Ich sag mir immer: Man muss nicht alles verstehen, man muss nur wissen wie es richtig ist^^ Wer weiß was für ein komischer Effekt dafür sorgt, dass es in dem Fall so ist, wie du willst, aber in nem anderen völlig daneben geht. Machs in Zukunft einfach mit * und es geht so wie du willst, und falls du echt wissen willst warum es bei dir mit + auch geht, dann halt dich an dot ;)
Aber die Energie die du darauf verwendest rauszukriegen warum ein nutzloser Effekt auftritt, kannst du besser verwenden um einen komplexeren und nützlicheren Effekt kennen zu lernen.

Aso und nebenbei: alles, aber nicht SpikeDevil^^

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

7

11.09.2005, 20:08

Es geht noch einfach. Schnapp dir einen der meint von Mathe Ahnung hat und stell ihm folgende Aufgabe:

Zeige, das Matrix.Translation(10.0f, 10.0f, 30.0f) + Matrix.RotationY((float)(((Math.PI / 2) * ttime))); und Matrix.RotationY((float)(((Math.PI / 2) * ttime))) + Matrix.Translation(10.0f, 10.0f, 30.0f) ;
equivalent sind.

So sehen nämlich alle Mathewettbewerbsaufgaben auf und die rechnen sowas freiwillig^^. Mathematiker sind nunmal dazu da, das Fussvolk der Naturwissenschaftler zu sein }>
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

8

17.09.2005, 16:15

einfache aufgabe, da die addition von matritzen kommutativ ist, ergibt sich das von selber...

Werbeanzeige