ただのメモ

他の人に見せても良い方のメモ

信号機の見え方

車を運転している時に、信号機がどのように見えるかが気になる。

想定:車は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)
    theta=math.atan2(r,abs(x))
    phi=math.atan2(z,y)
    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()

 

f:id:medical-science:20220410154706p:plain



 

意外と黄色の時間は短いので、ちゃんと減速しきらないと、赤信号で交差点に突っ込むことになって危ない。

気をつけようね。

この記事もこれくらいでParking。

バイバイ!