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

1

10.02.2011, 21:56

Pointer funktioniert nicht

Hmm also ich hab nen Problem

ich hab eine Model Klasse in der ich einen Vektor speichern will der die Postion von einem anderen model beinhaltet aber nur als Pointer so das wenn du Postion sich ändert halt auch der die Postion im zweiten Model sich "verändert".

C-/C++-Quelltext

1
D3DVECTOR *pRotationAround;// In der Klasse Model

Zuweisung :

C-/C++-Quelltext

1
objekt[2].model.rotationAround = &(objekt[0].model.position);


Jedoch legt ehr eine Kopie an ( wenn ich mir die Position im Speicher anschaue sind es 2 verschiedene )

könnte mir bitte wer bei meinem Problem helfen ?
ps: schon mal vielen dank für die mühe.

Edit by dot: Code Tags eingefügt

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »dot« (10.02.2011, 22:01)


dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

10.02.2011, 21:57

Was für Positionen sind denn verschieden? Der Pointer selbst hat natürlich eine andere Adresse. Aber sein Wert nicht ;)

Btw: Bitte Code Tags verwenden.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »dot« (10.02.2011, 22:04)


3

10.02.2011, 22:01

Hmm also hab halt grade einen Die sonne,erde und Mond ,

Die sonne ist in der Mitte und die erde dreht sich auch perfekt um die sone aber da die erde sich bewegt ( rotiert) bleibt der Mond irgendwo im raum und rotiert da und geht nicht mit der Erde

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

10.02.2011, 22:02

Naja und wie genau schließt du von diesem falschen Verhalten drauf dass der Pointer "nicht funktioniert"!? ^^

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

5

10.02.2011, 22:03

Zitat

Jedoch legt ehr eine Kopie an


Du solltest nochmal lesen was Pointer sind.

BurningWave

Alter Hase

Beiträge: 1 106

Wohnort: Filderstadt/Konstanz

Beruf: Student

  • Private Nachricht senden

6

10.02.2011, 22:08

Du wirst eher Probleme mit der Transformation an sich haben.

Poste halt mal mehr Code.

7

10.02.2011, 22:16

Variablen der Model Klasse

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
...
// mesh informations
D3DVECTOR position;
D3DVECTOR rotation;
D3DVECTOR scaling;

bool around;
Model *rotationAround;
...



Code der Draw Methode:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
D3DXMATRIX matTranslate, matRotationX,matRotationY,skal;


D3DXMATRIX TransMatrix;D3DXMATRIX RotMatrix;D3DXMATRIX WorldMatrix,ScalingMatrix;
D3DXMatrixScaling(&ScalingMatrix, scaling.x, scaling.y, scaling.z);
D3DXMatrixTranslation(&TransMatrix, position.x, position.y, position.z);

if(around){
//World = S * T * X * Y * 
ZD3DXMatrixRotationYawPitchRoll(&RotMatrix, index * rotation.x, index * rotation.y, index * rotation.z);
D3DXMatrixTranslation(&WorldMatrix,&rotationAround ->x , rotationAround->y, rotationAround->z);
d3ddev->SetTransform(D3DTS_WORLD,&(ScalingMatrix* TransMatrix* RotMatrix*WorldMatrix) );
}else{
//World = S * Z * Y * X * 
TD3DXMatrixRotationYawPitchRoll(&RotMatrix, index * rotation.y, index * rotation.x, index * rotation.z);
d3ddev->SetTransform(D3DTS_WORLD,&(ScalingMatrix* RotMatrix* TransMatrix) );
}



edit: danke BurningWave ja ich hab grade gesehen das ich vergessen habe die Rotation vom zum kreisenden Objekt nicht Berücksichtigt habe

Dieser Beitrag wurde bereits 8 mal editiert, zuletzt von »Xidus« (10.02.2011, 23:45)


Werbeanzeige