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

AI Thread Summary
The discussion centers on the calculation of the radius of curvature for trajectories in a plane using Frenet-Serret formulas and a perpendicular bisector approach. While both methods yield consistent results for trajectories generated solely by rotation, discrepancies arise when mixed transformations (involving both rotation and translation) are applied. This inconsistency raises questions about whether any planar transformation can be expressed solely in terms of rotation. In two dimensions, transformations that include translation without rotation result in an infinite radius of curvature, complicating the analysis. The conversation highlights the complexity of curvature calculations when varying transformation parameters, emphasizing the need for clarity in the relationship between rotation and translation in trajectory analysis.
priyansh
Messages
17
Reaction score
0
Hi,

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?

Thanks.

Regards,
Priyanshu
 
Mathematics news on Phys.org
Any comments guys!
 
What do you mean by "a trajectory generated using mixed transformation (involving both rotation and translation)"?
 
I mean the homogeneous transformation matrix contains entry for both rotation and translation. Also, the rotation and translation vary as the trajectory is generated.
 
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.
 
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.
 
can you show your calculations?
 
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
clc

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;

figure
plot(Sx,Sy)
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(:,2)/(sum(dr(:,2).^2))^0.5,...
dr(:,3)/(sum(dr(:,3).^2))^0.5,...
dr(:,4)/(sum(dr(:,4).^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,...
dT(:,2)/(sum(dr(:,2).^2))^0.5,...
dT(:,3)/(sum(dr(:,3).^2))^0.5,...
dT(:,4)/(sum(dr(:,4).^2))^0.5,...
dT(:,5)/(sum(dr(:,5).^2))^0.5];

k = [(sum(dTds(:,1).^2))^0.5,...
(sum(dTds(:,2).^2))^0.5,...
(sum(dTds(:,3).^2))^0.5,...
(sum(dTds(:,4).^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
plot(Pnew(1,:),Pnew(2,:),'-k',P1(1,:),P1(2,:),'-r',P2(1,:),P2(2,:),'-b',P3(1,:),...
P3(2,:),'-g',P4(1,:),P4(2,:),'-y');
text(Pnew(1,1),Pnew(2,1),'1');
text(Pnew(1,2),Pnew(2,2),'2');
text(Pnew(1,3),Pnew(2,3),'3');
text(Pnew(1,4),Pnew(2,4),'4');
axis(2*[-10 10 -10 10]*Scale);
grid on;
pause(0.01);
Pprev = Pnew;
Tprev = Tnew;
% pause;
end

figure
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

figure
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

figure
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
 
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.
 
  • #10
No, this is just a square in an XY plane which is being transformed in plane.
 
Back
Top