/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 0 ĠW ac om . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠMIT ĠLicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ Ġ*/ Ċ package Ġcom . w ac om . will 3 . ink . vector . rendering . demo . tools Ċ Ċ class ĠMath Utils Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġpower ( v : ĠFloat , Ġp : ĠFloat ): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠMath . pow ( v . toDouble (), Ġp . toDouble ()). toFloat () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġperiodic ( v : ĠFloat , Ġp : ĠFloat ): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ( 0 . 5 Ġ- Ġ 0 . 5 Ġ* ĠMath . cos ( p Ġ* ĠMath . PI Ġ* Ġv )). toFloat () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġsig moid ( t : ĠFloat , Ġk : ĠFloat ): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ( 1 Ġ+ Ġk ) Ġ* Ġt Ġ/ Ġ( Math . abs ( t ) Ġ+ Ġk ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġsig moid 1 ( v : ĠFloat , Ġp : ĠFloat , Ġmin Value : ĠFloat Ġ= Ġ 0 . 0 f , ĠmaxValue : ĠFloat Ġ= Ġ 1 . 0 f ): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmiddle : ĠFloat Ġ= Ġ( max Value Ġ+ Ġmin Value ) Ġ* Ġ 0 . 5 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhal Interval Ġ= Ġ( max Value Ġ- Ġmin Value ) Ġ* Ġ 0 . 5 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġt Ġ= Ġ( v Ġ- Ġmiddle ) Ġ/ Ġhal Interval ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs Ġ= Ġsig moid ( t , Ġp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmiddle Ġ+ Ġs Ġ* Ġhal Interval ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġmap To ( value : ĠFloat , Ġsrc : ĠRange , Ġdest : ĠRange ): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ( value Ġ- Ġsrc . min ) Ġ/ Ġ( src . max Ġ- Ġsrc . min ) Ġ* Ġ( dest . max Ġ- Ġdest . min ) Ġ+ Ġdest . min ; ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġmap To ( value : ĠFloat , Ġsrc : ĠRange , Ġdest : ĠRange , Ġremap Function : Ġ( Float ) Ġ-> ĠFloat ): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( remap Function Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġnew Src Ġ= ĠRange ( remap Function ( src . min ), Ġremap Function ( src . max )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmap To ( remap Function ( value ), Ġnew Src , Ġdest ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmap To ( value , Ġsrc , Ġdest ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ }