Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Is it possible to express any planar transformation in terms of rotation?

  1. Jul 26, 2010 #1

    I'm am trying to calculate the radius of curvature of a trajectory in a plane. I am using Frenet-Serret formulas and perpendicular bisector approach to calculate the radius. It comes out that both the approaches lead to same answer when I calculate the radius for a trajectory generated using just rotation transformation. However, when I calculate the radius for a trajectory generated using mixed transformation (involving both rotation and translation) the answers are significantly different. This seems to me as strange as the trajectory must have only one radius at each point though it might vary along the arc length. So, the question boils down to whether it is possible to express any general planar transformation by just rotation?


  2. jcsd
  3. Jul 27, 2010 #2
    Any comments guys!
  4. Jul 27, 2010 #3
    What do you mean by "a trajectory generated using mixed transformation (involving both rotation and translation)"?
  5. Jul 27, 2010 #4
    I mean the homogeneous transformation matrix contains entry for both rotation and translation. Also, the rotation and translation vary as the trajectory is generated.
  6. Jul 27, 2010 #5
    In 2 dimensions, the answer is yes except for the case of translation without rotation (infinite radius of curvature).

    In 3 dimensions, a transformation that consists of a nontrivial rotation and a translation is not necessarily equivalent to a simple rotation. A counterexample is a rotation about some axis combined with translation along the same axis.
  7. Jul 27, 2010 #6
    Thanks hamster. But I'm not clear about why is the radius obtained using both the approaches are significantly different when I increase the complexity of the curve in 2 dimensions. Say for t degrees of rotation, I translate by t^n and I vary t from 0 to 100. As I increase the value of n, the answer from both the approaches vary significantly. However, for a rotation+constant translation the radius by two approaches match exactly.
  8. Jul 27, 2010 #7
    can you show your calculations?
  9. Jul 27, 2010 #8
    Here is the MATLAB Code. Basically I'm applying the calculations to four corners of a square which is being transformed.

    clear all
    close all

    dt = 1;
    Scale = 3; % Just defined to care of the plotting stuff
    Sx = [0 0 1 1 0];
    Sy = [0 1 1 0 0];
    Sz = [0 0 0 0 0];
    P1 = [];
    P2 = [];
    P3 = [];
    P4 = [];
    K = [];
    X = [];
    Y = [];
    Z = [];
    Radius = [];
    Radius_PB = [];
    Tprev = 0;

    axis(2*[-10 10 -10 10]*Scale);
    grid on;
    P = 2*Scale*[Sx; Sy; Sz;ones(size(Sx))];
    Pprev = P;

    for t = 1:dt:80
    % R = makehgtform('zrotate',deg2rad(t),'translate',[(t/40) (t/40) 0]);
    R = makehgtform('zrotate',deg2rad(t),'translate',[(t/50)^3 (t/50) 0]); % Homogeneous Transformation matrix
    % R = makehgtform('zrotate',deg2rad(t),'translate',[2 4 0]);
    % R = makehgtform('zrotate',deg2rad(t));
    Pnew = R*P; % Evaluation of transformed points
    P1 = [P1 Pnew(1:2,1)];
    P2 = [P2 Pnew(1:2,2)];
    P3 = [P3 Pnew(1:2,3)];
    P4 = [P4 Pnew(1:2,4)];
    PC = [P1 P2 P3 P4];

    %Radius calculation using Frenet-Serret formulas
    dr = (Pnew-Pprev); %Calculating dr
    Tnew = [dr(:,1)/(sum(dr(:,1).^2))^0.5,...
    dr(:,5)/(sum(dr(:,5).^2))^0.5]; %Calculating dr/ds
    dT = (Tnew-Tprev);
    dTds = [dT(:,1)/(sum(dr(:,1).^2))^0.5,...

    k = [(sum(dTds(:,1).^2))^0.5,...
    radius = [1/k(1),1/k(2),1/k(3),1/k(4)]
    K = [K; k];
    Radius = [Radius; radius];

    %Radius calculation using Perperndicular bisector method
    drxyz = [dr(1:3,1), dr(1:3,2), dr(1:3,3), dr(1:3,4)];
    Z = repmat([0; 0; 1],1,4);
    Nr = cross(drxyz,Z);
    Nr = [Nr(1:2,1)/sum(Nr(1:2,1).^2)^0.5, -Nr(1:2,2)/sum(Nr(1:2,2).^2)^0.5,...
    Nr(1:2,3)/sum(Nr(1:2,3).^2)^0.5, -Nr(1:2,4)/sum(Nr(1:2,4).^2)^0.5];
    MP = (Pnew+Pprev)/2;
    DMP12 = [MP(1:2,2)-MP(1:2,1)];
    DMP34 = [MP(1:2,4)-MP(1:2,3)];
    lambda = [inv(Nr(:,1:2))*DMP12, inv(Nr(:,3:4))*DMP34]
    r1 = MP(1:2,1)+lambda(1)*Nr(:,1)-Pnew(1:2,1); %Calculating the radius for 1st corner
    r2 = MP(1:2,2)+lambda(2)*Nr(:,2)-Pnew(1:2,2);
    r3 = MP(1:2,3)+lambda(3)*Nr(:,3)-Pnew(1:2,3);
    r4 = MP(1:2,4)+lambda(4)*Nr(:,4)-Pnew(1:2,4);
    Radius_PB = [Radius_PB; sum(r1.^2)^0.5, sum(r2.^2)^0.5,sum(r3.^2)^0.5, sum(r4.^2)^0.5 ]

    %Plotting and annotating
    axis(2*[-10 10 -10 10]*Scale);
    grid on;
    Pprev = Pnew;
    Tprev = Tnew;
    % pause;

    s = length(K)
    h = plot(1:s,K(1:s,1),'-b',1:s,K(1:s,2),'-r',1:s,K(1:s,3),'-g',1:s,K(1:s,4),'-y');
    axis tight
    xlabel('Sample No \rightarrow','fontsize',12)
    ylabel('\kappa \rightarrow','fontsize',12);
    legend(h,'Vertex 1','Vertex 2','Vertex 3','Vertex 4');
    grid on

    h = plot(1:s,Radius(1:s,1),'-b',1:s,Radius(1:s,2),'-r',1:s,Radius(1:s,3),'-g',1:s,Radius(1:s,4),'-y');
    axis tight
    xlabel('Sample No \rightarrow','fontsize',12)
    ylabel('Radius of Curvature \rightarrow','fontsize',12);
    legend(h,'Vertex 1','Vertex 2','Vertex 3','Vertex 4');
    grid on

    h = plot(1:s,Radius_PB(1:s,1),'-b',1:s,Radius_PB(1:s,2),'-r',1:s,Radius_PB(1:s,3),'-g',1:s,Radius_PB(1:s,4),'-y');
    axis tight
    Title(' Radius of Curvature from perpendicular bisector','fontsize',12);
    xlabel('Sample No \rightarrow','fontsize',12)
    ylabel('Radius of Curvature \rightarrow','fontsize',12);
    legend(h,'Vertex 1','Vertex 2','Vertex 3','Vertex 4');
    grid on
  10. Jul 27, 2010 #9
    Is this related to the navigational problem of moving about the surface of the earth, at sea, say? There are many routes from A to B. One of them requires the navigator to set a single bearing direction, but, in general this is not the shortest route, which would be part of a great circle. The shortest route requires the navigator to keep changing the bearing.
  11. Jul 27, 2010 #10
    No, this is just a square in an XY plane which is being transformed in plane.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook