Trilinjär interpolation

Trilinjär interpolation är en metod för multivariat interpolation på ett 3-dimensionellt regelbundet rutnät . Den approximerar värdet av en funktion vid en mellanliggande punkt inom det lokala axiella rektangulära prismat linjärt, med hjälp av funktionsdata på gitterpunkterna. För ett godtyckligt, ostrukturerat nät (som används i finita elementanalys) måste andra interpolationsmetoder användas; om alla nätelement är tetraedrar (3D- simpliceringar ) ger barycentriska koordinater en enkel procedur.

Trilinjär interpolation används ofta i numerisk analys , dataanalys och datorgrafik .

Jämfört med linjär och bilinjär interpolation

Trilinjär interpolation är förlängningen av linjär interpolation , som fungerar i utrymmen med dimension , och bilinjär interpolation , som fungerar med dimension , till dimension . Dessa interpolationsscheman använder alla polynom av ordning 1, vilket ger en noggrannhet av ordning 2, och det kräver intilliggande fördefinierade värden som omger interpolationspunkten. Det finns flera sätt att komma fram till trilinjär interpolation, vilket är ekvivalent med 3-dimensionell tensor B-spline interpolation av ordning 1, och den trilinjära interpolationsoperatorn är också en tensorprodukt av 3 linjära interpolationsoperatorer.

Metod

Åtta hörnpunkter på en kub som omger interpolationspunkten C
Skildring av 3D-interpolation
En geometrisk visualisering av trilinjär interpolation. Produkten av värdet vid den önskade punkten och hela volymen är lika med summan av produkterna av värdet vid varje hörn och delvolymen diagonalt mitt emot hörnet.

På ett periodiskt och kubiskt gitter, låt , och vara skillnaderna mellan var och en av , , och den mindre koordinatrelaterade, det vill säga:

där indikerar gitterpunkten under , och indikerar gitterpunkten ovanför och på liknande sätt för och .

Först interpolerar vi längs (föreställ dig att vi "skjuter" ytan på kuben definierad av till den motsatta ytan, definierad av ), vilket ger:

Där betyder funktionsvärdet för Sedan interpolerar vi dessa värden (längs , "pushing" från till ), vilket ger:

Slutligen interpolerar vi dessa värden längs (genom en linje):

Detta ger oss ett förutsagt värde för punkten.

Resultatet av trilinjär interpolation är oberoende av ordningen för interpolationsstegen längs de tre axlarna: vilken annan ordning som helst, till exempel längs , sedan längs , och slutligen längs , ger samma värde.

Ovanstående operationer kan visualiseras enligt följande: Först hittar vi de åtta hörnen av en kub som omger vår intressanta plats. Dessa hörn har värdena , , , , , , , .

Därefter utför vi linjär interpolation mellan och för att hitta c och för att hitta , och för att hitta , och för att hitta .

Nu gör vi interpolation mellan och för att hitta c och för att hitta . Slutligen beräknar vi värdet via linjär interpolation av och

I praktiken är en trilinjär interpolation identisk med två bilinjär interpolation kombinerad med en linjär interpolation:

Alternativ algoritm

Ett alternativt sätt att skriva lösningen på interpolationsproblemet är

där koefficienterna hittas genom att lösa det linjära systemet

ger resultatet

Se även

externa länkar

  • pseudo-kod från NASA , beskriver en iterativ invers trilinjär interpolation (med tanke på hörnen och värdet på C hittar Xd, Yd och Zd).
  • Paul Bourke, Interpolation methods , 1999. Innehåller en mycket smart och enkel metod för att hitta trilinjär interpolation som är baserad på binär logik och som kan utökas till vilken dimension som helst (Tetralinjär, Pentalinjär, ...).
  • Kenwright, Free-Form Tetrahedron Deformation. Internationellt symposium om visuell datoranvändning. Springer International Publishing, 2015 [1] .