त्रिरेखीय प्रक्षेप

ट्रिलिनियर इंटरपोलेशन (त्रि-आयामी प्रक्षेप) 3-आयामी नियमित ग्रिड पर बहुभिन्नरूपी इंटरपोलेशन की एक विधि है। यह किसी मध्यवर्ती बिंदु पर किसी फलन के मान का अनुमान लगाता है $$(x, y, z)$$ जालक बिंदुओं पर फलन डेटा का उपयोग करके, स्थानीय अक्षीय आयताकार प्रिज्म (ज्यामिति) के भीतर रैखिक रूप से है। एक मनमाना, असंरचित ग्रिड के लिए (जैसा कि परिमित तत्व विश्लेषण में उपयोग किया जाता है), प्रक्षेप के अन्य तरीकों का उपयोग किया जाना चाहिए; यदि सभी जाल तत्व चतुर्पाश्वीय  (3डी संकेतन) हैं, तो बैरीसेंट्रिक निर्देशांक (गणित) बैरीसेंट्रिक निर्देशांक ऑन टेट्राहेड्रा एक सीधी प्रक्रिया प्रदान करते हैं।

ट्रिलिनियर इंटरपोलेशन का उपयोग प्रायः संख्यात्मक विश्लेषण, डेटा विश्लेषण और कंप्यूटर चित्रलेख  में किया जाता है।

रैखिक और द्विरेखीय प्रक्षेप की तुलना
रेखिक आंतरिक रैखिक इंटरपोलेशन का विस्तार है, जो आयाम वाले स्थानों में संचालित होता है $$D = 1$$, और द्विरेखीय प्रक्षेप, जो आयाम के साथ संचालित होता है $$D = 2$$, आयाम के लिए $$D = 3$$. ये प्रक्षेप योजनाएं क्रम 1 के बहुपदों का उपयोग करती हैं, जो क्रम 2 की सटीकता देती हैं, और इसकी आवश्यकता होती है $$2^D = 8$$ प्रक्षेप बिंदु के आसपास आसन्न पूर्व-परिभाषित मान है। ट्रिलिनियर इंटरपोलेशन पर पहुंचने के कई तरीके हैं, जो ऑर्डर 1 के 3-आयामी टेन्सर  बी स्प्लीन इंटरपोलेशन के बराबर है, और ट्रिलिनियर इंटरपोलेशन ऑपरेटर भी 3 लीनियर इंटरपोलेशन ऑपरेटरों का एक टेंसर उत्पाद है।

विधि
एक आवर्त और घनीय जालक (लैटिस) पर, चलो $$x_\text{d}$$, $$y_\text{d}$$, और $$z_\text{d}$$ प्रत्येक के बीच अंतर हो $$x$$, $$y$$, $$z$$ और संबंधित लघुतर निर्देशांक, वह है:


 * $$\begin{align}

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{align}$$ जहाँ $$ x_0 $$ नीचे जालक बिंदु को इंगित करता है $$ x $$, और $$ x_1 $$ ऊपर जालक बिंदु को इंगित करता है $$ x $$ और इसी तरह के लिए $$y_0, y_1, z_0$$ और $$z_1$$.

सबसे पहले हम साथ-साथ प्रक्षेप करते हैं $$x$$ (कल्पना करें कि हम परिभाषित घन के पक्ष को पुशिंग (आगे बढ़ा रहे ) हैं $$C_{0jk}$$ विरोधी  पक्ष के लिए, द्वारा परिभाषित $$C_{1jk}$$), देना:
 * $$\begin{align}

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{align}$$ जहाँ $$c_{000}$$ का अर्थ है फलन मान $$ (x_0, y_0, z_0). $$ फिर हम इन मूल्यों को प्रक्षेपित करते हैं (साथ में)। $$y$$, से पुशिंग देना $$C_{i0k}$$ को $$C_{i1k}$$), देना:
 * $$\begin{align}

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{align}$$ अंततः हम इन मूल्यों को एक साथ प्रक्षेपित करते हैं $$z$$ (एक पंक्ति से चलते हुए):
 * $$c = c_0(1 - z_\text{d}) + c_1z_\text{d} .$$

यह हमें बिंदु के लिए अनुमानित मूल्य देता है।

त्रिरेखीय प्रक्षेप का परिणाम तीन अक्षों के साथ प्रक्षेप चरणों के क्रम से स्वतंत्र है: कोई अन्य क्रम, उदाहरण के लिए $$x$$, फिर साथ में $$y$$, और अंत में साथ $$z$$, समान मान उत्पन्न करता है।

उपरोक्त ऑपरेशनों की कल्पना इस प्रकार की जा सकती है: सबसे पहले हम एक घन के आठ कोनों को ढूंढते हैं जो हमारी रुचि के बिंदु को घेरे हुए हैं। इन कोनों के मूल्य हैं $$c_{000}$$, $$c_{100}$$, $$c_{010}$$, $$c_{110}$$, $$c_{001}$$, $$c_{101}$$, $$c_{011}$$, $$c_{111}$$.

इसके बाद, हम बीच में रैखिक प्रक्षेप करते हैं $$c_{000}$$ और $$c_{100}$$ फाइंड $$c_{00}$$, $$c_{001}$$ और $$c_{101}$$ फाइंड $$c_{01}$$, $$c_{011}$$ और $$c_{111}$$ फाइंड $$c_{11}$$, $$c_{010}$$ और $$c_{110}$$ फाइंड $$c_{10}$$.

अब हम बीच में प्रक्षेप करते हैं $$c_{00}$$ और $$c_{10}$$ फाइंड $$c_{0}$$, $$c_{01}$$ और $$c_{11}$$ फाइंड $$c_{1}$$. अंत में, हम मूल्य की गणना करते हैं $$c$$ के रैखिक प्रक्षेप के माध्यम से $$c_{0}$$ और $$c_{1}$$

व्यवहार में, एक त्रिरेखीय प्रक्षेप एक रैखिक प्रक्षेप के साथ संयुक्त दो द्विरेखीय प्रक्षेप के समान होता है:
 * $$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) \approx 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$$

जहां रैखिक प्रणाली को हल करके गुणांक पाए जाते हैं
 * $$\begin{align}

\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{align}$$ परिणाम दे रहा है


 * $$\begin{align}

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{align}$$

यह भी देखें

 * रेखिक आंतरिक
 * द्विरेखीय प्रक्षेप
 * ट्राइक्यूबिक इंटरपोलेशन
 * रेडियल इंटरपोलेशन
 * चतुष्फलकीय प्रक्षेप
 * स्फेरिकल लीनियर इंटरपोलेशन

बाहरी संबंध

 * pseudo-code from NASA, describes an iterative inverse trilinear interpolation (given the vertices and the value of C find Xd, Yd and Zd).
 * Paul Bourke, Interpolation methods, 1999. Contains a very clever and simple method to find trilinear interpolation that is based on binary logic and can be extended to any dimension (Tetralinear, Pentalinear, ...).
 * Kenwright, Free-Form Tetrahedron Deformation. International Symposium on Visual Computing. Springer International Publishing, 2015.