Azzera filtri
Azzera filtri

How can I transform 3D position coordinates from a global to a local coordinate sytem?

15 visualizzazioni (ultimi 30 giorni)
I'm stuck trying to transform 3D position coordinates from a global to a local coordinate system. My current code is below, but is incorrect and I don't know where the error is. Any help would be much appreciated.
%Marker coordinates in GCS
Marker1_GCS=[-941,549,1006];
Marker2_GCS=[-939,294,990];
Marker3_GCS=[-1127,461,1018];
Marker4_GCS=[-1127,375,1017];
%Define origin of LCS as between markers 3 and 4
origin_LCS=mean([Marker3_GCS;Marker4_GCS]);
%Define the y axis as from origin to the mean of markers 1 and 2
V=mean([Marker1_GCS;Marker2_GCS])-origin_LCS;
%The unit vector on the y axis is V/length(V) in the GCS
Y=V/sqrt((V(1)^2)+(V(2)^2)+(V(3)^2));
%Define a vector U from Marker 1 to Marker 2 as the plane of the x-axis
U=Marker2_GCS-Marker1_GCS;
%The unit vector on the Uu axis is U/length(U) in the GCS
Uu=U/sqrt((U(1)^2)+(U(2)^2)+(U(3)^2));
%Define the direction of the z axis (W) by the vector cross product of Uu and Y
W=cross(Uu,Y);
%The unit vector on the Z axis is W/length(W) in the GCS
Z=W/sqrt((W(1)^2)+(W(2)^2)+(W(3)^2));
%Define the direction of the x axis by the vector cross product of Y and Z
X=cross(Y,Z);
%Put these variables together into the transformation matrix.
%This is the transformation matrix to get from the global CS to the local pelvis coordinate system (Tgl)
%Tgl is arranged:
% Xx Yx Zx Ox
% Xy Yy Zy Oy
% Xz Yz Zz Oz
% 0 0 0 1
Tgl=[X' Y' Z' origin_LCS';0 0 0 1];
%Calculate marker coordinates in LCS
Marker1_LCS=(Tgl*[Marker1_GCS';1])';
Marker2_LCS=(Tgl*[Marker2_GCS';1])';
Marker3_LCS=(Tgl*[Marker3_GCS';1])';
Marker4_LCS=(Tgl*[Marker4_GCS';1])';
  1 Commento
Jayaram Theegala
Jayaram Theegala il 17 Feb 2017
If you want to transform your coordinates from global to local coordinate system, you can consider using MATLAB's "global2localcoord" function. For more information about this function, click on the following URL:

Accedi per commentare.

Risposte (0)

Categorie

Scopri di più su Cartesian Coordinate System Conversion in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by