function [M,T] = VVU(fi,F)
% VYPOČTY K BAKALÁŘSKÉ PRÁCI VALENTA TOMÁŠ
%
% VVU pres maticove nasobeni ramene a momentu v urcitem uhlu natoceni kliky kola "fi"
%
% priklad zadani
% ----------------------------
% [M,T] = VVU(fi,F)
% ----------------------------
% fi = 90; %[°]
% F = [0 0 -1500]; % [N]
%
% tvar strednice v bodech v 0°
STREDNICE = load('strednice.txt')./1000; % [m]

x = STREDNICE(:,1);
y = STREDNICE(:,2);
z = STREDNICE(:,3);

Ryy = [cosd(-fi) 0 -sind(-fi);0 1 0;sind(-fi) 0 cosd(-fi)];

% strednice pri fi°
souradnice_strednice2 = Ryy*STREDNICE';
x_s = souradnice_strednice2(1,:);
y_s = souradnice_strednice2(2,:);
z_s = souradnice_strednice2(3,:);

% souradnice pedalu
L3 = 0.065; % [m] vzdalenost pusobiste sily na pedalu od posledniho bodu kliky
x_p = [x_s(end),x_s(end)];
y_p = [y_s(end),y_s(end)+L3];
z_p = [z_s(end),z_s(end)];

Ry = [cosd(fi-90) 0 -sind(fi-90);0 1 0;sind(fi-90) 0 cosd(fi-90)]; % [°] matice rotace kolem osy "y"

