# Punkt berechnen, nach Rotation



## sh4dow (9. Aug 2005)

Hi Leute

hab mehr oder weniger ein kleines Problem  :roll: 

und zwar möchte ich einen Punkt, nach dem ich das Objekt gedreht habe, auf seinen Ausgangspunkt zurückrechnen.
die Rotation des Objekt hole ich mir mit der Matrix3f Klasse:

```
Transform3D trans3D = new Transform3D();
CObjTG.getTransform( trans3D );
Matrix3f mat3f = new Matrix3f();

trans3D.getRotationScale(mat3f);
```

solange ich nun das Objekt nur im die y-Achse drehe, klappt es wunderbar und zwar mit dieser Formel:

```
p_ap.set(
  (mat3f.m00 * p_neu.x) - (mat3f.m02 * p_neu.z),
  p_neu.y,
  (mat3f.m22 * p_neu.z) - (mat3f.m20 * p_neu.x)
);
```

sobald ich aber das Objekt um die x-Achse bzw. mit der Maus in irgendeine Richtung drehe, stimmen die Koordinaten nicht.
Weiß einer von euch, welche Formel ich da anwenden muss, dass ich, egal in welche Richtung das Objekt gedreht wird, auf den Ausgangspunkt zurückrechen kann?

mfg;


----------



## sh4dow (15. Aug 2005)

hab einen kleinen Fortschritt gemacht und dachte schon, ich hätte es geschafft  :roll: 

aber mit dieser Berechnung klappt es nur solange, solange ich das Objekt *nur* um die x-, y- oder z-Achse drehe:


```
p_ap.set(
  (mat3f.m00 * p_neu.x) + (mat3f.m01 * p_neu.y * -1) + (mat3f.m02 * p_neu.z * -1),
  (mat3f.m10 * p_neu.x * -1) + (mat3f.m11 * p_neu.y) + (mat3f.m12 * p_neu.z * -1),
  (mat3f.m20 * p_neu.x * -1) + (mat3f.m21 * p_neu.y * -1) + (mat3f.m22 * p_neu.z)
);
```

Sobald man es um die x- und y-Achse dreht stimmen die Koordinaten nicht. Was mach ich da falsch bzw. ist das ein komplett falscher Ansatz? ???:L 

mfg;


----------



## sh4dow (27. Aug 2005)

Hat sich erledigt. 
War eine kleine aber entscheidende Methode  :roll: 

Hab vorher die Koordinaten immer mit dieser Methode geholt:

```
pi.getPointCoordinatesVW();
```

jedoch bekommt man die Ausgangskoordinaten schon mit dieser Methode:

```
pi.getPointCoordinates();
```

somit hat man die fertigen Koordinaten und fertig  

mfg;


----------

