ただのメモ

他の人に見せても良い方のメモ

四面体について

四面体について、まとめる。

 

import numpy as np

#a = np.array([[0,1,2],              [1,2,3],[2,4,6]])
def area(a,b,c):
  d = np.dot(a-b,a-c)
  x = np.dot(a-b,a-b)
  y = np.dot(a-c,a-c)
  return np.sqrt(x*y - d*d)/2
a = np.array([0,1,2])
b = np.array([1,2,3])
c = np.array([2,4,6])
sa = area(a,b,c)
print(sa)
print(np.sqrt(6)/2)
  • まず、3次元上での3点の作る三角形の面積を求める部分を作る
import numpy as np

#a = np.array([[0,1,2],              [1,2,3],[2,4,6]])
def area(a,b,c):
  d = np.dot(a-b,a-c)
  x = np.dot(a-b,a-b)
  y = np.dot(a-c,a-c)
  return np.sqrt(x*y - d*d)/2
a = np.array([2,0,0])
b = np.array([0,3,0])
c = np.array([0,0,6])
o = np.array([0,0,0])
sa = area(a,b,c)
sb = np.sqrt(area(a,b,o)**2+area(a,o,c)**2+area(o,b,c)**2)
print(sa)
print(sb)
  • x軸、y軸、z軸上の3点をとる三角形の面積を、それらのうちの2点と原点からなる三角形の2乗和の平方根として、表す
  • これを、4面体バージョンに拡張してみる。
import numpy as np

#a = np.array([[0,1,2],              [1,2,3],[2,4,6]])
def area(a,b,c):
  d = np.dot(a-b,a-c)
  x = np.dot(a-b,a-b)
  y = np.dot(a-c,a-c)
  return np.sqrt(x*y - d*d)/2

def vol(a,b,c,d):
  m = a+b+c+d
  v = 1
  for i in range(4):
    if m[i]!=0:
      v *= m[i]
  return v/6
a = np.array([1,0,0,0])
b = np.array([0,1,0,0])
c = np.array([0,0,1,0])
d = np.array([0,0,0,1])
o = np.array([0,0,0,0])
va = np.sqrt(2)/12*(np.sqrt(2)**3)
vb = np.sqrt(vol(a,b,c,o)**2+vol(a,b,o,d)**2+vol(a,o,c,d)**2+vol(o,b,c,d)**2)
print(va)
print(vb)
  • ちゃんと、同じ体積になっている。
  • これから想定されることは、単体的複体の大きさについて、複数の扱いやすい単体複体の二乗の和の平方根で表される、という性質がある、ということだ。
    • n次元空間では、n-1次元の物体について、考える。というように、考えたい対象に合わせて、注目する次元を合わせる。

バイバイ!