package Ġcom . fan hl . util Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . hardware . Sensor Manager Ċ import Ġandroid . view . View Configuration Ċ Ċ /** Ċ Ġ* ĠSc roller å¸®åĬ© ç±» Ċ Ġ*/ Ċ object ĠSc roller Utils Ġ{ ĊĠĠĠ Ġprivate Ġval ĠIN FLEX ION Ġ= Ġ 0 . 3 5 f Ġ// ĠT ension Ġlines Ġcross Ġat Ġ( INF LEX ION , Ġ 1 ) ĊĠĠĠ Ġ// ĠF ling Ġf riction ĊĠĠĠ Ġprivate Ġval Ġm Fl ing F riction Ġ= ĠView Configuration . get Scroll F riction () ĊĠĠĠ Ġprivate Ġvar Ġm Physical Coeff : ĠFloat Ġ= Ġ 0 . toFloat () ĊĠĠĠ Ġprivate Ġval ĠDE CELER ATION _ RATE Ġ= Ġ( Math . log ( 0 . 7 8 ) Ġ/ ĠMath . log ( 0 . 9 )). toFloat () ĊĊĠĠĠ Ġfun Ġinit ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġp pi Ġ= Ġcontext . getResources (). getDisplay Metrics (). density Ġ* Ġ 1 6 0 . 0 f ĊĠĠĠĠĠĠĠ Ġm Physical Coeff Ġ= Ġ( Sensor Manager . GR AV ITY _ EAR TH Ġ// Ġg Ġ( m / s ^ 2 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ 3 9 . 3 7 f Ġ// Ġin ch / meter ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġp pi ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ 0 . 8 4 f ) Ġ// Ġlook Ġand Ġfeel Ġtuning ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ åĩı éĢŁ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġget Spline De cel eration ( velocity : ĠInt ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠMath . log (( INF LEX ION Ġ* ĠMath . abs ( velocity ) Ġ/ Ġ( m Fl ing F riction Ġ* Ġm Physical Coeff )). toDouble ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ åĩı éĢŁ Ġby Ġ è·Ŀç¦» ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġget Spline De cel eration By Distance ( distance : ĠDouble ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġde cel Minus One Ġ= ĠDE CELER ATION _ RATE Ġ- Ġ 1 . 0 ĊĠĠĠĠĠĠĠ Ġreturn Ġde cel Minus One Ġ* ĠMath . log ( distance Ġ/ Ġ( m Fl ing F riction Ġ* Ġm Physical Coeff )) Ġ/ ĠDE CELER ATION _ RATE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠéĢļè¿ĩ åĪĿå§ĭ éĢŁåº¦ èİ·åıĸ æľĢç»Ī æ»ĳ åĬ¨ è·Ŀç¦» ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Spline Fl ing Distance ( velocity : ĠInt ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġl Ġ= Ġget Spline De cel eration ( velocity ) ĊĠĠĠĠĠĠĠ Ġval Ġde cel Minus One Ġ= ĠDE CELER ATION _ RATE Ġ- Ġ 1 . 0 ĊĠĠĠĠĠĠĠ Ġreturn Ġm Fl ing F riction Ġ* Ġm Physical Coeff Ġ* ĠMath . exp ( DE CELER ATION _ RATE Ġ/ Ġde cel Minus One Ġ* Ġl ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠéĢļè¿ĩ éľĢè¦ģ æ»ĳ åĬ¨ çļĦ è·Ŀç¦» èİ·åıĸ åĪĿå§ĭ éĢŁåº¦ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Velocity By Distance ( distance : ĠDouble ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġl Ġ= Ġget Spline De cel eration By Distance ( distance ) ĊĠĠĠĠĠĠĠ Ġval Ġvelocity Ġ= Ġ( Math . exp ( l ) Ġ* Ġm Fl ing F riction Ġ* Ġm Physical Coeff Ġ/ ĠIN FLEX ION ) Ġas ĠInt ĊĠĠĠĠĠĠĠ Ġreturn ĠMath . abs ( velocity ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ĠReturns Ġthe Ġduration , Ġexpressed Ġin Ġmilliseconds ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Spline Fl ing Duration ( velocity : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġl Ġ= Ġget Spline De cel eration ( velocity ) ĊĠĠĠĠĠĠĠ Ġval Ġde cel Minus One Ġ= ĠDE CELER ATION _ RATE Ġ- Ġ 1 . 0 ĊĠĠĠĠĠĠĠ Ġreturn Ġ( 1 0 0 0 . 0 Ġ* ĠMath . exp ( l Ġ/ Ġde cel Minus One )). toInt () ĊĠĠĠ Ġ} Ċ }