Final project: being able to move up or down a level and around building randomly while always being tangent to the line of any function you want to give to it.
echo off
syms theta
pause on
b = -40; % x perspective view
c = 40; % y perspective view
d = 200; % z perspective view
x = 0; % x theta
z = 0; % z theta
sx = 1; % x scaling factor
sy = 1; % y scaling facotr
sz = 1; % z scaling facotr
% wxmin = -60;
% wxmax = 90;
% wymin = -10;
% wymax = 20;
wxmin = -60;
wxmax = 90;
wymin = -40;
wymax = 30;
n = 0; % # of loops
inc5 = 1;
inc2 = 2.25; % going forward increase
pse = .001; % pause delay
dCar = [-6.5 -6.5 -6.5 -6.5 -2.5 -2.5 -.75 -.75 3.25 3.25 4.5 4.5 6.5 6.5 6.5 6.5;
0 0 2.5 2.5 2.5 2.5 4 4 4 4 2.5 2.5 2.5 2.5 0 0;
-2.5 2.5 2.5 -2.5 -2.5 2.5 -2.5 2.5 -2.5 2.5 -2.5 2.5 -2.5 2.5 2.5 -2.5;
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1];
Trans = [1 0 0 0; 0 1 0 0; 0 0 1 0; 0 0 0 1] * dCar; % pushes DP1 off the origan
height = 5;
dBuild = [-5 5 5 -5 -5 5 5 -5; 0 0 0 0 height height height height; 0 0 10 10 0 0 10 10;
1 1 1 1 1 1 1 1];
D = zeros(64,64);
A = [0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1;
1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0;
0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0;
1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0;
0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0;
0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0;
0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0;
0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0;
0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0;
0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0;
0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0;
0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0;
0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1;
0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0;
0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1;
1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0];
B = [0 1 0 1 1 0 0 0;
1 0 1 0 0 1 0 0;
0 1 0 1 0 0 1 0;
1 0 1 0 0 0 0 1;
1 0 0 0 0 1 0 1;
0 1 0 0 1 0 1 0;
0 0 1 0 0 1 0 1;
0 0 0 1 1 0 1 0];
Znew = zeros(64,88);
Znew1 = zeros(64,8);
Znew2 = zeros(64,16);
Z = zeros(8,8);
Zhorz = horzcat(Z,Z); % 8 x 16
Zvert = vertcat(Z,Z); % 16 x 8
Znew3 = zeros(16,8);
Znew4 = zeros(16,64);
Znew5 = zeros(8,64);
Z3 = horzcat(A,Zvert,Zvert,Zvert,Zvert,Zvert,Zvert,Zvert,Zvert,Zvert,Zvert,Zvert,Zvert,Zvert,Zvert,Zvert,Zvert,Zvert,Zvert,Zvert,Zvert,Zvert,Zvert,Zvert,Zvert,Zvert,Zvert,Zvert,Znew4); %16 x 16, 16 x 8, 16 x 64
Z4 = horzcat(Zhorz,B,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Znew5); % 8 x 16, 8 x 8, 8 x 64
Z5 = horzcat(Zhorz,Z,B,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Znew5); % 32 x 8 3rd block of aj
Z6 = horzcat(Zhorz,Z,Z,B,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Znew5); %32 x 8 4th block of aj
Z7 = horzcat(Zhorz,Z,Z,Z,B,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Znew5);
Z8 = horzcat(Zhorz,Z,Z,Z,Z,B,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Znew5); % 16 X 8
Z9 = horzcat(Zhorz,Z,Z,Z,Z,Z,B,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Znew5); % 16 X 8
Z10 = horzcat(Zhorz,Z,Z,Z,Z,Z,Z,B,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Znew5); % 16 X 8
Z11 = horzcat(Zhorz,Z,Z,Z,Z,Z,Z,Z,B,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Znew5); % 16 X 8
Z12 = horzcat(Zhorz,Z,Z,Z,Z,Z,Z,Z,Z,B,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Znew5); % 16 X 8
Z13 = horzcat(Zhorz,Z,Z,Z,Z,Z,Z,Z,Z,Z,B,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Znew5); % 8 x 16, 8 x 8, 8 x 64
Z14 = horzcat(Zhorz,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,B,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Znew5); % 32 x 8 3rd block of aj
Z15 = horzcat(Zhorz,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,B,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Znew5); %32 x 8 4th block of aj
Z16 = horzcat(Zhorz,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,B,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Znew5);
Z17 = horzcat(Zhorz,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,B,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Znew5); % 16 X 8
Z18 = horzcat(Zhorz,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,B,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Znew5); % 16 X 8
Z19 = horzcat(Zhorz,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,B,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Znew5); % 16 X 8
Z20 = horzcat(Zhorz,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,B,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Znew5); % 16 X 8
Z21 = horzcat(Zhorz,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,B,Z,Z,Z,Z,Z,Z,Z,Z,Z,Znew5); % 16 X 8
Z22 = horzcat(Zhorz,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,B,Z,Z,Z,Z,Z,Z,Z,Z,Znew5); % 16 X 8
Z23 = horzcat(Zhorz,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,B,Z,Z,Z,Z,Z,Z,Z,Znew5); % 16 X 8
Z24 = horzcat(Zhorz,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,B,Z,Z,Z,Z,Z,Z,Znew5); % 8 x 16, 8 x 8, 8 x 64
Z25 = horzcat(Zhorz,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,B,Z,Z,Z,Z,Z,Znew5); % 32 x 8 3rd block of aj
Z26 = horzcat(Zhorz,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,B,Z,Z,Z,Z,Znew5); %32 x 8 4th block of aj
Z27 = horzcat(Zhorz,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,B,Z,Z,Z,Znew5);
Z28 = horzcat(Zhorz,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,B,Z,Z,Znew5); % 16 X 8
Z29 = horzcat(Zhorz,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,B,Z,Znew5); % 16 X 8
Z30 = horzcat(Zhorz,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,Z,B,Znew5); % 16 X 8
Zall = vertcat(Z3,Z4,Z5,Z6,Z7,Z8,Z9,Z10,Z11,Z12,Z13,Z14,Z15,Z16,Z17,Z18,Z19,Z20,Z21,Z22,Z23,Z24,Z25,Z26,Z27,Z28,Z29,Z30); %entire ajacinty martic
% tx1 = -30;
tx2 = 0;
tx3 = 0;
ty1 = 0;
ty2 = 0;
ty3 = 0;
% tz1 = 0;
tz2 = 0;
tz3 = 0;
% function1 = 4
array = 0;
y = pi;
row = 0;
col = .5;
sn = 1;
dession = 0;
varx2=0;
varx3=0;
varx4=0;
varx5=0;
varx6=0;
varx8=0;
varx11=0;
varx12=0;
varx13=0;
varx14=0;
varx15=0;
varx17=0;
varx20=0;
varx21=0;
varx22=0;
varx23=0;
varx24=0;
varx26=0;
vary1=0;
vary2=0;
vary5=0;
vary6=0;
vary7=0;
vary8=0;
vary10=0;
vary11=0;
vary14=0;
vary15=0;
vary16=0;
vary17=0;
vary19=0;
vary20=0;
vary23=0;
vary24=0;
vary25=0;
vary26=0;
Y = zeros(8,8);
while n < 8
dession = randi([0,3]);
DP0 = [1 0 0 0; 0 1 0 0; 0 0 1 0; 0 0 0 1] * dBuild;
DP1 = [1 0 0 0; 0 1 0 0; 0 0 1 -40*vary1; 0 0 0 1] * dBuild;
DP2 = [1 0 0 -30*varx2; 0 1 0 0; 0 0 1 -40*vary2; 0 0 0 1] * dBuild;
DP3 = [1 0 0 -30*varx3; 0 1 0 0; 0 0 1 0; 0 0 0 1] * dBuild;
DP4 = [1 0 0 30*varx4; 0 1 0 0; 0 0 1 0; 0 0 0 1] * dBuild;
DP5 = [1 0 0 30*varx5; 0 1 0 0; 0 0 1 -40*vary5; 0 0 0 1] * dBuild;
DP6 = [1 0 0 30*varx6; 0 1 0 0; 0 0 1 40*vary6; 0 0 0 1] * dBuild;
DP7 = [1 0 0 0; 0 1 0 0; 0 0 1 40*vary7; 0 0 0 1] * dBuild;
DP8 = [1 0 0 -30*varx8; 0 1 0 0; 0 0 1 40*vary8; 0 0 0 1] * dBuild;
DP9 = [1 0 0 0; 0 1 0 10; 0 0 1 0; 0 0 0 1] * dBuild;
DP10 = [1 0 0 0; 0 1 0 10; 0 0 1 -40*vary10; 0 0 0 1] * dBuild;
DP11 = [1 0 0 -30*varx11; 0 1 0 10; 0 0 1 -40*vary11; 0 0 0 1] * dBuild;
DP12 = [1 0 0 -30*varx12; 0 1 0 10; 0 0 1 0; 0 0 0 1] * dBuild;
DP13 = [1 0 0 30*varx13; 0 1 0 10; 0 0 1 0; 0 0 0 1] * dBuild;
DP14 = [1 0 0 30*varx14; 0 1 0 10; 0 0 1 -40*vary14; 0 0 0 1] * dBuild;
DP15 = [1 0 0 30*varx15; 0 1 0 10; 0 0 1 40*vary15; 0 0 0 1] * dBuild;
DP16 = [1 0 0 0; 0 1 0 10; 0 0 1 40*vary16; 0 0 0 1] * dBuild;
DP17 = [1 0 0 -30*varx17; 0 1 0 10; 0 0 1 40*vary17; 0 0 0 1] * dBuild;
DP18 = [1 0 0 0; 0 1 0 -10; 0 0 1 0; 0 0 0 1] * dBuild;
DP19 = [1 0 0 0; 0 1 0 -10; 0 0 1 -40*vary19; 0 0 0 1] * dBuild;
DP20 = [1 0 0 -30*varx20; 0 1 0 -10; 0 0 1 -40*vary20; 0 0 0 1] * dBuild;
DP21 = [1 0 0 -30*varx21; 0 1 0 -10; 0 0 1 0; 0 0 0 1] * dBuild;
DP22 = [1 0 0 30*varx22; 0 1 0 -10; 0 0 1 0; 0 0 0 1] * dBuild;
DP23 = [1 0 0 30*varx23; 0 1 0 -10; 0 0 1 -40*vary23; 0 0 0 1] * dBuild;
DP24 = [1 0 0 30*varx24; 0 1 0 -10; 0 0 1 40*vary24; 0 0 0 1] * dBuild;
DP25 = [1 0 0 0; 0 1 0 -10; 0 0 1 40*vary25; 0 0 0 1] * dBuild;
DP26 = [1 0 0 -30*varx26; 0 1 0 -10; 0 0 1 40*vary26; 0 0 0 1] * dBuild;
Dall=horzcat(DP0, DP1, DP2,DP3,DP4,DP5,DP6,DP7,DP8,DP9,DP10,DP11,DP12,DP13,DP14,DP15,DP16,DP17,DP18,DP19,DP20,DP21,DP22,DP23,DP24,DP25,DP26);
if dession == 0
ampx = 30;
ampy = 20;
inc5 = 1;
sn = 2;
vx =0;
vz =5;
end
if dession == 1
ampx = 15;
ampy = 20;
inc5 = 1;
sn = 1;
vx =15;
vz =5;
end
if dession == 2
ampx = 15;
ampy = 20;
inc5 = 1;
sn = 1;
vx =15;
vz =5;
end
if dession == 3
ampx = 15;
ampy = 20;
inc5 = 1;
sn = 1;
vx =15;
vz =5;
end
if dession == 4
ampx = 15;
ampy = 20;
sn = 1;
vx =15;
vz =5;
end
if dession == 5
ampx = 15;
ampy = 20;
sn = 1;
vx =15;
vz =5;
end
if dession == 6
ampx = 15;
ampy = 20;
sn = 1;
vx =15;
vz =5;
end
if dession == 7
ampx = 15;
ampy = 20;
sn = 1;
vx =15;
vz =5;
end
f=[ampx*inc5*cos(theta);0;ampy*inc5*sin(sn * theta)];
velocity=diff(f,theta,1);
for newstep = 0 : pi/50 : 2*pi/1
if dession == 2
ty1 =ty1 + pi/30;
% dession = 3;
if ty1 >= 20
ty1 = -10;
end
end
if dession == 3
ty1 =ty1 + -pi/30;
% dession = 3;
if ty1 <= -20
ty1 = 10;
end
end
if dession == 4
inc5 = inc5 + pi/50;
end
location=subs(f,theta,newstep);
direction=subs(velocity,theta,newstep);
y = pi+ atan2(direction(3,1),direction(1,1));
tx1 = vx+location(1,1)-15;
ty1 = ty1 + location(2,1);
tz1 = vz+ location(3,1);
DP = carFunction1(x,y,z,tx1,ty1,tz1,tx2,ty2,tz2,tx3,ty3,tz3,sx,sy,sz,Trans);
carFunction6(b,c,d,pse,wxmin,wxmax,wymin,wymax,DP,Dall,Zall);
end
n = n + 1;
if dession > 4
dession = 0;
end
end
pause off