車を運転している時に、信号機がどのように見えるかが気になる。
想定:車は60km/hで動いているものとする。信号の手前70mの位置に時刻0にいるものとする。時刻1に信号機の色が青から黄に、時刻4に黄から赤に変わる。信号機の高さは5m、信号機の大きさは25cm、各色同士の距離は10cmとする。運転席に座った時の高さは1.4mとする。
黄色になった瞬間に0.1gの加速度で、赤色になった瞬間に0.3gの加速度で減速する。
ここで、信号機がどう見えるかが気になる。
お絵かきしてみる。
#%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
import math
#initial settings
N=450;dt=0.01;T=N*dt
l=70;v0=60/3.6;H=5.0;h=1.4;tc=1.0;te=4.0
R=0.25;d=0.5;hu=H-h+R/2;hl=H-h-R/2
g=9.8
#variable
yC=0;a1=0.1*g;a2=0.3*g
def project(x,y,z):
r=math.sqrt(y**2+z**2)
return (theta*math.cos(phi),theta*math.sin(phi))
def eye():
global N,dt,T,l,v0,H,h,tc
t=0;v=v0;x=l;y=yC
for i in range(N):
if t<tc:
x1,y1=project(x,y,hu)
x2,y2=project(x,y,hl)
plt.scatter((x1+x2)/2,(y1+y2)/2,color="green",s=100000*abs(y1-y2)/2,alpha=0.1)
#plt.Circle(((x1+x2)/2,(y1+y1)/2),(abs(x1-x2)/2+abs(y1-y2)/2)/2,color="green",alpha=0.1)
x=x-v*dt;
t=t+dt
elif t<te:
x1,y1=project(x,y+d,hu)
x2,y2=project(x,y+d,hl)
plt.scatter((x1+x2)/2,(y1+y2)/2,color="orange",s=100000*abs(y1-y2)/2,alpha=0.1)
#plt.Circle(((x1+x2)/2,(y1+y1)/2),(abs(x1-x2)/2+abs(y1-y2)/2)/2,color="orange",alpha=0.1)
x=x-v*dt;
v=v-a1*dt
t=t+dt
elif t>te:
x1,y1=project(x,y+2*d,hu)
x2,y2=project(x,y+2*d,hl)
plt.scatter((x1+x2)/2,(y1+y2)/2,color="red",s=100000*abs(y1-y2)/2,alpha=0.1)
#plt.Circle(((x1+x2)/2,(y1+y1)/2),(abs(x1-x2)/2+abs(y1-y2)/2)/2,color="orange",alpha=0.1)
x=x-v*dt;
v=v-a2*dt
t=t+dt
#plt.scatter(x1,y1,color="red")
eye()
plt.xlabel("x")
plt.ylabel("y")
plt.title("Drive 409")
plt.xlim(-1.0,1.0)
plt.ylim(0,1.4)
plt.show()
意外と黄色の時間は短いので、ちゃんと減速しきらないと、赤信号で交差点に突っ込むことになって危ない。
気をつけようね。
この記事もこれくらいでParking。
バイバイ!