制作記録

坂道でガタガタになる道路と、ずっと戦っている

  • 道路
  • 試行錯誤

道路のかたちは OpenStreetMap のデータから取っています。「この地点とこの地点を、この幅で結ぶ」という線の情報が入っているので、それをたどって細長い板を並べていけば道路になる、はずでした。

平らな場所ならうまくいく

問題は高さです。線のデータには「どこを通るか」は書いてありますが、「その地点が標高何メートルか」は入っていません。地面の高さは自分で調べる必要があります。

そこで、板を置きたい場所の真上から地面に向かって見えない線を下ろし、ぶつかった高さに板を置くようにしました。平地ならこれで問題なく通ります。

坂に入ると崩れる

坂道では、この方法がうまくいきません。

板は1枚ずつ水平に置かれるので、坂の途中に並べると階段状になります。1枚ごとに少しずつ高さが変わり、板と板のあいだに段差が生まれる。上から見ると1本の道路なのに、実際に歩くと引っかかる、という状態でした。

板を長くすると段差の回数は減りますが、今度は坂に対して板が斜めに浮きます。短くすると地面にはよく沿う代わりに、段差の数が増えてガタガタになる。どちらを選んでも、どこかが破綻します。

地面のほうを削る

今は、板を地面に沿わせるだけでなく、道路の上にかぶさっている地面を削る処理を入れています。板の少し上の空間を空にしておくことで、坂の途中でも地面から突き出さないようにする、という考え方です。

ここでもうひとつ引っかかりました。地面を「埋める」処理と「削る」処理は対称ではありません。埋める処理を使うと、指定した高さまでではなく、その高さを含むマス全体が埋まります。結果として、狙った高さより地面が持ち上がる。整地したはずの場所に建物を置いたら、1.5メートルほど埋まっていたことがありました。

いまは、処理をかけたあとで実際の地面の高さを測り直してから、その上にものを置くようにしています。計算どおりの高さを信用しないのが、いちばん確実でした。

まだ解決していない

交差点は今も課題です。板を並べる方式である以上、2本の道路が交わる場所では板が重なります。上から見ると不自然ではないのですが、近づくと段差が見えます。

きれいに解く方法はまだ見つかっていません。