3点を通る円の半径を求む(#7)

【「考え方」であり、
「公式」ではありません】

 3点を通る円の中心座標と半径
の質問リンクから当ページに来られた皆さん!
   http://okwave.jp/qa/q3328350.html
   http://oshiete.goo.ne.jp/qa/3328350.html
   http://oshiete1.watch.impress.co.jp/qa3328350.html  etc.
 当ページは、算出の考え方を示すことで、表計算ソフトなどを使って順次中間値を求め、最終的に題意の半径や座標を容易に求めようとするもので、項数の多い公式丸覚えを求めるものではありません。

 数学試験の解答型としては実数の中間計算値で解答することを許さない場合が多いので、正解として採らない教員も少なくありませんが、間接表現としては間違っていませんし、実際の解答数値としては表計算ソフトの有効数字で合っています。すなわち実務上十分すぎる精度での解が得られる現場ツールです。そこを正確に理解して下さい。

 「公式を覚える」云々は当ページを引用された方の誤解で、公式は覚えずにいつでも何処でも算出する方法を述べています。
 (このページは当サイトの最大アクセスページの一つで、誤解の放置は有害なのでひとこと)

 3点が決定されると接する円が1つ決定される。
 同一平面内と見なせる地図から3点の緯度、経度を求めれば地球半径から3点の相対座標が算出され、この相対座標から円中心Oの相対座標が求まり、Oから3点までの距離が半径として求められる。
 基本的な誤差としては球面を平面と見なすことから発生するが、(北半球では)上辺の短い台形にも近似できるので緯度に上下辺の平均を採用することで緯度誤差を小さくできる。

算出の考え方:
  1.  円の中心は3点から等距離の点。2点から等距離の点は2点を結ぶ線分の垂直2等分線だから、2本の垂直2等分線の交点が円の中心となる。(幾何学的解法)
  2. 円の方程式に3点を代入し3元2次連立方程式として、未知数:中心座標PO(x0,y0),半径Rを求める.(別解:代数的解法)
  3. 半径Rは中心座標PO(x0,y0)から各点P1〜3(x1〜3,y1〜3)までの距離だから3平方の定理で求めればよい.
 3点の座標をそれぞれ
    1(x1,y1)
    2(x2,y2)
    3(x3,y3)
とするとき、  →(3点法試算結果)
  1. 垂直2等分線の交点法
    垂直2等分線(右図破線)の方程式を求めると
交点m1(xm1,ym1)=Pm1{ (x1+x2)/2,(y1+y2)/2} ……(1)
直交勾配は、勾配の逆数の逆符号だから
 勾配α1=−(x2−x1)/(y2−y1)  ……………………………………… (2)
同様に
交点m2(xm2,ym2)=Pm2{ (x2+x3)/2,(y2+y3)/2} ……(3)
直交勾配は、
 勾配α2=−(x3−x2)/(y3−y2)  ……………………………………… (4)
従って垂直2等分線の方程式はそれぞれ
y−ym1=α1(x−xm1) ………(5)
y−ym2=α2(x−xm2) ………(6)
上記2方程式の交点(=円の中心=連立方程式の解を求める)を求めると、下式−上式
(α2−α1)x= +α2・xm2 −α1・xm1−ym2+ym1
∴ x0= {+α2・xm2 −α1・xm1−ym2+ym1} /(α2−α1) …(7)
y0= α1(x0−xm1)+ym1   ……………………………………(8)
∴ R= sqrt{(x1−x0)2 +(y1−y0)2   …………………(9)
or  R= sqrt{(x2−x0)2 +(y2−y0)2  CHK-1
or  R= sqrt{(x3−x0)2 +(y3−y0)2  CHK-2 3値同値でok!

新京成電鉄津田沼−
新津田沼間曲線標識

総武線鉄橋手前Sカーブ
津田沼−新津田沼−前原間は144Rだらけ。津田沼、R右2直角、R左直角、総武交差、R左直角、新津田沼、R右直角………という感じ!転向角が大きいためか計測精度も良い.
 実算出法は、表計算ソフトに布数し(→Excel算出ソフトDL)て中間計算値を順次算出して最終数値を得ると簡単。Rを3種類の方法で算出しているのは3値一致でのエラーチェックである。自力解析の場合はこうした冗長チェックが必須となる。3種の値が違えば、誤差なのかミスなのかの点検が必要になる。
 分母がゼロになる:x1=x2、or x2=x3となる特異点では、唯一違う値を含む組を2と見なして布数する。3値が同値は直線であり半径は算出できない。(07/07/22追記)
  1. 3元2次連立方程式法(別解)
    円の方程式:(x-x0)2+(y-y0)2=R2  ………(未知数:x0, y0,R) より
    (x1-x0)2+(y1-y0)2=R2 ………(1)
    (x2-x0)2+(y2-y0)2=R2 ………(2)
    (x3-x0)2+(y3-y0)2=R2 ………(3)
    が成立する。これを(3)−(2)、及び(2)−(1)とすると、未知数の2次項が総て消去されて未知数x0,y0の2元1次連立方程式となる。すなわち
    (3)−(2): x32−x22+y32−y22 −2(x3−x2)x0−2(y3−y2)y0=0
          2(x3−x2)x0+2(y3−y2)y0= x32−x22+y32−y22
     ………(4)
    (2)−(1): x22−x12+y22−y12 −2(x2−x1)x0−2(y2−y1)y0=0
          2(x2−x1)x0+2(y2−y1)y0= x22−x12+y22−y12
     ………(5)
    (4),(5)の2元1次連立方程式を解けば円の中心座標O(x0, y0が求められる。
    すなわち、行列式を用いたクロネッカーのΔで機械的に求められる.
    上記(4),(5)式を行列で表記すると

    2(x3−x2),  2(y3−y2 * x0 x32−x22+y32−y22
    2(x2−x1),  2(y2−y1y0 x22−x12+y22−y12  ……(4),(5)

    クロネッカーのΔによる一次方程式の解

    1-1, 1-2 ≡(1-1)×(2-2)−(2-1)×(1-2)   ………(行列式の定義)
    2-1, 2-2

    (4),(5)式の行列より            
    Δ= 2(x3−x2),  2(y3−y2)
    2(x2−x1),  2(y2−y1)    ……………………(6)

    Δx0x32−x22+y32−y22,  2(y3−y2)
    x22−x12+y22−y12,  2(y2−y1)    ………(7)

    Δy02(x3−x2),  x32−x22+y32−y22
    2(x2−x1),  x22−x12+y22−y12    ………(8)

    x0=Δx0/Δ  ………………………(9)
    y0=Δy0/Δ ………………………(10)
    以下半径は 項(9)の通り

  1. 上記解法II項(4)、(5)式を直線の方程式の標準形に変形すると、以下の通りで、
       y0−(y3+y2)/2=− {(x3−x2)/(y3−y2)}*{x0−(x3+x2)/2}  ………(4')
       y0−(y2+y1)/2=− {(x2−x1)/(y2−y1)}*{x0−(x2+x1)/2}  ………(5')
    これは解法 I で求めた(5)式(6)式と一致するから、 代数的別解の実質も先の幾何的解と同じく2点を結ぶ線分の垂直2等分線同士の交点を求める計算をしていることになる.
    (07/09/09追補。このページが学生さんから「数学」として参照されていることが分かり、解法II、IIIを補足。鉄ヲタ仕様なら解法 I のみで十分とは思うが、数学解法上の参考としては内容が不足するため補足。きちんと学びたい方はここの様な鉄ヲタ系お遊びサイトに留まらず、数学系のサイトを参照されたい。)

[緯度、経度からの座標換算]    <Earth>

 着目地点を緯度分傾いたX-Y平面と考えて仮原点(0,0)を定め、緯線方向の経度差に緯度の余弦を乗じて簡易算出できる。Google EarthなどWeb地図が緯度・経度絶対座標を表示しており、これを採ると計算しやすい。球面誤差が現れる長距離には適用できない。  地球半径eは、1周が40,001.[km]2πで割った値として式で定義すると楽に扱える。(以下 Δは差の意)
  e=40,001km/2π=+40,001,000/2/pi()[m] ……… EXCEL
  e=40,001km/2π=+40,001,000/2/@pi[m]  ……… 123
 南北方向の距離 X=Re・Δθ      (緯度差Δθ、角度単位はradian)
 東西方向の距離 Y=Re・Δφ・cosθ   (経度差Δφ、緯度θ)
 対角方向の距離 L=Resqrt{Δθ2+(Δφ・cosθ)2
以上の算出で相対座標を求めて前出3-Point法で曲線半径と中心座標を求めることができる。(07/07/23追記)

300R標識
:総武線両国駅上り出発信号付近

[3点円半径の試算]      <Calc>

 Google Earth により航空写真を得て、着目点にカーソルを置いてその緯度・経度表示を読み取る。(他の地図ソフトも可)
 経緯表示の表示単位は1/100秒(約0.3m×0.25m)だが、写真画像の分解能が2m〜0.2m程度だから、写真によっては線路中心が判然とせず、両脇の側線や切り通し、建築物に影響されて読み取り誤差を生じて、下記の通り最大±5%程度の誤差となっているが、正矢による半径推定より4倍ほどは正確。簡易法としては当面適切な方法である。国鉄JRでの幹線山間部や東京山手線内の標準的曲線半径が300Rであったことが良く分かる。両国はかっては総武鉄道の起点で以東の千葉までは800Rが多く、船橋手前のSカーブ500Rなどが例外である。

地球半径 [m]=40,001,000 /2pi()=6,366,356.88 [m](下記算出基準
    緯度1秒=30.864969 [m]  経度1秒=25.069415 [m] (N35.766172度)
緯度X 経度Y 垂直2等分線 半径
公称
誤差
度Deg. 度Deg. 勾配α ( Xm,Ym )
新京成
津田沼
P1 3541 3.6635.684350 140 1 24.66140.023517 基準点 0 0 142.936 144 -0.7
P2 3541 8.6635.685739 140 1 20.81 140.022447 5.919084 77.162 -13.036 142.936
P3 3541 11.3035.686472 140 1 21.85140.023517 -0.844239 195.067 22.186 142.936 97.088104.904
 ※京成津田沼出発直後、切り通しの単線右カーブ144Rで約180゜曲がる部分。
京王調布
相模原線
P1 3539 6.5535.651819 13932 26.85139.540792 基準点 0 0 159.457 173 -7.8
P2 3539 8.0035.652222 13932 28.88 139.541356 5-0.879043 22.377 25.456 159.457
P3 3539 8.6135.652392 13932 31.18139.541994 -0.326395 54.168 79.754 159.457 -94.649128.327
 ※京王相模原線調布出発後左へ90゜曲がる173R部分の引き込み線含む3線部
代々木
南東
P1 35 40 53.11 35.681419 139 42 19.47 139.705408 基準点 0 0 297.405 300 -0.9
P2 3540 54.4835.681800 139 42 14.15 139.703931 0.317036 21.143 -66.688 297.405
P3 3540 56.2235.682283 13942 11.54139.703206 0.820758 69.138 -166.093 297.405 296.686 20.669
 ※中央線千駄ヶ谷−代々木間の盛り土複々線右カーブ
飯田橋 P1 35 42 4.91 35.701364 139 44 40.86 139.744683 基準点 0 0 326.026 300 8.7
P2 3542 7.3635.702044 139 44 44.5 139.745694 -0.828845 37.810 45.617 326.026
P3 3542 08.6035.702389 13944 49.05139.746958 -0.335602 94.755 148.255 326.026 -209.024 250.204
 ※中央線飯田橋駅の盛り土複々線+引き込み線跡+島式ホーム左カーブ
神田−
万世橋間
P1 35 41 47.97 35.696658 139 46 14.89 139.770803 基準点 0 0 294.787 300 -1.7
P2 3541 44.7435.695761 13946 17.29 139.771469 1.657181 -49.847 30.079 294.787
P3 3541 42.3035.695083 13946 17.94139.771650 4.622054 -137.349 68.306 294.787 -199.150 -217.344
 ※中央線神田−旧万世橋駅間の左カーブ
瀬野−
八本松1
P1 34 26 2.67 34.434075 132 38 54.71 132.648531 基準点 0 0 308.885 300 3.0
P2 3426 6.5034.435139 13239 2.33 132.650647 -0.609410 59.106 96.990 308.885
P3 3426 12.3534.436764 13239 4.78132.651328 -2.895240 208.493 225.161 308.885 304.392 -52.490
 ※山陽線瀬野−八本松駅間の急勾配カーブ
瀬野−
八本松2
P1 34 26 43.33 34.445369 132 39 35.66 132.659906 基準点 0 0 298.155 300 -0.6
P2 3426 39.7634.444378 13239 31.58 132.658772 -1.061029 -55.094 -51.925 298.155
P3 3426 38.4134.444003 13239 27.19132.657553 -0.372891 -131.022 -159.721 298.155 142.699 -261.789
 ※山陽線瀬野−八本松駅間の急勾配カーブ
姫川−
駒ヶ岳
P1 42 4 39.92 42.077756 140 36 25.54 140.607094 基準点 0 0 300.472 300 0.2
P2 42 4 40.9242.078033 14036 39.65 140.611014 -0.095484 15.432 161.623 300.472
P3 42 4 25.8642.073850 14036 43.52140.612089 5.242167 -201.548 367.582 300.472 -236.253 185.655
 ※函館本線姫川−駒ヶ岳間180度カーブ(付近で3回の過速度転覆事故)
尼崎事故 P1 34 44 31.89 34.742192 135 25 35.82 135.426617 基準点 0 0 284.547 302 -5.8
P2 3444 28.3534.741208 13525 35.01 135.426392 -5.318502 -54.631 -10.272 284.547
P3 3444 26.5634.740711 13525 33.84135.426067 -1.861794 -136.886 -35.381 284.547 -3.064 -284.530
 ※塚口−尼崎間上り右302R第一カーブ。建物の影の影響
横田基地
北西
P1 35 45 52.80 35.764667 139 20 28.41 139.341225 基準点 0 0 408.849 400 2.2
P2 3545 58.2235.766172 13920 30.45 139.341792 -3.274351 83.644 25.545 408.849
P3 3546 03.4135.767614 13920 36.98139.343606 -0.979537 247.383 132.858 408.849 -33.011 407.514
横田基地
北西

再計算
P1 35 45 52.91 35.764697 139 20 28.37 139.341214 基準点 0 0 391.569 400 -2.1
P2 3545 58.3535.766208 13920 30.35 139.341764 -3.386023 83.953 24.794 391.569
P3 3546 01.9135.767197 13920 34.02139.342783 -1.195503 222.845 95.543 391.569 -24.147 390.823
 ※八高線牛浜−箱根ヶ崎間横田基地延長部回避右400Rカーブ(点検再計算)
宗像事故
海老津−
教育大前
P1 33 49 2.05 33.817236 130 36 17.14 130.604761 基準点 0 0 501.318 500 0.3
P2 3348 57.9433.816094 13036 17.42 130.604839 17.667515 -63.428 3.590 501.318
P3 3348 54.2733.815075 13035 16.59 130.60460 -5.322014 -183.492 -3.462 501.318 -91.529 -492.892
 ※鹿児島線宗像事故手前500R右カーブ
東船橋
津田沼
P1 3541 58.1635.699489 140 0 29.69140.008247 基準点 0 0 823.268 800 2.9
P2 3541 57.1835.699217 140 0 34.33 140.009536 0.260078 -15.124 58.151 823.268
P3 3541 53.9035.698306 140 0 42.38140.011772 0.501728 -80.866 217.191 823.268 -809.761-148.517
東船橋
津田沼

再計算
P1 3541 58.1735.699492 140 0 29.76140.008267 基準点 0 0 809.703 800 1.2
P2 3541 56.7135.699086 140 0 35.92 140.009978 0.291855 -22.531 77.201 809.703
P3 3541 53.0335.698064 140 0 43.76 140.012156 0.577990 -101.854 252.658 809.703 -795.963-148.529
 ※総武線東船橋−津田沼間の垂直壁切り通し複々線右カーブ
新検見川
−稲毛
P1 3539 3.4935.650969 14004 47.53140.079869 基準点 0 0 818.028 800 2.3
P2 3538 58.4235.649561 14004 59.55 140.083208 0.51907 -78.243 150.734 818.028
P3 3538 52.4135.647892 140 05 6.17140.085047 1.117176 -249.235 384.489 818.028 -788.466-217.927
 ※総武線新検見川−稲毛間の盛り土&切り通し複々線右カーブ


弦と正矢から半径を求む    <Seishi>

 R(L,d)={(L/2)2+d2}/2d=(L2/8d)+(d/2)
 d(R,L)=R−sqrt{R2−(L/2)2}
 但し、R:半径、L:弦、d:正矢

  (系)見通し計算   <V>  ('10/08/17補足)

地球半径R=40001/2π [km]、
対象点高さ1
観測点高さ2
観測点−水平線距離2
水平線−対象点距離1
対象距離L=L1+L2とするとき

  (系1)見通し距離   <Dst>

見通し距離計算 前節@式より: 2R sin(α/2)=AD =sqrt(L2+h2)
sin(α/2)=h/sqrt(L2+h2)、
を上式に代入
L2+h2=2R h
L=sqrt(2R h−h2)
  ………………………E
 水平線の両側の距離L1、L2を加算したものがLだからE式より、
L=L1+L2 =sqrt(2R h1−h12) +sqrt(2R h2−h22)   ……………F

[計算例1] 東京タワー送信点標高 1=330m、受信点標高 2=43m(=35m+8m)、とするとき、見通し距離は
L=sqrt(2・40001/2π・0.330−0.332) +sqrt(2・40001/2π・0.043−0.0432)
  =64.82km+23.4km=88.2km
(但し、旧千葉市街の場合、現実には伝播途中がビル街で特に高層団地街の浦安市が拡がっていて海面伝播より減衰は大きい。また伊豆大島はギリギリ範囲としても八丈島(≒300km)はかなり苦しい。See→日記#236#1

  (系2)見通し高さ   <Hi>

 対象点の水平線標高 1を求める。観測側の水平線距離 L2はE式で求められ、対象側の距離 L1は残りの=L−L2だから、D式により、
1=R−sqrt(R2−L12)   ………………………G
として算出される。

[計算例2] 千葉海浜病院傍護岸(標高h2=5m)からL=25km先の東京湾横断道路橋梁(最高地点h1=40.8m)を見たとき、橋梁での水平線高度h1を求む
L2=sqrt(2R h2−h22)
  =sqrt(2・40001/2π・0.005−0.0052)=7.98km
∴L1=25.0km−7.98km=17.02km、
1=40001/2π−sqrt{(40001/2π)2−17.022} =22.8m
[計算例2’確認] 上記で0m高から橋梁部を観測した場合は、L2=0だから、
 h1=40001/2π−sqrt{(40001/2π)2−252} =49.09m

弦と半径から弧長と回転角を求む   <Ko>

●弦Lと半径Rにより弧長sと回転角θを求める方法は
L/2=R・sin(θ/2)
sin2α+cos2α=1
tanα=sinα/cosα であるから
tan(θ/2)=sin(θ/2)/cos(θ/2)
     =sin(θ/2)/sqrt{1−sin2(θ/2)}
     =1/sqrt{1/sin2(θ/2)−1}
     =1/sqrt{(2R/L)2−1}
∴ θ=2tan-1[1/sqrt{(2R/L)2−1}]
    s=Rθ…………………(実θ<πの場合)、
または s=R(2π−θ)……(実θ>πの場合)
但し、θ:弧・弦を中心から見込む角、R:曲率半径、L:弦、s:弦長
180度未満の角度のみ算出。(=「補角+180度」は自動算出できないので分割など工夫が必要)
mail to: adrs
戻る LIST
主目次
Last update: 2007/09/09       改7/22 (07/07/22作成)