Projecting circular motion on axes to derive linear accelerations
Good morning, everyone.
I am trying to create a .csv file that takes linear accelerations on the x and y axes, to recreate a circular motion as in the figure.
I have created the script to trace these values, and was wondering if I might be missing something.
Thanks in advance, i hope i haven’t violated any forum behaviour, in case, i apologise, it’s my first time posting.
% Parametri
r1 = 0.126; % raggio della prima circonferenza (m)
r2 = 0.042; % raggio della seconda circonferenza (m)
omega1 = 1.598; % velocità angolare prima circonferenza (rad/s)
omega2 = 4.794; % velocità angolare seconda circonferenza (rad/s)
dt = 0.0035; % intervallo di tempo (s)
t_total = 2.625; % tempo totale (s)
% Numero totale di punti
N = t_total / dt;
% Preallocazione di variabili
t = (0:N-1)’ * dt;
x = zeros(N, 1);
y = zeros(N, 1);
ax = zeros(N, 1);
ay = zeros(N, 1);
% Moto sulla prima circonferenza
t1 = 0:dt:(pi/omega1);
x(1:length(t1)) = -r1 * cos(omega1 * t1);
y(1:length(t1)) = r1 * sin(omega1 * t1);
ax(1:length(t1)) = -r1 * (omega1^2) * cos(omega1 * t1);
ay(1:length(t1)) = -r1 * (omega1^2) * sin(omega1 * t1);
% Moto sulla seconda circonferenza
% Calcolare il punto di partenza sulla seconda circonferenza (tangente alla prima)
x_shift = r1; % punto di partenza x sulla seconda circonferenza (tangente alla prima)
y_shift = 0; % punto di partenza y sulla seconda circonferenza
t2 = (pi/omega1):dt:t_total;
x(length(t1)+1:length(t1)+length(t2)) = (x_shift + r2) – r2 * cos(omega2 * (t2 – pi/omega1));
y(length(t1)+1:length(t1)+length(t2)) = -(y_shift + r2 * sin(omega2 * (t2 – pi/omega1)));
ax(length(t1)+1:length(t1)+length(t2)) = -r2 * (omega2^2) * cos(omega2 * (t2 – pi/omega1));
ay(length(t1)+1:length(t1)+length(t2)) = r2 * (omega2^2) * sin(omega2 * (t2 – pi/omega1));Good morning, everyone.
I am trying to create a .csv file that takes linear accelerations on the x and y axes, to recreate a circular motion as in the figure.
I have created the script to trace these values, and was wondering if I might be missing something.
Thanks in advance, i hope i haven’t violated any forum behaviour, in case, i apologise, it’s my first time posting.
% Parametri
r1 = 0.126; % raggio della prima circonferenza (m)
r2 = 0.042; % raggio della seconda circonferenza (m)
omega1 = 1.598; % velocità angolare prima circonferenza (rad/s)
omega2 = 4.794; % velocità angolare seconda circonferenza (rad/s)
dt = 0.0035; % intervallo di tempo (s)
t_total = 2.625; % tempo totale (s)
% Numero totale di punti
N = t_total / dt;
% Preallocazione di variabili
t = (0:N-1)’ * dt;
x = zeros(N, 1);
y = zeros(N, 1);
ax = zeros(N, 1);
ay = zeros(N, 1);
% Moto sulla prima circonferenza
t1 = 0:dt:(pi/omega1);
x(1:length(t1)) = -r1 * cos(omega1 * t1);
y(1:length(t1)) = r1 * sin(omega1 * t1);
ax(1:length(t1)) = -r1 * (omega1^2) * cos(omega1 * t1);
ay(1:length(t1)) = -r1 * (omega1^2) * sin(omega1 * t1);
% Moto sulla seconda circonferenza
% Calcolare il punto di partenza sulla seconda circonferenza (tangente alla prima)
x_shift = r1; % punto di partenza x sulla seconda circonferenza (tangente alla prima)
y_shift = 0; % punto di partenza y sulla seconda circonferenza
t2 = (pi/omega1):dt:t_total;
x(length(t1)+1:length(t1)+length(t2)) = (x_shift + r2) – r2 * cos(omega2 * (t2 – pi/omega1));
y(length(t1)+1:length(t1)+length(t2)) = -(y_shift + r2 * sin(omega2 * (t2 – pi/omega1)));
ax(length(t1)+1:length(t1)+length(t2)) = -r2 * (omega2^2) * cos(omega2 * (t2 – pi/omega1));
ay(length(t1)+1:length(t1)+length(t2)) = r2 * (omega2^2) * sin(omega2 * (t2 – pi/omega1)); Good morning, everyone.
I am trying to create a .csv file that takes linear accelerations on the x and y axes, to recreate a circular motion as in the figure.
I have created the script to trace these values, and was wondering if I might be missing something.
Thanks in advance, i hope i haven’t violated any forum behaviour, in case, i apologise, it’s my first time posting.
% Parametri
r1 = 0.126; % raggio della prima circonferenza (m)
r2 = 0.042; % raggio della seconda circonferenza (m)
omega1 = 1.598; % velocità angolare prima circonferenza (rad/s)
omega2 = 4.794; % velocità angolare seconda circonferenza (rad/s)
dt = 0.0035; % intervallo di tempo (s)
t_total = 2.625; % tempo totale (s)
% Numero totale di punti
N = t_total / dt;
% Preallocazione di variabili
t = (0:N-1)’ * dt;
x = zeros(N, 1);
y = zeros(N, 1);
ax = zeros(N, 1);
ay = zeros(N, 1);
% Moto sulla prima circonferenza
t1 = 0:dt:(pi/omega1);
x(1:length(t1)) = -r1 * cos(omega1 * t1);
y(1:length(t1)) = r1 * sin(omega1 * t1);
ax(1:length(t1)) = -r1 * (omega1^2) * cos(omega1 * t1);
ay(1:length(t1)) = -r1 * (omega1^2) * sin(omega1 * t1);
% Moto sulla seconda circonferenza
% Calcolare il punto di partenza sulla seconda circonferenza (tangente alla prima)
x_shift = r1; % punto di partenza x sulla seconda circonferenza (tangente alla prima)
y_shift = 0; % punto di partenza y sulla seconda circonferenza
t2 = (pi/omega1):dt:t_total;
x(length(t1)+1:length(t1)+length(t2)) = (x_shift + r2) – r2 * cos(omega2 * (t2 – pi/omega1));
y(length(t1)+1:length(t1)+length(t2)) = -(y_shift + r2 * sin(omega2 * (t2 – pi/omega1)));
ax(length(t1)+1:length(t1)+length(t2)) = -r2 * (omega2^2) * cos(omega2 * (t2 – pi/omega1));
ay(length(t1)+1:length(t1)+length(t2)) = r2 * (omega2^2) * sin(omega2 * (t2 – pi/omega1)); #circularmotion, #linearacceleration MATLAB Answers — New Questions