飯田図書館に向かう途中、松尾城の国道256号線で交通事故にあった。
事故時の運転中の私の感覚は以下の通り。
・軽乗用車が左に停車しているな。危ないなあ。こんな所に止めて。
↓
・私の前を走る車が対向車に気を付けながら、軽乗用車を追い越したな。
↓
・私も前の車に合わせて軽乗用車を抜こう。
↓
・無事軽乗用車を抜いたな。
↓
・突然後方で大きな音と衝撃!
↓
・何が起きたんだ!!
大きな異物が道路に落ちていてそれに衝突したのか?
何もなかったはずだが・・・。
↓
・慌てて車を止めて、後ろを見る。
軽乗用車が家の駐車場に半分くらい頭を出して止まっている。
えー軽乗用車にぶつかったのか???
うそでしょ。今問題なく抜いたじゃないか!!
その時はなんでぶつかったのか理解できなかったが、相手の車がサイドミラーで後方確認せず、左側の家の駐車場にバックで入るために、ハンドルを右に切ったからである。
警察の事情聴取では、いくら相手に非があるといえ、動いている車同士の接触事故では過失責任は両者にあるという。保険会社も過失責任の割合は7:3だという。彼らは事故対応のシナリオ通りに主張するのだろうが、どうしたって納得できない。そこで、車の衝突個所から事故のシミレーションをJavScriptで作成し、保険会社に送り付けた。シミュレーションでは事故当時の感覚がよく再現されている。
シミレーションプログラム(時速30㎞の場合)
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.6.0/p5.js"></script>
<script>
//2021-08-18 ver3 diaplay the mouse position, 視野角追加
//initial condition
// On figure
// 最小回転半径 4.4m --> 110
// body size L=3.395m --> 85
// W=1.475m --> 37
// 軽乗用車回転速度 --> 1degree/0.25sec
// 軽自動車の0度位置 --> 回転中心より55、ホイールベースー後端:-11
// 軽トラspeed 40km/h
// 11m/sec --> 275/sec : 480/1.75sec
// 軽トラ初期位置(接触前0.4秒前)
// 4.4m/0.4sec@40km --> 111
//
let rectWidth = 85
let rectHeight = 37;
//let x = -rectWidth;
let x = -83; // 軽トラ初期位置(接触0.4秒前)時速30㎞-->-83
let y = 110;
let angle=0;
function setup() {
createCanvas(480, 400);
fill(0);
angleMode(DEGREES); //to use degrees instead of radians
t0 =millis();
}
function draw() {
background(240);
drawGrid();
translate(240, 200); // move the origin to the pivot point
push(); // mitubishi kei rotation
// then rotate the grid around the pivot point by a
// number of degrees equal to the frame count of the sketch
if(angle<=90){
rotate(angle);
fill(255);
ellipse(0, 0, 220); //回転半径4.4m
fill('grey');
rect(-11,55,85,37); //rect(x,y, w,h)
line(0,0,0,110) // line(始点のx,y座標, 終点のx,y座標);
text('(0,0)', 1,1);
if (mouseIsPressed == true && 0<mouseX && mouseX<480 && 0<mouseY && mouseY<400) {
angle = angle+0.8; // 軽乗用車の回転速度
if(89<angle && angle<90) {
angle=0;
x=-110;
t0 =millis();
}
}
text('角度 ' + angle.toFixed(1) + '度', 10, 50);
t1 =millis();
//text((t1-t0).toFixed(1), 10, 0);
}
pop();
push(); // kei-track
//stroke('grey');
// make a rectangle
fill(255);
rect(x, y, rectWidth, rectHeight);
// https://www.w3schools.com/js/js_if_else.asp
//if(x > width) {
//x = -rectWidth;
//x = -240;
//}
if (mouseIsPressed == true && 0<mouseX && mouseX<480 && 0<mouseY && mouseY<400) {
x += 5.3; //軽トラの速度 時速30㎞ --> 5.3
}
//軽トラの前進距離表示
let distance = ((x+85+26)*0.04).toFixed(2);
fill(0);
text(distance+'m', x+85,145);
//視野角描画
stroke('red');
drawingContext.setLineDash([3, 3]);
line(85+x,130, 85+26+x,99); //視野角100度/2
pop();
//凡例作図
push();
fill('grey');
rect(120,-160,85,37);
fill(0);
text('軽乗用車', 120, -160);
fill(255);
rect(120,-100,85,37);
fill(0);
text('軽トラ', 120, -100);
fill(0);
text('視野角100度', 120, -45);
stroke('red');
drawingContext.setLineDash([3, 3]);
line(120,-40, 200, -40);
pop();
if (keyIsPressed === true) { //何らかのKeyを押しながらマウスクリックすると150msec Delay
sleep(150);
}
if (0<mouseX && mouseX<480 && 0<mouseY && mouseY<400) { // mouse座標のメートル表示
mouse();
}
}
// マウス位置の表示関数 110px=4.4m --> 1px=0.04m
function mouse() {
let mx;
let my;
mx = ((mouseX-240)*0.04).toFixed(2);
my = (-(mouseY-200)*0.04).toFixed(2);
text("x: " + str(mx) + ", y:" + str(my), 10, 180);
}
// grid表示
function drawGrid() {
stroke(200);
fill(120);
for (var x=-width; x < width; x+=40) {
line(x, -height, x, height);
//text(x, x+1, 12);
}
for (var y=-height; y < height; y+=40) {
line(-width, y, width, y);
//text(y, 1, y+12);
}
}
// sleep
function sleep(waitMsec) {
var startMsec = new Date();
// 指定ミリ秒間だけループさせる(CPUは常にビジー状態)
while (new Date() - startMsec < waitMsec);
}
// pagereload for reset
function pageReload() {
window.location.reload();
}
</script>
</head>
<body>
<div style="font-size: 16px; font-weight: bold;">衝突シミュレーション</div>
<ol style="font-size: 14px;">
<li>軽乗用車が最小回転半径(4.4m)で車庫に入るとき、時速30㎞の軽トラが軽乗用車を追い越すシミュレーションです。</li>
<li>初期状態は衝突0.5秒前の状態です。(軽乗用車が道路と水平に停車している状態です。)</li>
<li>図内でマウスを押すと動作し、離すと止ります。押し続けると動作が繰り返されます。</li>
<li>何かのキー(例シフトキー)を押しながらマウスを押すとスロー動作になります。</li>
<li>軽乗用車が90度まで回転すると、初期状態に戻ります。</li>
<li>図のグリッド間隔は1.6mです。x,yはマウス座標のメートル表示で、原点は(0,0)です。</li>
<li>軽トラが2.5m進んだ時点(約0.2秒後)で、軽トラの視界から軽乗用車が消えます。</li>
<li>軽乗用車の角度が約16度の時、軽トラの最後尾で接触が発生しており、軽トラは事故回避不可能です。</li>
</ol>
<p style="font-size: 16px; font-weight: bold;">計算条件</p>
<ul style="font-size: 14px;">
<li>軽自動車サイズ:3395㎜x1475㎜、 ホイールベース:2430㎜</li>
<li>最小回転半径:4.4m</li>
<li>軽トラ衝突部:最後尾より50~60㎝</li>
<li>軽トラ走行速度:30㎞/h、 軽乗用車の回転速度:90度/2.5秒</li>
</ul>
<input type="button" value="リセット" onclick="pageReload()">
</body>
</html>
相手の車の接触個所:前方右角に接触痕。よく見るとタイヤにも接触時の擦れがある。
私の車の接触部:左後輪タイヤから後ろに接触痕。
追記(9/16):
結果は8:2。その代わり相手の修理代費用は支払わないことで折り合いをつけた。
最近はバックモニター付きのカーナビを備えている自動車が多いが、とくにおばさんたちはその画面を見て運転判断をしているきらいがある。今回の相手も69歳のおばさんで、目視による後方確認を怠ったと言っていた。
ドライブレコーダーを備える車も増えているのだから、事故時の動画データの画像解析から、理論的にどちらに非があるのかわかるはずだが、IT化が遅れている警察や保険会社は、旧態依然とした対応であきれてしまう。
海外の道路交通法や事故対応はどんな風なんだろう・・・。
コメント