/* Ċ Ġ* ĠThis Ġfile Ġis Ġpart Ġof ĠCode Ch icken Lib . Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 8 , Ġcovers 1 6 2 4 , ĠAll Ġrights Ġreserved . Ċ Ġ* Ċ Ġ* ĠCode Ch icken Lib Ġis Ġfree Ġsoftware : Ġyou Ġcan Ġredistribute Ġit Ġand / or Ġmodify Ċ Ġ* Ġit Ġunder Ġthe Ġterms Ġof Ġthe ĠGNU ĠLesser ĠGeneral ĠPublic ĠLicense Ġas Ġpublished Ġby Ċ Ġ* Ġthe ĠFree ĠSoftware ĠFoundation , Ġeither Ġversion Ġ 2 . 1 Ġof Ġthe ĠLicense , Ġor Ċ Ġ* Ġ( at Ġyour Ġoption ) Ġany Ġlater Ġversion . Ċ Ġ* Ċ Ġ* ĠCode Ch icken Lib Ġis Ġdistributed Ġin Ġthe Ġhope Ġthat Ġit Ġwill Ġbe Ġuseful , Ċ Ġ* Ġbut ĠWITHOUT ĠANY ĠWARRANTY ; Ġwithout Ġeven Ġthe Ġimplied Ġwarranty Ġof Ċ Ġ* ĠMERCHANTABILITY Ġor ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE . Ġ ĠSee Ġthe Ċ Ġ* ĠGNU ĠLesser ĠGeneral ĠPublic ĠLicense Ġfor Ġmore Ġdetails . Ċ Ġ* Ċ Ġ* ĠYou Ġshould Ġhave Ġreceived Ġa Ġcopy Ġof Ġthe ĠGNU ĠLesser ĠGeneral ĠPublic ĠLicense Ċ Ġ* Ġalong Ġwith ĠCode Ch icken Lib . ĠIf Ġnot , Ġsee Ġ< http :// www . gnu . org / licenses / lg pl >. Ċ Ġ*/ Ċ Ċ package Ġnet . cy dh ra . tech n ocracy . foundation . util . model Ċ Ċ /** Ċ Ġ* Ġ@ author Ġcovers 1 6 2 4 Ċ Ġ*/ Ċ class ĠInter p Helper Ġ{ ĊĠĠĠ Ġprivate Ġval Ġpos Cache Ġ= ĠArray ( 4 ) Ġ{ ĠFloat Array ( 2 ) Ġ} ĊĠĠĠ Ġprivate Ġval Ġval Cache Ġ= ĠFloat Array ( 4 ) ĊĠĠĠ Ġprivate Ġvar Ġx 0 Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġx 1 Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġy 0 Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġy 1 Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġr X Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġr Y Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġp 0 0 Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġp 1 0 Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġp 1 1 Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġp 0 1 Ġ= Ġ 0 ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRe sets Ġthe Ġinterp Ġhelper Ġwith Ġthe Ġgiven Ġquad . ĠDoes Ġnot Ġcare Ġwhat Ġorder Ġthe Ġvertices Ġare Ġin . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġreset ( dx 0 : ĠFloat , Ġdy 0 : ĠFloat , Ġdx 1 : ĠFloat , Ġdy 1 : ĠFloat , Ġdx 2 : ĠFloat , Ġdy 2 : ĠFloat , Ġdx 3 : ĠFloat , Ġdy 3 : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvec 0 Ġ= Ġpos Cache [ 0 ] ĊĠĠĠĠĠĠĠ Ġval Ġvec 1 Ġ= Ġpos Cache [ 1 ] ĊĠĠĠĠĠĠĠ Ġval Ġvec 2 Ġ= Ġpos Cache [ 2 ] ĊĠĠĠĠĠĠĠ Ġval Ġvec 3 Ġ= Ġpos Cache [ 3 ] ĊĠĠĠĠĠĠĠ Ġvec 0 [ 0 ] Ġ= Ġdx 0 ĊĠĠĠĠĠĠĠ Ġvec 1 [ 0 ] Ġ= Ġdx 1 ĊĠĠĠĠĠĠĠ Ġvec 2 [ 0 ] Ġ= Ġdx 2 ĊĠĠĠĠĠĠĠ Ġvec 3 [ 0 ] Ġ= Ġdx 3 ĊĠĠĠĠĠĠĠ Ġvec 0 [ 1 ] Ġ= Ġdy 0 ĊĠĠĠĠĠĠĠ Ġvec 1 [ 1 ] Ġ= Ġdy 1 ĊĠĠĠĠĠĠĠ Ġvec 2 [ 1 ] Ġ= Ġdy 2 ĊĠĠĠĠĠĠĠ Ġvec 3 [ 1 ] Ġ= Ġdy 3 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCall Ġwhen Ġyou Ġare Ġready Ġto Ġuse Ġthe ĠInter p Helper . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġp 0 0 Ġ= Ġ 0 Ġ// ĠBottom ĠLeft Ġis Ġalways Ġfirst . ĊĠĠĠĠĠĠĠ Ġx 0 Ġ= Ġpos Cache [ p 0 0 ][ 0 ] ĊĠĠĠĠĠĠĠ Ġy 0 Ġ= Ġpos Cache [ p 0 0 ][ 1 ] ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 1 .. 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġpos Cache [ i ][ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy Ġ= Ġpos Cache [ i ][ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( y 0 Ġ== Ġy ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp 1 0 Ġ= Ġi Ġ// ĠBottom Ġright . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx 1 Ġ= Ġx ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( x 0 Ġ== Ġx ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp 0 1 Ġ= Ġi Ġ// ĠTop Ġleft . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy 1 Ġ= Ġy ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ġ// ĠTop Ġright . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp 1 1 Ġ= Ġi ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠComputes Ġthe Ġcoefficients Ġfor Ġthe Ġinterpolation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġx ĠX Ġinterp Ġlocation . ĊĠĠĠĠ Ġ* Ġ@ param Ġy ĠY Ġinterp Ġlocation . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġlocate ( x : ĠFloat , Ġy : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġr X Ġ= Ġ( x Ġ- Ġx 0 ) Ġ/ Ġ( x 1 Ġ- Ġx 0 ) ĊĠĠĠĠĠĠĠ Ġr Y Ġ= Ġ( y Ġ- Ġy 0 ) Ġ/ Ġ( y 1 Ġ- Ġy 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInterpol ates Ġusing Ġthe Ġalready Ġcomputed Ġcoefficients . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġq 0 ĠValue Ġat Ġdx 0 Ġdy 0 ĊĠĠĠĠ Ġ* Ġ@ param Ġq 1 ĠValue Ġat Ġdx 1 Ġdy 1 ĊĠĠĠĠ Ġ* Ġ@ param Ġq 2 ĠValue Ġat Ġdx 2 Ġdy 2 ĊĠĠĠĠ Ġ* Ġ@ param Ġq 3 ĠValue Ġat Ġdx 3 Ġdy 3 ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġresult . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġinterpolate ( q 0 : ĠFloat , Ġq 1 : ĠFloat , Ġq 2 : ĠFloat , Ġq 3 : ĠFloat ): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠ Ġval Cache [ 0 ] Ġ= Ġq 0 ĊĠĠĠĠĠĠĠ Ġval Cache [ 1 ] Ġ= Ġq 1 ĊĠĠĠĠĠĠĠ Ġval Cache [ 2 ] Ġ= Ġq 2 ĊĠĠĠĠĠĠĠ Ġval Cache [ 3 ] Ġ= Ġq 3 ĊĠĠĠĠĠĠĠ Ġval Ġf 0 Ġ= Ġval Cache [ p 0 0 ] Ġ* Ġ( 1 Ġ- Ġr X ) Ġ+ Ġval Cache [ p 1 0 ] Ġ* Ġr X ĊĠĠĠĠĠĠĠ Ġval Ġf 1 Ġ= Ġval Cache [ p 0 1 ] Ġ* Ġ( 1 Ġ- Ġr X ) Ġ+ Ġval Cache [ p 1 1 ] Ġ* Ġr X ĊĠĠĠĠĠĠĠ Ġreturn Ġf 0 Ġ* Ġ( 1 Ġ- Ġr Y ) Ġ+ Ġf 1 Ġ* Ġr Y ĊĠĠĠ Ġ} Ċ }