rm(list=ls()) #require(heR) require(animation) require(rv) par(bg = "white") plot(0:40,-20:20,type="n",xlab="Longitudinal Distance",ylab="Wave Height") ShipFloatCenterXLoc<-0 ShipFloatCenterYLoc<-0 Beam<-8 Depth<-3 deltaTheta<-pi/8 h<-sqrt(((Beam/2)^2)+((Depth/2)^2)) v1<-c(-1,0,1,0,-1,0,1,0,-1,0,1,0,-1,0,1,0,-1,0,1,0,-1,0,1,0) v2<-c(0,-1,0,1,0,-1,0,1,0,-1,0,1,0,-1,0,1,0,-1,0,1,0,-1,0,1) q<-rnorm(40,mean=0,sd=15) qWave<-c(mean(q[6:40])) respWave<-c(mean(q[1:40])) r<-0 for (n in seq(1,40,by=1)) { r<-c(r,n) v<-rnorm(1,mean=0,sd=15) q<-c(q,v) qWave<-c(qWave,mean(q[seq((6+n),(40+n),by=1)])) respWave<-c(respWave,mean(q[seq((1+n),(40+n),by=1)])) } plot(0:40,seq(-20,20,by=1),type="n",xlab="Ship's Y-Axis",ylab="Ship's Z-Axis") lines(r,qWave,col="blue") Hull<-matrix(c(Beam/2+20,(Depth/2)+(respWave[20]),-Beam/2+20,(Depth/2)+(respWave[m-20]),-Beam/2+20,(-Depth/2)+(respWave[m-20]),Beam/2+20,(-Depth/2)+(respWave[m-20])), nrow = 4, ncol=2, byrow=TRUE) polygon(Hull,border="black",col="gray") ## set animation options oopt <- ani.options(interval = 0.2) ## use a loop to create images one by one for (k in 1:length(v1)) { for (j in seq(0.2,1,by=0.2)) { theta0<-atan(Depth/Beam) m=40+5*(j+(k-1)) Xc1<-(h*cos(theta0+v1[k]*(j*pi/8)+v2[k]*((1*pi/8)-j*pi/8) )) Yc1<-(h*sin(theta0+v1[k]*(j*pi/8)+v2[k]*((1*pi/8)-j*pi/8) )) Xc2<-(h*cos((pi-theta0)+v1[k]*(j*pi/8)+v2[k]*((1*pi/8)-j*pi/8) )) Yc2<-(h*sin((pi-theta0)+v1[k]*(j*pi/8)+v2[k]*((1*pi/8)-j*pi/8) )) Xc3<-(h*cos((pi+theta0)+v1[k]*(j*pi/8)+v2[k]*((1*pi/8)-j*pi/8) )) Yc3<-(h*sin((pi+theta0)+v1[k]*(j*pi/8)+v2[k]*((1*pi/8)-j*pi/8) )) Xc4<-(h*cos((-theta0)+v1[k]*(j*pi/8)+v2[k]*((1*pi/8)-j*pi/8) )) Yc4<-(h*sin((-theta0)+v1[k]*(j*pi/8)+v2[k]*((1*pi/8)-j*pi/8) )) plot((max(0,m-40):max(38,m-2)),seq(-18,20,by=1),type="n",xlab="Ship's Y-Axis",ylab="Ship's Z-Axis") polygon(c(-10,-10,210,210),c(-30,30,30,-30),border="black",col="lightblue") r<-c(r,m) v<-rnorm(1,mean=0,sd=15) q<-c(q,v) qWave<-c(qWave,mean(q[seq((6+m),(40+m),by=1)])) polygon(c(min(r),r,max(r)),c(-40,qWave,-40),border="black",col = "cornflowerblue") respWave<-c(respWave,mean(q[seq((1+m),(40+m),by=1)])) Hull<-matrix(c(Xc1+(m-20),Yc1+(respWave[m-20]),Xc2+(m-20),Yc2+(respWave[m-20]),Xc3+(m-20),Yc3+(respWave[m-20]),Xc4+(m-20),Yc4+(respWave[m-20])), nrow = 4, ncol=2, byrow=TRUE) polygon(Hull,border="black",col="gray") polygon(c((Xc3+(m-20)),seq((Xc3+(m-20)),(Xc4+(m-20))),(Xc4+(m-20))),c((Yc3+(respWave[m-20])),qWave[seq((Xc3+(m-20)),(Xc4+(m-20)))],(Yc4+(respWave[m-20]))), col = "blue2") lines(r,qWave,col="darkblue") ##lines(r,respWave,col="red",lty=2) ##points(m,v) par(new=FALSE) ani.pause() } }