보간점 C를 둘러싸는 정육면체의 여덟 모서리 점
주기적이고 정육면체 격자에서
x
d
{\displaystyle x_{\text{d}}}
,
y
d
{\displaystyle y_{\text{d}}}
,
z
d
{\displaystyle z_{\text{d}}}
는
각
x
{\displaystyle x}
,
y
{\displaystyle y}
,
z
{\displaystyle z}
와 관련된 작은 좌표 사이의 차이, 즉:
x
d
=
x
−
x
0
x
1
−
x
0
y
d
=
y
−
y
0
y
1
−
y
0
z
d
=
z
−
z
0
z
1
−
z
0
{\displaystyle {\begin{aligned}x_{\text{d}}={\frac {x-x_{0}}{x_{1}-x_{0}}}\\y_{\text{d}}={\frac {y-y_{0}}{y_{1}-y_{0}}}\\z_{\text{d}}={\frac {z-z_{0}}{z_{1}-z_{0}}}\end{aligned}}}
여기서
x
0
{\displaystyle x_{0}}
는
x
{\displaystyle x}
아래의 격자점을 나타내고,
x
1
{\displaystyle x_{1}}
은
x
{\displaystyle x}
위의 격자점을 나타내며,
y
0
,
y
1
,
z
0
{\displaystyle y_{0},y_{1},z_{0}}
및
z
1
{\displaystyle z_{1}}
에 대해서도 마찬가지이다.
먼저
x
{\displaystyle x}
를 따라 보간하면(
C
0
j
k
{\displaystyle C_{0jk}}
로 정의된 큐브의 면을 반대편 면인
C
1
j
k
{\displaystyle C_{1jk}}
로 "밀어내는" 것을 상상해 보라), 다음을 얻는다:
c
00
=
c
000
(
1
−
x
d
)
+
c
100
x
d
c
01
=
c
001
(
1
−
x
d
)
+
c
101
x
d
c
10
=
c
010
(
1
−
x
d
)
+
c
110
x
d
c
11
=
c
011
(
1
−
x
d
)
+
c
111
x
d
{\displaystyle {\begin{aligned}c_{00}&=c_{000}(1-x_{\text{d}})+c_{100}x_{\text{d}}\\c_{01}&=c_{001}(1-x_{\text{d}})+c_{101}x_{\text{d}}\\c_{10}&=c_{010}(1-x_{\text{d}})+c_{110}x_{\text{d}}\\c_{11}&=c_{011}(1-x_{\text{d}})+c_{111}x_{\text{d}}\end{aligned}}}
여기서
c
000
{\displaystyle c_{000}}
은
(
x
0
,
y
0
,
z
0
)
{\displaystyle (x_{0},y_{0},z_{0})}
의 함수 값을 의미한다. 그런 다음 이 값들을 (
y
{\displaystyle y}
를 따라,
C
i
0
k
{\displaystyle C_{i0k}}
에서
C
i
1
k
{\displaystyle C_{i1k}}
로 "밀어내는" 방식으로) 보간하면 다음을 얻는다:
c
0
=
c
00
(
1
−
y
d
)
+
c
10
y
d
c
1
=
c
01
(
1
−
y
d
)
+
c
11
y
d
{\displaystyle {\begin{aligned}c_{0}&=c_{00}(1-y_{\text{d}})+c_{10}y_{\text{d}}\\c_{1}&=c_{01}(1-y_{\text{d}})+c_{11}y_{\text{d}}\end{aligned}}}
마지막으로 이 값들을
z
{\displaystyle z}
를 따라(선을 따라 이동하면서) 보간한다:
c
=
c
0
(
1
−
z
d
)
+
c
1
z
d
.
{\displaystyle c=c_{0}(1-z_{\text{d}})+c_{1}z_{\text{d}}.}
이것은 해당 지점에 대한 예측 값을 제공한다.
삼선형 보간의 결과는 세 축을 따라 보간하는 순서에 독립적이다. 즉,
x
{\displaystyle x}
, 다음
y
{\displaystyle y}
, 마지막으로
z
{\displaystyle z}
와 같은 다른 순서로 해도 같은 값이 나온다.
알고리즘 시각화
삼선형 보간의 기하학적 시각화. 원하는 지점의 값과 전체 부피의 곱은 각 모서리 지점의 값과 모서리 대각선 반대편의 부분 부피의 곱의 합과 같다.
위의 연산은 다음과 같이 시각화할 수 있다. 먼저 관심 지점을 둘러싸는 정육면체의 여덟 모서리를 찾는다. 이 모서리들은
c
000
{\displaystyle c_{000}}
,
c
100
{\displaystyle c_{100}}
,
c
010
{\displaystyle c_{010}}
,
c
110
{\displaystyle c_{110}}
,
c
001
{\displaystyle c_{001}}
,
c
101
{\displaystyle c_{101}}
,
c
011
{\displaystyle c_{011}}
,
c
111
{\displaystyle c_{111}}
값을 가진다.
다음으로,
c
000
{\displaystyle c_{000}}
과
c
100
{\displaystyle c_{100}}
사이를 선형 보간하여
c
00
{\displaystyle c_{00}}
을 찾고,
c
001
{\displaystyle c_{001}}
과
c
101
{\displaystyle c_{101}}
사이를 보간하여
c
01
{\displaystyle c_{01}}
을 찾고,
c
011
{\displaystyle c_{011}}
과
c
111
{\displaystyle c_{111}}
사이를 보간하여
c
11
{\displaystyle c_{11}}
을 찾고,
c
010
{\displaystyle c_{010}}
과
c
110
{\displaystyle c_{110}}
사이를 보간하여
c
10
{\displaystyle c_{10}}
을 찾는다.
이제
c
00
{\displaystyle c_{00}}
과
c
10
{\displaystyle c_{10}}
사이를 보간하여
c
0
{\displaystyle c_{0}}
를 찾고,
c
01
{\displaystyle c_{01}}
과
c
11
{\displaystyle c_{11}}
사이를 보간하여
c
1
{\displaystyle c_{1}}
을 찾는다. 마지막으로
c
0
{\displaystyle c_{0}}
와
c
1
{\displaystyle c_{1}}
의 선형 보간을 통해
c
{\displaystyle c}
값을 계산한다.
실제로 삼선형 보간은 두 개의 쌍선형 보간법 과 하나의 선형 보간법을 결합한 것과 동일하다:
c
≈
l
(
b
(
c
000
,
c
010
,
c
100
,
c
110
)
,
b
(
c
001
,
c
011
,
c
101
,
c
111
)
)
{\displaystyle c\approx l\left(b(c_{000},c_{010},c_{100},c_{110}),\,b(c_{001},c_{011},c_{101},c_{111})\right)}
대체 알고리즘
보간 문제의 해를 작성하는 또 다른 방법은 다음과 같다.
f
(
x
,
y
,
z
)
≈
a
0
+
a
1
x
+
a
2
y
+
a
3
z
+
a
4
x
y
+
a
5
x
z
+
a
6
y
z
+
a
7
x
y
z
{\displaystyle f(x,y,z)\approx a_{0}+a_{1}x+a_{2}y+a_{3}z+a_{4}xy+a_{5}xz+a_{6}yz+a_{7}xyz}
여기서 계수들은 선형 시스템을 풀어 찾는다.
[
1
x
0
y
0
z
0
x
0
y
0
x
0
z
0
y
0
z
0
x
0
y
0
z
0
1
x
1
y
0
z
0
x
1
y
0
x
1
z
0
y
0
z
0
x
1
y
0
z
0
1
x
0
y
1
z
0
x
0
y
1
x
0
z
0
y
1
z
0
x
0
y
1
z
0
1
x
1
y
1
z
0
x
1
y
1
x
1
z
0
y
1
z
0
x
1
y
1
z
0
1
x
0
y
0
z
1
x
0
y
0
x
0
z
1
y
0
z
1
x
0
y
0
z
1
1
x
1
y
0
z
1
x
1
y
0
x
1
z
1
y
0
z
1
x
1
y
0
z
1
1
x
0
y
1
z
1
x
0
y
1
x
0
z
1
y
1
z
1
x
0
y
1
z
1
1
x
1
y
1
z
1
x
1
y
1
x
1
z
1
y
1
z
1
x
1
y
1
z
1
]
[
a
0
a
1
a
2
a
3
a
4
a
5
a
6
a
7
]
=
[
c
000
c
100
c
010
c
110
c
001
c
101
c
011
c
111
]
,
{\displaystyle {\begin{aligned}{\begin{bmatrix}1&x_{0}&y_{0}&z_{0}&x_{0}y_{0}&x_{0}z_{0}&y_{0}z_{0}&x_{0}y_{0}z_{0}\\1&x_{1}&y_{0}&z_{0}&x_{1}y_{0}&x_{1}z_{0}&y_{0}z_{0}&x_{1}y_{0}z_{0}\\1&x_{0}&y_{1}&z_{0}&x_{0}y_{1}&x_{0}z_{0}&y_{1}z_{0}&x_{0}y_{1}z_{0}\\1&x_{1}&y_{1}&z_{0}&x_{1}y_{1}&x_{1}z_{0}&y_{1}z_{0}&x_{1}y_{1}z_{0}\\1&x_{0}&y_{0}&z_{1}&x_{0}y_{0}&x_{0}z_{1}&y_{0}z_{1}&x_{0}y_{0}z_{1}\\1&x_{1}&y_{0}&z_{1}&x_{1}y_{0}&x_{1}z_{1}&y_{0}z_{1}&x_{1}y_{0}z_{1}\\1&x_{0}&y_{1}&z_{1}&x_{0}y_{1}&x_{0}z_{1}&y_{1}z_{1}&x_{0}y_{1}z_{1}\\1&x_{1}&y_{1}&z_{1}&x_{1}y_{1}&x_{1}z_{1}&y_{1}z_{1}&x_{1}y_{1}z_{1}\end{bmatrix}}{\begin{bmatrix}a_{0}\\a_{1}\\a_{2}\\a_{3}\\a_{4}\\a_{5}\\a_{6}\\a_{7}\end{bmatrix}}={\begin{bmatrix}c_{000}\\c_{100}\\c_{010}\\c_{110}\\c_{001}\\c_{101}\\c_{011}\\c_{111}\end{bmatrix}},\end{aligned}}}
결과로 다음이 도출된다.
a
0
=
−
c
000
x
1
y
1
z
1
+
c
001
x
1
y
1
z
0
+
c
010
x
1
y
0
z
1
−
c
011
x
1
y
0
z
0
(
x
0
−
x
1
)
(
y
0
−
y
1
)
(
z
0
−
z
1
)
+
c
100
x
0
y
1
z
1
−
c
101
x
0
y
1
z
0
−
c
110
x
0
y
0
z
1
+
c
111
x
0
y
0
z
0
(
x
0
−
x
1
)
(
y
0
−
y
1
)
(
z
0
−
z
1
)
,
a
1
=
c
000
y
1
z
1
−
c
001
y
1
z
0
−
c
010
y
0
z
1
+
c
011
y
0
z
0
(
x
0
−
x
1
)
(
y
0
−
y
1
)
(
z
0
−
z
1
)
+
−
c
100
y
1
z
1
+
c
101
y
1
z
0
+
c
110
y
0
z
1
−
c
111
y
0
z
0
(
x
0
−
x
1
)
(
y
0
−
y
1
)
(
z
0
−
z
1
)
,
a
2
=
c
000
x
1
z
1
−
c
001
x
1
z
0
−
c
010
x
1
z
1
+
c
011
x
1
z
0
(
x
0
−
x
1
)
(
y
0
−
y
1
)
(
z
0
−
z
1
)
+
−
c
100
x
0
z
1
+
c
101
x
0
z
0
+
c
110
x
0
z
1
−
c
111
x
0
z
0
(
x
0
−
x
1
)
(
y
0
−
y
1
)
(
z
0
−
z
1
)
,
a
3
=
c
000
x
1
y
1
−
c
001
x
1
y
1
−
c
010
x
1
y
0
+
c
011
x
1
y
0
(
x
0
−
x
1
)
(
y
0
−
y
1
)
(
z
0
−
z
1
)
+
−
c
100
x
0
y
1
+
c
101
x
0
y
1
+
c
110
x
0
y
0
−
c
111
x
0
y
0
(
x
0
−
x
1
)
(
y
0
−
y
1
)
(
z
0
−
z
1
)
,
a
4
=
−
c
000
z
1
+
c
001
z
0
+
c
010
z
1
−
c
011
z
0
+
c
100
z
1
−
c
101
z
0
−
c
110
z
1
+
c
111
z
0
(
x
0
−
x
1
)
(
y
0
−
y
1
)
(
z
0
−
z
1
)
,
a
5
=
−
c
000
y
1
+
c
001
y
1
+
c
010
y
0
−
c
011
y
0
+
c
100
y
1
−
c
101
y
1
−
c
110
y
0
+
c
111
y
0
(
x
0
−
x
1
)
(
y
0
−
y
1
)
(
z
0
−
z
1
)
,
a
6
=
−
c
000
x
1
+
c
001
x
1
+
c
010
x
1
−
c
011
x
1
+
c
100
x
0
−
c
101
x
0
−
c
110
x
0
+
c
111
x
0
(
x
0
−
x
1
)
(
y
0
−
y
1
)
(
z
0
−
z
1
)
,
a
7
=
c
000
−
c
001
−
c
010
+
c
011
−
c
100
+
c
101
+
c
110
−
c
111
(
x
0
−
x
1
)
(
y
0
−
y
1
)
(
z
0
−
z
1
)
.
{\displaystyle {\begin{aligned}a_{0}={}&{\frac {-c_{000}x_{1}y_{1}z_{1}+c_{001}x_{1}y_{1}z_{0}+c_{010}x_{1}y_{0}z_{1}-c_{011}x_{1}y_{0}z_{0}}{(x_{0}-x_{1})(y_{0}-y_{1})(z_{0}-z_{1})}}+{}\\&{\frac {c_{100}x_{0}y_{1}z_{1}-c_{101}x_{0}y_{1}z_{0}-c_{110}x_{0}y_{0}z_{1}+c_{111}x_{0}y_{0}z_{0}}{(x_{0}-x_{1})(y_{0}-y_{1})(z_{0}-z_{1})}},\\[4pt]a_{1}={}&{\frac {c_{000}y_{1}z_{1}-c_{001}y_{1}z_{0}-c_{010}y_{0}z_{1}+c_{011}y_{0}z_{0}}{(x_{0}-x_{1})(y_{0}-y_{1})(z_{0}-z_{1})}}+{}\\&{\frac {-c_{100}y_{1}z_{1}+c_{101}y_{1}z_{0}+c_{110}y_{0}z_{1}-c_{111}y_{0}z_{0}}{(x_{0}-x_{1})(y_{0}-y_{1})(z_{0}-z_{1})}},\\[4pt]a_{2}={}&{\frac {c_{000}x_{1}z_{1}-c_{001}x_{1}z_{0}-c_{010}x_{1}z_{1}+c_{011}x_{1}z_{0}}{(x_{0}-x_{1})(y_{0}-y_{1})(z_{0}-z_{1})}}+{}\\&{\frac {-c_{100}x_{0}z_{1}+c_{101}x_{0}z_{0}+c_{110}x_{0}z_{1}-c_{111}x_{0}z_{0}}{(x_{0}-x_{1})(y_{0}-y_{1})(z_{0}-z_{1})}},\\[4pt]a_{3}={}&{\frac {c_{000}x_{1}y_{1}-c_{001}x_{1}y_{1}-c_{010}x_{1}y_{0}+c_{011}x_{1}y_{0}}{(x_{0}-x_{1})(y_{0}-y_{1})(z_{0}-z_{1})}}+{}\\&{\frac {-c_{100}x_{0}y_{1}+c_{101}x_{0}y_{1}+c_{110}x_{0}y_{0}-c_{111}x_{0}y_{0}}{(x_{0}-x_{1})(y_{0}-y_{1})(z_{0}-z_{1})}},\\[4pt]a_{4}={}&{\frac {-c_{000}z_{1}+c_{001}z_{0}+c_{010}z_{1}-c_{011}z_{0}+c_{100}z_{1}-c_{101}z_{0}-c_{110}z_{1}+c_{111}z_{0}}{(x_{0}-x_{1})(y_{0}-y_{1})(z_{0}-z_{1})}},\\[4pt]a_{5}=&{\frac {-c_{000}y_{1}+c_{001}y_{1}+c_{010}y_{0}-c_{011}y_{0}+c_{100}y_{1}-c_{101}y_{1}-c_{110}y_{0}+c_{111}y_{0}}{(x_{0}-x_{1})(y_{0}-y_{1})(z_{0}-z_{1})}},\\[4pt]a_{6}={}&{\frac {-c_{000}x_{1}+c_{001}x_{1}+c_{010}x_{1}-c_{011}x_{1}+c_{100}x_{0}-c_{101}x_{0}-c_{110}x_{0}+c_{111}x_{0}}{(x_{0}-x_{1})(y_{0}-y_{1})(z_{0}-z_{1})}},\\[4pt]a_{7}={}&{\frac {c_{000}-c_{001}-c_{010}+c_{011}-c_{100}+c_{101}+c_{110}-c_{111}}{(x_{0}-x_{1})(y_{0}-y_{1})(z_{0}-z_{1})}}.\end{aligned}}}