形を描く関数

  • こちらで女性の体幹上部の腹側表面を描く関数の話をしている

http://upload.wikimedia.org/wikipedia/commons/thumb/1/1b/Louvre_Venus_de_Milo_DSC00900.jpg/220px-Louvre_Venus_de_Milo_DSC00900.jpg(Wikiから)

  • 冠状面(Coronal plane)をxy平面とし、y軸を尾側から頭側方向軸、x軸は右から左へ向かう軸、矢状軸(Saggital axis)をz軸として取っている(解剖学における方向用語はこちら)
  • ソースはこちらにRのそれがある
  • そのソースは下掲するが、その関数を取り出そう
  • z = f_1(x,y) + f_2(x,y) + f_3(x,y)
  • f_1(x,y) = \frac{1}{8} \times (6  e^{(-((\frac{2}{3}  |x| - 1)^2 + (\frac{2}{3}  y)^2) - \frac{1}{3} (\frac{2}{3}  y + \frac{1}{2})^3)}
  • f_2(x,y) = \frac{2}{3}\times e^{-2.818^{11}((\frac{2}{3}|x|-1)^2+(\frac{2}{3}y)^2)^2}
  • f_3(x,y) = \frac{2}{3}y-(\frac{2}{3} x)^4
  • パーツを眺めて置き換える
  • f_1(x,y) = \frac{1}{8} \times 6 e^{-g_1(x,y) -\frac{1}{3}( h_1(y) + \frac{1}{2})^3 }
  • f_2(x,y) = \frac{2}{3} \times e^{-2.818^{11}(g_1(x,y))^2
  • f_3(x,y) = h_1(y) - |h_1(x)|^4
    • g_1(x,y) = h_2(x)^2 + h_1(y)^2
    • h_1(t) = \frac{2}{3}t
    • h_2(t) = |h_1(t)|-1
  • 意味合いは:
    • スケールの値\frac{1}{8},6,\frac{1}{3},2.818などは形を整える
    • h_2(t)=|h_1(t)|-1の項は、左右の軸で、中央にくぼみを作りつつ、左右端でz値を小さくする。
    • g_1(x,y) = h_2(x)^2 + h_1(y)^2は円筒
    • f_3(x,y) = h_1(y)-|h_1(x)|^4は頭側が高く尾側が低いことと、左右正中が高いこと
    • g_1(x,y)をスケールを変えて2度、使用しているのは、左右対称なある2点を頂上とする2つの山があるから
    • f_1(x,y)f_2(x,y)とでは、 -\frac{1}{3}( h_1(y) + \frac{1}{2})^3 }という項が違う。この項はy軸方向について、基礎となる山に歪みを入れている項で、山上山には、そのような歪みを入れない、という意味である。y軸方向は、ヒトが立位にあるときの重力方向であるから、基礎となる山は、重力の影響を受けて変形する素材であり、山上山は重力による変形がない素材であることを示している、とも言える
  • と、ここまで分解すると、もう少し、改良できそうに思う。
  • また、この形が理想形であるとして、では、乳房腫瘤ができたときの形状変化はどのように関数化するのか、とか、その腫瘤による皮膚表面のひきつれというのは、腫瘤の構成成分とどのような関係があるのか、などを持ち込むと、形状診断に持ち込むことも可能である
  • こちらでは骨盤解剖をやった
library(lattice)
g <- function(x, y) {
 1/8 * (6 * exp(-((2/3 * abs(x) - 1)^2 + (2/3 * y)^2) - 1/3 * (2/3 * y + 1/2)^3) +
        #2/3 * exp(-2.818^11 * ((abs(2/3 * x) - 1)^2 + (2/3 * y)^2)^2) +
        2/3 * y - (2/3 * x)^4)
}
m <- 50
x <- seq(-3, 3, length.out=m)
y <- seq(-3, 3, length.out=m)
grid   <- expand.grid(x=x, y=y)
grid$z <- g(grid$x, grid$y)
wireframe(z ~ x * y, grid, shade=TRUE)