[PHP]三次元空間での2点を結ぶ線分の中点

数学の授業で習ったような気もしますが完全に忘れていたので自分のために書き留めておきます。

function get_middle_point($p1, $p2){
  $pm = array();

  $pm[] = ( $p1[0] + $p2[0] ) / 2;
  $pm[] = ( $p1[1] + $p2[1] ) / 2;
  $pm[] = ( $p1[2] + $p2[2] ) / 2;
	
  return $pm;
}

$p1 = array(5, 10, 3);
$p2 = array(20, 2, 10);

var_dump(get_middle_point($p1, $p2));

Wikipedia によると、

“一般に n 次元ユークリッド空間上の2点 A, B を直交座標系であらわし、それぞれを (a0, …, an-1), (b0, …, bn-1) とするとその中点は (a0 + b0) / 2, … , (an-1 + bn-1) / 2 である。”

ということですが、自分にとってはプログラムのソースを見たほうがわかりやすいと思います。

http://ja.wikipedia.org/wiki/%E4%B8%AD%E7%82%B9

[PHP]3次元空間上での二点間の距離

数学は大の苦手で平面上での二点間の距離すら怪しいのですが、
どうしても3次元空間上にある2つの点がどれだけ離れているか調べる必要があったため、
公式を調べて PHP で書き直しました。

<?php
//座標1
$p1 = array(1, 1, 0);

//座標2
$p2 = array(10, 0, 0);

//距離
$dist = sqrt( pow($p2[0] - $p1[0], 2) + pow($p2[1] - $p1[1], 2) + pow($p2[2] - $p1[2], 2) );

echo $dist;

階乗を表すには関数「pow()」を使います。3の2乗であれば「pow(3, 2)」で得られます。

平方根(ルート)は「sqrt()」です。