求めたい点の種類と次元を選び、2点A・Bの座標と比 m:n を入力してください。下の数式は入力欄と連動していて、座標や比の部分を直接書き換えても計算できます。
このページでできること
- 2点 \(\mathrm{A}\)・\(\mathrm{B}\) の座標と比 \(m:n\) を入れるだけで、線分 \(\mathrm{AB}\) を \(m:n\) に分ける点(内分点・外分点)の座標をその場で計算できます
- 中点(\(1:1\) の内分点)と、三角形の重心(3頂点の座標の平均)も同じページで計算できます
- 数直線(1次元)・座標平面(2次元)・空間(3次元)のどれでも使えます
- 答えは \(\dfrac{13}{2}\) のような約分済みの分数(厳密値)と小数の両方で表示。公式に数値を当てはめた途中式も見られます
- 求めた点が線分のどこにあるか(内側か、どちら側の外か)を図で確認できます。座標・比には小数・負の数のほか、3/4 のような分数も入力できます
- 内分点の公式で \(m\) と \(n\) が入れかわって見える「たすきがけ」の理由の解説・Excel/Googleスプレッドシート/Python用のコピペ数式・計算ドリル(演習問題)もこのページにまとまっています
この計算は何の役に立つ?
キャラクターやカメラを A 地点から B 地点へ動かすとき、コンピューターは毎コマ「線分ABを \(t : \left(1-t\right)\) に内分した点」(\(t\) は \(0\) より大きく \(1\) より小さい数)を計算して位置を決めています。線形補間(リニア補間)と呼ばれる、CGで最も基本的な計算です。
t を 0 から 1 まで少しずつ増やせば A から B へ等速で移動し、t の増え方に緩急を付ければ「ゆっくり動き出して、ゆっくり止まる」自然な動きになります。色を混ぜる処理・画像の拡大縮小・2つの表情の中間の顔を作るモーフィングも、同じ内分の計算を色や座標に対して行ったものです。
長さ1mの棒(棒自身の重さは無視できるものとします)の両端に 1kg と 2kg のおもりを付けたとき、支点をどこに置けば釣り合うかは内分点の計算そのものです。答えは 1kg 側の端から \(\dfrac{2}{3}\) m の位置で、重心の位置は「重さで重み付けした平均」になり、重いほうの端に寄ります。数式で書くと、位置 \(x_1\) に質量 \(m_1\)、位置 \(x_2\) に質量 \(m_2\) があるとき重心は \(\dfrac{m_1 x_1 + m_2 x_2}{m_1 + m_2}\) で、内分点の公式と同じ形です。
式のうえで「軽いほうの端の座標に、重いほうの質量が掛かる」ように見えないのは、質量そのものが重みになっているためです。線分の比で考える内分点では、この重みが「反対側の部分の長さ」にあたります。同じ考え方で、三角形や板の重心・車や飛行機の重心位置も計算されています。
40人のクラスの平均点が 60 点、20人のクラスの平均点が 90 点のとき、2クラス合わせた平均点は 75 点ではなく \(\dfrac{40 \times 60 + 20 \times 90}{40 + 20} = 70\) 点です。これは 60 と 90 を数直線上の2点 \(\mathrm{A}\)・\(\mathrm{B}\) と見たとき、線分 \(\mathrm{AB}\) を \(20:40\)、つまり人数の比 \(40:20\) を入れかえた比に内分した点にあたります。人数の多い 60 点の側に答えが寄るように、相手側の人数が重みになる。このページのたすきがけと、まったく同じ入れかわりが起きています。
物価指数・打率・アンケートの総合評価・投資の平均取得単価など、「大きさの違うグループをまとめた平均」はすべてこの形です。単純に足して2で割ると人数の少ないグループを過大評価してしまう、という誤りを避けられます。
道路や造成地の工事では、測量した2点の座標をもとに「その間の決まった割合の位置」を計算して杭を打ちます。100m の区間を4等分する位置は、1:3、1:1、3:1 の内分点として座標が求まります。
高さも含めて3次元の座標で計算すれば、勾配のある斜面上の中間点も同じ式で出せます。トンネルを両側から掘り進めて中央で正確に出会わせるような工事でも、座標計算の積み重ねが精度を支えています。
2地点の緯度・経度を座標と見なすと、中点の公式で「ちょうど真ん中あたりの地点」が求まります。待ち合わせ場所の候補を出す機能や、長い経路を等間隔の地点に区切って標高・天気を調べる処理に使われています。
広い範囲では地球が球面であることを考えた計算が必要になりますが、市街地程度の距離であれば、平面の座標として内分点で近似しても実用上の差はほとんど出ません。
式と図
用語・記号の解説
記号
| \(\mathrm{A},\ \mathrm{B},\ \mathrm{C}\) | エー・ビー・シー | 点に付ける名前。図形では点をアルファベットの大文字で表す決まりで、順にA・B・Cと付けていくのが慣例です。このページでは、線分の両端を \(\mathrm{A}\)・\(\mathrm{B}\)、三角形の3つ目の頂点を \(\mathrm{C}\) としています。 |
| \(x_1,\ y_1\) | エックスいち・ワイいち | 点 \(\mathrm{A}\) の座標。右下の小さい数字(添字)は「何番目の点か」を表す番号で、計算に使う数ではありません。同じように \(x_2,\ y_2\) は点 \(\mathrm{B}\)、\(x_3,\ y_3\) は点 \(\mathrm{C}\) の座標です。 |
| \(m:n\) | エム対エヌ | 線分を分ける比。\(\mathrm{A}\) から分点までの部分に \(m\)、分点から \(\mathrm{B}\) までの部分に \(n\) を割り当てます。\(m\) は multiply(掛ける)ではなく、比を表すときによく使われる文字です。順番を入れかえると別の点になります。 |
| \(\mathrm{P}\) | ピー | 内分点に付けることの多い名前。英語で点を意味する Point の頭文字です。 |
| \(\mathrm{Q}\) | キュー | 外分点に付けることの多い名前。内分点の \(\mathrm{P}\) の次のアルファベットを使う慣例です。 |
| \(\mathrm{M}\) | エム | 中点に付けることの多い名前。英語で中点を意味する Midpoint(真ん中の点)の頭文字です。 |
| \(\mathrm{G}\) | ジー | 重心に付けることの多い名前。重心を意味する center of Gravity(重さの中心)の頭文字に由来するといわれます。 |
| \(\mathrm{AB}\) | せんぶんエービー | 点 \(\mathrm{A}\) と点 \(\mathrm{B}\) を結んだ線分。両端が決まっている「まっすぐな線の一部分」を指します。長さを表すときも同じ \(\mathrm{AB}\) と書きます。 |
| \(\mathrm{AP} : \mathrm{PB}\) | エーピー対ピービー | 線分 \(\mathrm{AP}\) の長さと線分 \(\mathrm{PB}\) の長さの比。「\(\mathrm{AP} : \mathrm{PB} = m : n\) となる点 \(\mathrm{P}\)」が、線分 \(\mathrm{AB}\) を \(m:n\) に内分する点です。 |
用語
| 線分 | せんぶん | 2つの点を結んだ、まっすぐな線の一部分。両端があるものを線分、片側にどこまでも伸びるものを半直線、両側に伸びるものを直線と呼び分けます。 |
| 内分点 | ないぶんてん | 線分の内側にあって、その線分を決まった比に分ける点。線分 \(\mathrm{AB}\) を \(m:n\) に内分する点 \(\mathrm{P}\) とは、\(\mathrm{AP} : \mathrm{PB} = m : n\) を満たす、線分 \(\mathrm{AB}\) 上の点のことです。 |
| 外分点 | がいぶんてん | 線分を延長した外側にあって、\(\mathrm{AQ} : \mathrm{QB} = m : n\) を満たす点。比の数が小さいほうの端の側に出ます(\(m > n\) なら \(\mathrm{B}\) の先、\(m < n\) なら \(\mathrm{A}\) の手前)。\(m\) と \(n\) が等しいときは存在しません。 |
| 分点 | ぶんてん | 線分を決まった比に分ける点の総称。内分点と外分点をまとめて呼ぶときに使います。 |
| 中点 | ちゅうてん | 線分の真ん中の点。両端から等しい距離にある点で、\(1:1\) の内分点にあたります。 |
| 重心 | じゅうしん | 三角形の3本の中線が交わる1点。三角形の板をこの点で支えると水平に釣り合う「重さの中心」で、座標は3つの頂点の座標の平均になります。 |
| 中線 | ちゅうせん | 三角形の頂点と、向かい合う辺の中点を結んだ線分。3本の中線は必ず1点(重心)で交わり、その点は各中線を頂点から \(2:1\) に内分します。 |
| 比 | ひ | 2つの量の割合を「\(2:1\)」のように並べて表したもの。\(2:1\) と \(4:2\) は同じ比です。このページでは、線分を分けたときの2つの部分の長さの割合を表します。 |
| 座標 | ざひょう | 点の位置を数の組で表したもの。数直線なら数1つ、平面なら \((x,\ y)\) の2つ、空間なら \((x,\ y,\ z)\) の3つで、1つの点の場所が決まります。 |
| 数直線 | すうちょくせん | 直線に目盛りを付けて、数と点を1対1に対応させたもの。位置を数1つで表せる、最も単純な座標です。 |
| 座標平面 | ざひょうへいめん | 横方向の \(x\) 軸と縦方向の \(y\) 軸を組み合わせて、平面上の点を \((x,\ y)\) の2つの数で表せるようにしたもの。 |
| 加重平均 | かじゅうへいきん | 数それぞれに「重み」を付けて出す平均。内分点の座標 \(\dfrac{n x_1 + m x_2}{m+n}\) は、\(x_1\) に重み \(n\)、\(x_2\) に重み \(m\) を付けた加重平均そのものです。普通の平均は、すべての重みが等しい特別な場合にあたります。 |
| 添字 | そえじ | \(x_1\)、\(x_2\) のように文字の右下に小さく書く番号。同じ種類の量を区別するための「通し番号」で、掛ける数でも指数でもありません。 |
前提として理解しておくといいこと
このページの計算を「意味がわかって」使えるようになるために、前提として理解しておくといいことをまとめました。
つまずいたら、この表の内容に戻って復習するのが近道です。
| 数直線と座標(小学4年〜中学1年) |
|
| 比と割合(小学6年〜中学1年) |
|
| 正負の数の計算(中学1年) |
|
| 分数の計算(小学5年〜中学1年) |
|
| 文字式と代入(中学1年〜2年) |
|
| 平均(小学5年) |
|
Excelで計算する方法
| 点Aのx座標 x1 | 1 |
| 点Aのy座標 y1 | 2 |
| 点Bのx座標 x2 | 7 |
| 点Bのy座標 y2 | 5 |
| 比の数 m(Aから分点まで) | 2 |
| 比の数 n(分点からBまで) | 1 |
| 内分点Pのx座標 | =(B6*B1+B5*B3)/(B5+B6) |
| 内分点Pのy座標 | =(B6*B2+B5*B4)/(B5+B6) |
| 点Aのx座標 x1 | 1 |
| 点Aのy座標 y1 | 2 |
| 点Bのx座標 x2 | 7 |
| 点Bのy座標 y2 | 5 |
| 比の数 m(Aから分点まで) | 3 |
| 比の数 n(分点からBまで) | 1 |
| 外分点Qのx座標 | =(-B6*B1+B5*B3)/(B5-B6) |
| 外分点Qのy座標 | =(-B6*B2+B5*B4)/(B5-B6) |
| 点Aのx座標 x1 | 1 |
| 点Aのy座標 y1 | 2 |
| 点Bのx座標 x2 | 7 |
| 点Bのy座標 y2 | 5 |
| 中点Mのx座標 | =(B1+B3)/2 |
| 中点Mのy座標 | =(B2+B4)/2 |
| 頂点Aのx座標 x1 | 1 |
| 頂点Aのy座標 y1 | 2 |
| 頂点Bのx座標 x2 | 7 |
| 頂点Bのy座標 y2 | 5 |
| 頂点Cのx座標 x3 | 4 |
| 頂点Cのy座標 y3 | 8 |
| 重心Gのx座標 | =(B1+B3+B5)/3 |
| 重心Gのy座標 | =(B2+B4+B6)/3 |
1つ目の表は A(1, 2)、B(7, 5) を 2:1 に内分する例で、答えは P(5, 4) になります。x座標の式が「=(B6*B1+B5*B3)/(B5+B6)」と一見ちぐはぐに見えるのは、B6(比の数 n)を B1(点Aのx座標)に、B5(比の数 m)を B3(点Bのx座標)に掛けているためです。これがたすきがけの正体で、順番を入れかえると答えが変わってしまいます。
2つ目の表は同じ2点を 3:1 に外分する例で、答えは Q(10, 6.5) です。1つ目の表との違いは、B6 の前にマイナスが付いていることと、分母が足し算ではなく引き算になっていることだけです。m と n に同じ値を入れると分母が 0 になり、エラー(#DIV/0!)が表示されます。これは外分点が存在しないことを表しています。
3つ目の表は中点で、答えは M(4, 3.5) です。4つ目の表は A(1, 2)、B(7, 5)、C(4, 8) を頂点とする三角形の重心で、答えは G(4, 5) になります。
Googleスプレッドシートで計算する方法
| 点Aのx座標 x1 | 1 |
| 点Aのy座標 y1 | 2 |
| 点Bのx座標 x2 | 7 |
| 点Bのy座標 y2 | 5 |
| 比の数 m(Aから分点まで) | 2 |
| 比の数 n(分点からBまで) | 1 |
| 内分点Pのx座標 | =(B6*B1+B5*B3)/(B5+B6) |
| 内分点Pのy座標 | =(B6*B2+B5*B4)/(B5+B6) |
| 点Aのx座標 x1 | 1 |
| 点Aのy座標 y1 | 2 |
| 点Bのx座標 x2 | 7 |
| 点Bのy座標 y2 | 5 |
| 比の数 m(Aから分点まで) | 3 |
| 比の数 n(分点からBまで) | 1 |
| 外分点Qのx座標 | =(-B6*B1+B5*B3)/(B5-B6) |
| 外分点Qのy座標 | =(-B6*B2+B5*B4)/(B5-B6) |
| 点Aのx座標 x1 | 1 |
| 点Aのy座標 y1 | 2 |
| 点Bのx座標 x2 | 7 |
| 点Bのy座標 y2 | 5 |
| 中点Mのx座標 | =(B1+B3)/2 |
| 中点Mのy座標 | =(B2+B4)/2 |
| 頂点Aのx座標 x1 | 1 |
| 頂点Aのy座標 y1 | 2 |
| 頂点Bのx座標 x2 | 7 |
| 頂点Bのy座標 y2 | 5 |
| 頂点Cのx座標 x3 | 4 |
| 頂点Cのy座標 y3 | 8 |
| 重心Gのx座標 | =(B1+B3+B5)/3 |
| 重心Gのy座標 | =(B2+B4+B6)/3 |
Pythonで計算する方法
from fractions import Fraction
# 2点の座標(3/4 のような分数は Fraction(3, 4) と書ける)
point_a = (Fraction(1), Fraction(2))
point_b = (Fraction(7), Fraction(5))
point_c = (Fraction(4), Fraction(8)) # 重心を求めるときの3つ目の頂点
def internal_point(a, b, m, n):
# 内分点:遠いほうの数を掛ける(点Aの座標には n、点Bの座標には m)
return tuple((n * p + m * q) / (m + n) for p, q in zip(a, b))
def external_point(a, b, m, n):
# 外分点:内分点の n を -n に置き換えた形(m と n が等しいと計算できない)
return tuple((-n * p + m * q) / (m - n) for p, q in zip(a, b))
def midpoint(a, b):
# 中点:2つの座標の平均(1:1 の内分点)
return tuple((p + q) / 2 for p, q in zip(a, b))
def centroid(a, b, c):
# 三角形の重心:3つの頂点の座標の平均
return tuple((p + q + r) / 3 for p, q, r in zip(a, b, c))
def show(point):
# 分数のまま「(5, 4)」「(10, 13/2)」のように読みやすく表示する
return "(" + ", ".join(str(v) for v in point) + ")"
print("内分点 2:1 :", show(internal_point(point_a, point_b, Fraction(2), Fraction(1))))
print("外分点 3:1 :", show(external_point(point_a, point_b, Fraction(3), Fraction(1))))
print("中点 :", show(midpoint(point_a, point_b)))
print("重心 :", show(centroid(point_a, point_b, point_c)))
数式記述言語(LaTeX等)での書き方(コピペ可)
P = ((n·x₁ + m·x₂) ÷ (m + n), (n·y₁ + m·y₂) ÷ (m + n))
P\left(\dfrac{n x_1 + m x_2}{m + n},\ \dfrac{n y_1 + m y_2}{m + n}\right)
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>x</mi>
<mo>=</mo>
<mfrac>
<mrow>
<mi>n</mi><msub><mi>x</mi><mn>1</mn></msub>
<mo>+</mo>
<mi>m</mi><msub><mi>x</mi><mn>2</mn></msub>
</mrow>
<mrow><mi>m</mi><mo>+</mo><mi>n</mi></mrow>
</mfrac>
</mrow>
</math>
x = (n*x_1 + m*x_2)/(m + n)
{(n*x1 + m*x2)/(m + n), (n*y1 + m*y2)/(m + n)}
P := [(n*x1 + m*x2)/(m + n), (n*y1 + m*y2)/(m + n)];
P = [(n*x1 + m*x2)/(m + n), (n*y1 + m*y2)/(m + n)];
x = (n x_1 + m x_2)/(m + n)
Q = ((−n·x₁ + m·x₂) ÷ (m − n), (−n·y₁ + m·y₂) ÷ (m − n))
Q\left(\dfrac{-n x_1 + m x_2}{m - n},\ \dfrac{-n y_1 + m y_2}{m - n}\right)
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>x</mi>
<mo>=</mo>
<mfrac>
<mrow>
<mo>−</mo><mi>n</mi><msub><mi>x</mi><mn>1</mn></msub>
<mo>+</mo>
<mi>m</mi><msub><mi>x</mi><mn>2</mn></msub>
</mrow>
<mrow><mi>m</mi><mo>−</mo><mi>n</mi></mrow>
</mfrac>
</mrow>
</math>
x = (-n*x_1 + m*x_2)/(m - n)
{(-n*x1 + m*x2)/(m - n), (-n*y1 + m*y2)/(m - n)}
Q := [(-n*x1 + m*x2)/(m - n), (-n*y1 + m*y2)/(m - n)];
Q = [(-n*x1 + m*x2)/(m - n), (-n*y1 + m*y2)/(m - n)];
x = (-n x_1 + m x_2)/(m - n)
M = ((x₁ + x₂) ÷ 2, (y₁ + y₂) ÷ 2)
M\left(\dfrac{x_1 + x_2}{2},\ \dfrac{y_1 + y_2}{2}\right)
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>x</mi>
<mo>=</mo>
<mfrac>
<mrow><msub><mi>x</mi><mn>1</mn></msub><mo>+</mo><msub><mi>x</mi><mn>2</mn></msub></mrow>
<mn>2</mn>
</mfrac>
</mrow>
</math>
x = (x_1 + x_2)/2
{(x1 + x2)/2, (y1 + y2)/2}
M := [(x1 + x2)/2, (y1 + y2)/2];
M = [(x1 + x2)/2, (y1 + y2)/2];
x = (x_1 + x_2)/2
G = ((x₁ + x₂ + x₃) ÷ 3, (y₁ + y₂ + y₃) ÷ 3)
G\left(\dfrac{x_1 + x_2 + x_3}{3},\ \dfrac{y_1 + y_2 + y_3}{3}\right)
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>x</mi>
<mo>=</mo>
<mfrac>
<mrow>
<msub><mi>x</mi><mn>1</mn></msub><mo>+</mo>
<msub><mi>x</mi><mn>2</mn></msub><mo>+</mo>
<msub><mi>x</mi><mn>3</mn></msub>
</mrow>
<mn>3</mn>
</mfrac>
</mrow>
</math>
x = (x_1 + x_2 + x_3)/3
{(x1 + x2 + x3)/3, (y1 + y2 + y3)/3}
G := [(x1 + x2 + x3)/3, (y1 + y2 + y3)/3];
G = [(x1 + x2 + x3)/3, (y1 + y2 + y3)/3];
x = (x_1 + x_2 + x_3)/3
ChatGPT に聞いて計算してもらう方法
あなたは数学(座標幾何)の計算アシスタントです。次の計算を、必ずPythonコードを実際に実行して行い、実行結果の数値だけを根拠に回答してください(暗算や推測で答えないでください)。 座標平面上の2点 A(1, 2)、B(7, 5) について、次を求めてください。 1. 線分ABを 2:1 に内分する点Pの座標 2. 線分ABを 3:1 に外分する点Qの座標 3. 線分ABの中点Mの座標 4. 点C(4, 8) を加えた三角形ABCの重心Gの座標 Pythonでは標準ライブラリの fractions モジュールを使って厳密に計算し、答えは約分済みの分数と小数の両方で示してください。 あわせて、内分点の式で点Aの座標に n が掛かる理由(たすきがけになる理由)を、式の変形をたどりながら説明してください。
計算ドリル(演習問題)
このページの式を、自分の手で計算できるようになるための演習問題です。
答えと解説は解答ページにあります。
使い方
-
1数値を入力計算したい数値を入力欄に入力します
-
2計算「計算する」ボタンを押します
-
3結果を確認計算結果がその場に表示されます。計算の考え方や式の解説も同じページで確認できます
DataChefの特徴
専門知識不要、直感的で簡単な操作
個人情報を登録することなく使用できます
「ダウンロード」押下でファイルを自動削除
クレジット表記不要
商用利用許諾の連絡も不要です