% na alokovani matic pro zrychleni vypoctu
r = zeros(length(x_s),3);
rr = zeros(length(x_s),3);
FF = zeros(length(x_s),3);
rrr = zeros(length(x_s),3);
FFF = zeros(length(x_s),3);
M = zeros(length(x_s),3);
T = zeros(length(x_s),3);
for i=1:length(x_s)
    if i==1
        r(1,1) = x_p(end)-x_s(1); % rameno x
        r(1,2) = y_p(end)-y_s(1); % rameno y
        r(1,3) = z_p(end)-z_s(1); % rameno z
        rr(1,:) = (Ry*r(1,:)')'; % orotovane rameno pro vypocet lokalnih momentu kolem y
        FF(1,:) = (Ry*F(1,:)')'; % orotovana sila pro vypocet lokalnih momentu kolem y
        k = (y(1)-y(2))/(z(1)-z(2)); % smernice primky dane prvnim a druhym bodem strednice
        alpha(2,1) = atand(k); % uhel primky dane prvnim a druhym bodem strednice - slouzi pro rotaci kolem osy "z"
        alpha(1,1) = atand(k);
        Rz = [cosd(alpha(1,i)) sind(alpha(1,i)) 0;-sind(alpha(1,i)) cosd(alpha(1,i)) 0;0 0 1]; % [°] matice rotace kolem osy "z"
        rrr(1,:) = (Rz*rr(1,:)')'; % orotovane rameno pro vypocet lokalnih momentu kolem z
        FFF(1,:) = (Rz*FF(1,:)')'; % orotovana sila pro vypocet lokalnih momentu kolem z
        M(1,:) = cross(rrr(1,:),FFF(1,:)); % vnitrni momentove ucinky
        T(1,:) = -F(1,:)*Ry*Rz; % vnitrni silove ucinky
    elseif i>1 && i<length(x_s)
        r(i,1) = x_p(end)-x_s(i); % rameno x
        r(i,2) = y_p(end)-y_s(i); % rameno y
        r(i,3) = z_p(end)-z_s(i); % rameno z
        rr(i,:) = (Ry*r(i,:)')'; % orotovane rameno pro vypocet lokalnih momentu kolem y
        FF(i,:) = (Ry*F(1,:)')'; % orotovana sila pro vypocet lokalnih momentu kolem y
        k = (y(i)-y(i+1))/(z(i)-z(i+1)); % smernice primky dane dvema sousednimy body strednice
        alpha(2,i) = atand(k);
        alpha(1,i) = (alpha(2,i)+alpha(2,i-1))/2; % aritmeticky prumer uhlu dvou sousednich primek - slouzi pro rotaci kolem osy "z"
        Rz = [cosd(alpha(1,i)) sind(alpha(1,i)) 0;-sind(alpha(1,i)) cosd(alpha(1,i)) 0;0 0 1]; % [°] matice rotace kolem osy "z"
        rrr(i,:) = (Rz*rr(i,:)')'; % orotovane rameno pro vypocet lokalnih momentu kolem z
        FFF(i,:) = (Rz*FF(i,:)')'; % orotovana sila pro vypocet lokalnih momentu kolem z
        M(i,:) = cross(rrr(i,:),FFF(i,:)); % vnitrni momentove ucinky
        T(i,:) = -F(1,:)*Ry*Rz; % vnitrni silove ucinky
    elseif i==length(x_s)
        r(i,1) = x_p(end)-x_s(i); % rameno x
        r(i,2) = y_p(end)-y_s(i); % rameno y
        r(i,3) = z_p(end)-z_s(i); % rameno z
        rr(i,:) = (Ry*r(i,:)')'; % orotovane rameno pro vypocet lokalnih momentu kolem y
        FF(i,:) = (Ry*F(1,:)')'; % orotovana sila pro vypocet lokalnih momentu kolem y
        k = (y(i-1)-y(i))/(z(i-1)-z(i)); % smernice primky dane predposlednim a poslednim bodem strednice
        alpha(1,i) = atand(k); % uhel primky dane predposlednim a poslednim bodem strednice - slouzi pro rotaci kolem osy "z"
        Rz = [cosd(alpha(1,i)) sind(alpha(1,i)) 0;-sind(alpha(1,i)) cosd(alpha(1,i)) 0;0 0 1]; % [°] matice rotace kolem osy "z"
        rrr(i,:) = (Rz*rr(i,:)')'; % orotovane rameno pro vypocet lokalnih momentu kolem z
        FFF(i,:) = (Rz*FF(i,:)')'; % orotovana sila pro vypocet lokalnih momentu kolem z
        M(i,:) = cross(rrr(i,:),FFF(i,:)); % vnitrni momentove ucinky
        T(i,:) = -F(1,:)*Ry*Rz; % vnitrni silove ucinky
    end
end

% --------- VYKRESLOVANI ---------
% plot3(x_s,y_s,z_s,'o','LineWidth',4)
% hold on
% plot3(x_s,y_s,z_s,'-','LineWidth',2)
% plot3(x_p,y_p,z_p,'r','LineWidth',2)
% plot3(x_p(end),y_p(end),z_p(end),'o','Color','green','LineWidth',3,'MarkerSize',12)
% plot3(x_p(end),y_p(end),z_p(end),'o','Color','green','LineWidth',3,'MarkerSize',3)
% naznaceni sili
% plot3([x_p(end),x_p(end)+(F(1)/1e5)],[y_p(end),y_p(end)+(F(2)/1e5)],[z_p(end),z_p(end)+(abs(F(3))/1e5)],'-','Color','green','LineWidth',3)
% grid on
% fontsize = 15;
% title('Klika s pedalem','FontSize',fontsize)
% xlabel('x [m]','FontSize',fontsize)
% ylabel('y [m]','FontSize',fontsize)
% zlabel('z [m]','FontSize',fontsize)
% view(-90,0)
% axis equal
% text('Interpreter','latex','String','$$\vec{F}$$','Position',[x_p(end)+(F(1)/1e5), y_p(end)+(F(2)/1e5), z_p(end)+(F(3)/1e5)],...
% 	'FontSize',20)
% set(gca,'FontSize',fontsize)
% 
% print '-depsc' 'c:/Users/Tomáš Valenta/Škola/Vejška/_bachelory thesis/zprava/obrazky/10_strednice_60.eps' 

end

