- #1

em504346

- 1

- 0

clear;

Cd = .5;

Cs = .5;

p = 1.2; %Air density

r = .11303; %radius

m = .4536; %mass

x(1) = 0; %initial position

y(1) = 0;

z(1) = 0;

wx = 0; %initial angular velocity for x

wy = 0;

vx(1) = 14.95; %intial velocity for x

vy(1) = 14.5;

vz(1) = 7.9;

k = -300;

g = 9.81; %gravity

dt = .001;

t = 20;

n = t/dt;

for j = 1:n

wz = j;

for i = 1:n

u = sqrt((vx(i))^2+(vy(i))^2+(vz(i))^2); %v for all components

ax = (-((Cd*p*pi*r^2)*u*vx(i))/(2*m) - ((Cs*p*pi*r^3*(vz(i)*wy-wz*vy(i)))/(2*m)));

ay = (-((Cd*p*pi*r^2)*u*vy(i))/(2*m) - ((Cs*p*pi*r^3*(wz*vx(i)))/(2*m)));

az = ((-g)-((Cd*p*pi*r^2)*u*vz(i))/(2*m) + ((Cs*p*pi*r^3*(-wy*vx(i)))/(2*m)));

Fx = ax*m; %Force for x-component

Fy = ay*m;

Fz = az*m;

vx(i+1) = vx(i) + ((Fx/m)*dt); %Final velocity for x-component

vy(i+1) = vy(i) + ((Fy/m)*dt);

vz(i+1) = vz(i) + ((Fz/m)*dt);

x(i+1) = x(i) + vx(i+1)*dt;

y(i+1) = y(i) + vy(i+1)*dt;

z(i+1) = z(i) + vz(i+1)*dt;

if(x(i+1)>(11.531+ .1524))

break

end

if((y(i+1)>10.9564)&(y(i+1)<11.531))&((z(i+1)>1.8288)&(z(i+1)<2.3254))&((x(i+1)>11.531)&(x(i+1)<(11.531+.1524)))

fprintf('q')

break

end

end

fprintf('number %g',wz);

end

plot3(x,y,z)

grid on

This is a program that shows the force and spin it would take to put a soccer ball into the upper right hand corner of the goal. I found the values I wanted with no spin included. NOw I want to run the program and let it give me back the values of different spin it would take to get to this point of choice. I'm holding everything else constant including one or the other spin components wz or wy and just letting one of them very, wz or wy. I want the the program to tell me the values of spin, but IT IS NOT. Do I need to set the fprintf somewhere specific or what? Any suggestions would be great

THANKS

Cd = .5;

Cs = .5;

p = 1.2; %Air density

r = .11303; %radius

m = .4536; %mass

x(1) = 0; %initial position

y(1) = 0;

z(1) = 0;

wx = 0; %initial angular velocity for x

wy = 0;

vx(1) = 14.95; %intial velocity for x

vy(1) = 14.5;

vz(1) = 7.9;

k = -300;

g = 9.81; %gravity

dt = .001;

t = 20;

n = t/dt;

for j = 1:n

wz = j;

for i = 1:n

u = sqrt((vx(i))^2+(vy(i))^2+(vz(i))^2); %v for all components

ax = (-((Cd*p*pi*r^2)*u*vx(i))/(2*m) - ((Cs*p*pi*r^3*(vz(i)*wy-wz*vy(i)))/(2*m)));

ay = (-((Cd*p*pi*r^2)*u*vy(i))/(2*m) - ((Cs*p*pi*r^3*(wz*vx(i)))/(2*m)));

az = ((-g)-((Cd*p*pi*r^2)*u*vz(i))/(2*m) + ((Cs*p*pi*r^3*(-wy*vx(i)))/(2*m)));

Fx = ax*m; %Force for x-component

Fy = ay*m;

Fz = az*m;

vx(i+1) = vx(i) + ((Fx/m)*dt); %Final velocity for x-component

vy(i+1) = vy(i) + ((Fy/m)*dt);

vz(i+1) = vz(i) + ((Fz/m)*dt);

x(i+1) = x(i) + vx(i+1)*dt;

y(i+1) = y(i) + vy(i+1)*dt;

z(i+1) = z(i) + vz(i+1)*dt;

if(x(i+1)>(11.531+ .1524))

break

end

if((y(i+1)>10.9564)&(y(i+1)<11.531))&((z(i+1)>1.8288)&(z(i+1)<2.3254))&((x(i+1)>11.531)&(x(i+1)<(11.531+.1524)))

fprintf('q')

break

end

end

fprintf('number %g',wz);

end

plot3(x,y,z)

grid on

This is a program that shows the force and spin it would take to put a soccer ball into the upper right hand corner of the goal. I found the values I wanted with no spin included. NOw I want to run the program and let it give me back the values of different spin it would take to get to this point of choice. I'm holding everything else constant including one or the other spin components wz or wy and just letting one of them very, wz or wy. I want the the program to tell me the values of spin, but IT IS NOT. Do I need to set the fprintf somewhere specific or what? Any suggestions would be great

THANKS

Last edited: