「自動のりかえ駅を使って複数編成を同時運転」の編集履歴(バックアップ)一覧はこちら
追加された行は緑色になります。
削除された行は赤色になります。
#javascript(){{
<script language="javascript">
<!--// javascript by @うさ-->
var hWin;
var HTM1;
function MakeChild()
{
hWin=window.open("","","width=800,height=600,resizable=1");
window.hWin.document.write(' \
<html><head><style type=\"text\/css\">\n\
#sDiv0, #sDiv1, #sDiv2,#sDiv3{\n\
position:absolute; height:1; width:1; font-family:arial black; font-size:9px; color:#FFFFAA; z-index:10;\n\
}\n\
#sDiv4, #sDiv5, #sDiv6, #sDiv7, #sDiv8, #sDiv9{\n\
position:absolute; height:1; width:200; font-family:arial black; font-size:9px; color:#FFFFAA; z-index:10;\n\
}\n\
<\/style><script lanauage=\"JavaScript\">\n\
<!--\n\
var ns=(document.layers);\n\
var ie=(document.all);\n\
var w3=(document.getElementById && self.innerWidth && (window.pageXOffset>-1));\n\
var allDivs = new Array(10);\n\
var dots = new Array(10);\n\
var documentWidth,documentHeight;\n\
var vel= 4;\n\
var dy = 0;\n\
var Maxright = 950;\n\
var pi = Math.PI;\n\
var upstop = pi\/2;\n\
var dnstop = pi\/3;\n\
var stopdot,stopvel;\n\
var ii=0;\n\
function dot(i) \n\
{\n\
this.X = 400;\n\
this.Y = 400;\n\
this.R = 0;\n\
this.dr = .00;\n\
this.di = 0;\n\
this.preR = 0;\n\
this.predr = 0;\n\
this.n = 0;\n\
}\n\
function initAll(){\n\
if(!ns && !ie && !w3) return;\n\
for(dNum=0; dNum<10; ++dNum){\n\
if(ie) allDivs[dNum]=eval(\'document.all.sDiv\'+dNum+\'.style\');\n\
else if(ns) allDivs[dNum]=eval(\'document.layers[\"sDiv\'+dNum+\'\"]\');\n\
else if(w3) allDivs[dNum]=eval(\'document.getElementById(\"sDiv\'+dNum+\'\").style\');\n\
dots[dNum] = new dot(dNum);\n\
} \n\
dots[1].R = pi\/2;\n\
dots[2].R = pi;\n\
dots[3].R = pi\/2*3;\n\
dots[0].dr = 0.01;\n\
dots[1].dr = dots[0].dr*1.2;\n\
dots[2].dr = dots[0].dr;\n\
dots[3].dr = dots[0].dr;\n\
dots[6].dr = dots[0].dr;\n\
allDivs[4].left =300*Math.cos(upstop)+400;\n\
allDivs[4].top =-200*Math.sin(upstop)+270;\n\
allDivs[5].left =300*Math.cos(dnstop)+400;\n\
allDivs[5].top =-200*Math.sin(dnstop)+270;\n\
setTimeout(\"startanimate()\", 2000);\n\
}\n\
function animate(){\n\
for(i=0; i<4; ++i){\n\
allDivs[i].left=dots[i].X;\n\
allDivs[i].top =dots[i].Y;\n\
\n\
\n\
dots[i].X =300*Math.cos(dots[i].R)+400;\n\
dots[i].Y =-200*Math.sin(dots[i].R)+300;\n\
dots[i].preR = dots[i].R;\n\
dots[i].R += dots[i].dr;\n\
if(dots[i].R>2*pi){dots[i].R -=2*pi;dots[i].n=1;}\n\
if(dots[i].R<0){dots[i].R +=2*pi;dots[i].n=1;}\n\
if((dots[i].dr>0)&&( (dots[i].R-upstop)*(dots[i].preR-upstop)<0 )&&dots[i].n!=1){\n\
stopdot = i;\n\
stopvel = dots[i].dr;\n\
dots[i].dr = 0;\n\
}\n\
if((dots[i].dr>0)&&( (dots[i].R-dnstop)*(dots[i].preR-dnstop)<0 )&&dots[i].n!=1){\n\
if(stopdot>-1){dots[stopdot].dr = stopvel;}\n\
stopdot = -1; \n\
}\n\
if(ii>60){\n\
ii=0;\n\
}\n\
dots[i].n=0;\n\
ii++;\n\
}\n\
}\n\
window.onload=initAll\n\
function startanimate() { \n\
setInterval(\"animate()\", 5);\n\
}\n\
\/\/End-->\n\
<\/script>\n\
<TITLE>自動のりかえ駅を活用した周回線<\/TITLE><\/head>\n\
<body bgcolor=\"#000066\">\n\
<div id=\"sDiv0\">壱<\/div>\n\
<div id=\"sDiv1\">弐<\/div>\n\
<div id=\"sDiv2\">参<\/div>\n\
<div id=\"sDiv3\">四<\/div>\n\
<div id=\"sDiv4\">自動のりかえ駅(自動)<\/div>\n\
<div id=\"sDiv5\">自動のりかえ駅(手動発車)<\/div>\n\
<div id=\"sDiv6\"><\/div>\n\
<div id=\"sDiv7\"><\/div>\n\
<div id=\"sDiv8\"><\/div>\n\
<div id=\"sDiv9\"><\/div>\n\
<\/body>\n\
<\/html>');
window.hWin.initAll();
}
<!--//
//-->
</script>
}}
#image(http://www9.atwiki.jp/plalayout?cmd=upload&act=open&pageid=77&file=nori3.gif)
(長い路線)+(自動のりかえ駅:手動発車)+(短い路線)+(自動のりかえ駅:自動)+(長い路線)
という形でのレイアウトを考えてみる。周回路線に複数編成を走らせた場合には速度差によっていずれ追突事故が発生してしまいます。そこで自動のりかえ駅を周回路線に組み込み、列車を一時停止させます。一時停止している列車に追突させないために、手動発車ホームと自動発車ホームはできるだけ短い距離で結ぶ必要があります。
下のシミュレーションでは弐号車の速度だけ速くしています。自動のりかえ駅がなければ、前の列車に追突するところですが、うまく調整されています。
#html2(){{{{{{
<FORM><INPUT type="button" name="btnShowChild" value="シミュレーションを見る" onClick="MakeChild()"></FORM>
}}}}}}
#javascript(){{
<script language="javascript">
<!--// javascript by @うさ
var hWin;
var HTM1;
function MakeChild()
{
hWin=window.open("","","width=800,height=600,resizable=1");
window.hWin.document.write(' \
<html><head><style type=\"text\/css\">\n\
#sDiv0, #sDiv1, #sDiv2,#sDiv3{\n\
position:absolute; height:1; width:1; font-family:arial black; font-size:9px; color:#FFFFAA; z-index:10;\n\
}\n\
#sDiv4, #sDiv5, #sDiv6, #sDiv7, #sDiv8, #sDiv9{\n\
position:absolute; height:1; width:200; font-family:arial black; font-size:9px; color:#FFFFAA; z-index:10;\n\
}\n\
<\/style><script lanauage=\"JavaScript\">\n\
<!--\n\
var ns=(document.layers);\n\
var ie=(document.all);\n\
var w3=(document.getElementById && self.innerWidth && (window.pageXOffset>-1));\n\
var allDivs = new Array(10);\n\
var dots = new Array(10);\n\
var documentWidth,documentHeight;\n\
var vel= 4;\n\
var dy = 0;\n\
var Maxright = 950;\n\
var pi = Math.PI;\n\
var upstop = pi\/2;\n\
var dnstop = pi\/3;\n\
var stopdot,stopvel;\n\
var ii=0;\n\
function dot(i) \n\
{\n\
this.X = 400;\n\
this.Y = 400;\n\
this.R = 0;\n\
this.dr = .00;\n\
this.di = 0;\n\
this.preR = 0;\n\
this.predr = 0;\n\
this.n = 0;\n\
}\n\
function initAll(){\n\
if(!ns && !ie && !w3) return;\n\
for(dNum=0; dNum<10; ++dNum){\n\
if(ie) allDivs[dNum]=eval(\'document.all.sDiv\'+dNum+\'.style\');\n\
else if(ns) allDivs[dNum]=eval(\'document.layers[\"sDiv\'+dNum+\'\"]\');\n\
else if(w3) allDivs[dNum]=eval(\'document.getElementById(\"sDiv\'+dNum+\'\").style\');\n\
dots[dNum] = new dot(dNum);\n\
} \n\
dots[1].R = pi\/2;\n\
dots[2].R = pi;\n\
dots[3].R = pi\/2*3;\n\
dots[0].dr = 0.01;\n\
dots[1].dr = dots[0].dr*1.2;\n\
dots[2].dr = dots[0].dr;\n\
dots[3].dr = dots[0].dr;\n\
dots[6].dr = dots[0].dr;\n\
allDivs[4].left =300*Math.cos(upstop)+400;\n\
allDivs[4].top =-200*Math.sin(upstop)+270;\n\
allDivs[5].left =300*Math.cos(dnstop)+400;\n\
allDivs[5].top =-200*Math.sin(dnstop)+270;\n\
setTimeout(\"startanimate()\", 2000);\n\
}\n\
function animate(){\n\
for(i=0; i<4; ++i){\n\
allDivs[i].left=dots[i].X;\n\
allDivs[i].top =dots[i].Y;\n\
\n\
\n\
dots[i].X =300*Math.cos(dots[i].R)+400;\n\
dots[i].Y =-200*Math.sin(dots[i].R)+300;\n\
dots[i].preR = dots[i].R;\n\
dots[i].R += dots[i].dr;\n\
if(dots[i].R>2*pi){dots[i].R -=2*pi;dots[i].n=1;}\n\
if(dots[i].R<0){dots[i].R +=2*pi;dots[i].n=1;}\n\
if((dots[i].dr>0)&&( (dots[i].R-upstop)*(dots[i].preR-upstop)<0 )&&dots[i].n!=1){\n\
stopdot = i;\n\
stopvel = dots[i].dr;\n\
dots[i].dr = 0;\n\
}\n\
if((dots[i].dr>0)&&( (dots[i].R-dnstop)*(dots[i].preR-dnstop)<0 )&&dots[i].n!=1){\n\
if(stopdot>-1){dots[stopdot].dr = stopvel;}\n\
stopdot = -1; \n\
}\n\
if(ii>60){\n\
ii=0;\n\
}\n\
dots[i].n=0;\n\
ii++;\n\
}\n\
}\n\
window.onload=initAll\n\
function startanimate() { \n\
setInterval(\"animate()\", 5);\n\
}\n\
\/\/End-->\n\
<\/script>\n\
<TITLE>自動のりかえ駅を活用した周回線<\/TITLE><\/head>\n\
<body bgcolor=\"#000066\">\n\
<div id=\"sDiv0\">壱<\/div>\n\
<div id=\"sDiv1\">弐<\/div>\n\
<div id=\"sDiv2\">参<\/div>\n\
<div id=\"sDiv3\">四<\/div>\n\
<div id=\"sDiv4\">自動のりかえ駅(自動)<\/div>\n\
<div id=\"sDiv5\">自動のりかえ駅(手動発車)<\/div>\n\
<div id=\"sDiv6\"><\/div>\n\
<div id=\"sDiv7\"><\/div>\n\
<div id=\"sDiv8\"><\/div>\n\
<div id=\"sDiv9\"><\/div>\n\
<\/body>\n\
<\/html>');
window.hWin.initAll();
}
//-->
</script>
}}
#image(http://www9.atwiki.jp/plalayout?cmd=upload&act=open&pageid=77&file=nori3.gif)
(長い路線)+(自動のりかえ駅:手動発車)+(短い路線)+(自動のりかえ駅:自動)+(長い路線)
という形でのレイアウトを考えてみる。周回路線に複数編成を走らせた場合には速度差によっていずれ追突事故が発生してしまいます。そこで自動のりかえ駅を周回路線に組み込み、列車を一時停止させます。一時停止している列車に追突させないために、手動発車ホームと自動発車ホームはできるだけ短い距離で結ぶ必要があります。
下のシミュレーションでは弐号車の速度だけ速くしています。自動のりかえ駅がなければ、前の列車に追突するところですが、うまく調整されています。
#html2(){{{{{{
<FORM><INPUT type="button" name="btnShowChild" value="シミュレーションを見る" onClick="MakeChild()"></FORM>
}}}}}}