3点で囲む三角形の面積(外積の活用)

3次元空間上の3点A,B,Cが与えられたとき、この3点で囲む三角形の面積を求めます。実はこれはベクトルの外積を使うと簡単に計算できます。

まずベクトルABとACを計算します。ベクトルの外積の大きさは外積の計算に用いた2つのベクトルを2辺にもつ平行四辺形の面積に等しいので、2つのベクトルAB,ACに囲まれる三角形の面積Sは外積の大きさの1/2となることから、

S=\frac{1}{2}|\vec{AB}\times\vec{AC}|

として計算できます。

内積が値(スカラー)であるのとは異なり外積はベクトルです。Pythonでは、次のような関数を作ることができます。

import numpy as np

def area(a,b,c):
    AB = b-a
    AC = c-a
    return np.linalg.norm(np.cross(AB,AC))/2.0

a = np.array([0,0,0])
b = np.array([1,0,0])
c = np.array([0,1,0])

print(area(a,b,c)) # 0.5