Hallo,
ja klar gibt es da eine Möglichkeit.
PROC Konvert2 (
wobjdata wOriginal,
wobjdata wNeu,
robtarget pOriginal,
PERS robtarget pNeu )
VAR pose pos1;
VAR pose pos2;
VAR pose pos3;
VAR pose pos4;
VAR pose pos5;
VAR pose pos6;
VAR pose pos7;
VAR pose pos8;
VAR pose pos9;
VAR pose pos10;
! wegen der Konfigurationen
pNeu := pOriginal;
! Die einzelnen Verschiebungsframes kopieren
pos1:=wOriginal.uframe;
pos2:=wOriginal.oframe;
! Berechnung der Gesamttrafo des Werkobjekts
pos3:=PoseMult(pos1,pos2);
! Die einzelnen Verschiebungsframes kopieren
pos4:=wNeu.uframe;
pos5:=wNeu.oframe;
! Berechnung der Gesamttrafo des Werkobjekts
pos6:=PoseMult(pos4,pos5);
pos7.trans:=pOriginal.trans;
pos7.rot:=pOriginal.rot;
! Weltkoordinaten des Zielpunkts berechnen (bzgl des Nullpunkts)
pos8:=PoseMult(pos3,pos7);
! Koordinaten des Nullpunkts bzgl des Ziel-Werkobjekts berechnen
pos9:=PoseInv(pos6);
pos10:=PoseMult(pos9,pos8);
pNeu.trans := pos10.trans;
pNeu.rot := pos10.rot;
ENDPROC
Berechnet aus POriginal bezüglich woriginal den neuen Punkt pneu bezüglich wneu.
Es muss also Poriginal, Woriginal, und WNeu gegeben sein, heraus kommt Pneu.
Jetzt musst Du nur noch ein Programm schreiben, in dem für jeden Punkt
die Konvertierroutine aufgerufen wird.
Viel Spass dabei.
Hermann