package Ġcom . example . am ol abs . lab 3 Ċ Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 7 . app . AlertDialog Ċ import Ġandroid . support . v 7 . app . AppCompatActivity ; Ċ import Ġcom . example . am ol abs . R Ċ import Ġcom . example . am ol abs . lab 3 . interpolation . E yet ken Interpolator Ċ import Ġcom . example . am ol abs . lab 3 . interpolation . Interpolator Ċ import Ġcom . example . am ol abs . lab 3 . interpolation . Lag range Interpolator Ċ import Ġcom . example . am ol abs . lab 3 . interpolation . New ton Interpolator Ċ import Ġcom . github . mike phil . chart ing . data . Entry Ċ import Ġcom . github . mike phil . chart ing . data . Line Data Ċ import Ġcom . github . mike phil . chart ing . data . Line DataSet Ċ Ċ import Ġkotlinx . android . synt hetic . main . activity _ lab 3 .* Ċ import Ġkotlinx . android . synt hetic . main . content _ lab 3 .* Ċ import Ġjava . lang . Number FormatException Ċ import Ġkotlin . collections . ArrayList Ċ import Ġkotlin . math . cos Ċ import Ġkotlin . math . pow Ċ import Ġandroid . text . method . Scrolling Movement Method Ċ import Ġcom . github . mike phil . chart ing . interfaces . datasets . IL ine DataSet ĊĊ Ċ /** ĊĠĠĠ Ġcalculate Ġfunction Ġfrom Ġthe Ġtask Ċ Ġ*/ Ċ fun Ġtask Function ( x : ĠDouble ): ĠDouble { ĊĠĠĠ Ġreturn Ġcos ( x Ġ+ Ġx . pow ( cos ( x ))) Ċ } Ċ Ċ /** Ċ Ġ* Ġcalculate Ġbase Ġvalues Ġ( no Ġinterpolation , Ġonly Ġformula ) Ċ Ġ* Ġ@ param Ġstart Ġx Ġof Ġfirst Ġdot Ċ Ġ* Ġ@ param Ġend Ġx Ġof Ġlast Ġdot Ċ Ġ* Ġ@ param Ġdot Amount Ġamount Ġof Ġdots Ġin Ġbase Ġdata Ċ Ġ*/ Ċ fun Ġget Base Vals ( start : ĠDouble , Ġend : ĠDouble , Ġdot Amount : ĠInt ): ĠArrayList < Entry >{ ĊĠĠĠ Ġval Ġlst Ġ= ĠArrayList < Entry >() ĊĠĠĠ Ġvar Ġx : Double ĊĠĠĠ Ġvar Ġy : Double ĊĠĠĠ Ġfor Ġ( i Ġin Ġ 1 .. dot Amount ){ ĊĠĠĠĠĠĠĠ Ġx Ġ= Ġstart Ġ+ Ġ( end Ġ- Ġstart ) Ġ/ Ġdot Amount Ġ* Ġi ĊĠĠĠĠĠĠĠ Ġy Ġ= Ġtask Function ( x ) ĊĠĠĠĠĠĠĠ Ġlst . add ( Entry ( x . toFloat (), Ġy . toFloat ())) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġlst Ċ } Ċ Ċ class ĠLab 3 Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġvar Ġbase Entries Ġ= ĠArrayList < Entry >() ĊĠĠĠ Ġvar Ġentries Ġ= ĠArrayList < Entry >() ĊĊĠĠĠ Ġprivate Ġfun Ġalert View ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠAlertDialog . Builder ( this @ Lab 3 Activity ) ĊĠĠĠĠĠĠĠ Ġbuilder . setTitle (" ÐŁ Ð¾Ð² Ñĸ Ð´ Ð¾Ð¼ Ð»ÐµÐ½ Ð½Ñı ") ĊĠĠĠĠĠĠĠ Ġbuilder . setMessage ( message ) ĊĠĠĠĠĠĠĠ Ġbuilder . set Positive Button (" YES ") Ġ{ Ġ_, Ġ_ Ġ-> } ĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= Ġbuilder . create () ĊĠĠĠĠĠĠĠ Ġdialog . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġentry List ToString ( arr : ĠArrayList < Entry >): ĠString { ĊĠĠĠĠĠĠĠ Ġvar Ġres Ġ= Ġ" ÐĹ Ð½Ð°Ñĩ ÐµÐ½ Ð½Ñı :\ n " ĊĠĠĠĠĠĠĠ Ġfor Ġ( i : ĠEntry Ġin Ġarr ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres Ġ+= Ġ" (% . 5 f Ġ, Ġ%. 5 f )\ n ". format ( i . x , Ġi . y ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġres Ġ+= Ġ"\ n \ n \ n " ĊĠĠĠĠĠĠĠ Ġreturn Ġres ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdraw Base Entries (){ ĊĠĠĠĠĠĠĠ Ġval ĠdataSet Circle Colors Ġ= ĠArrayList < Int >() ĊĠĠĠĠĠĠĠ ĠdataSet Circle Colors . add ( Color . BLUE ) ĊĠĠĠĠĠĠĠ Ġval ĠdataSet Ġ= ĠLine DataSet ( base Entries , Ġ" Ðĳ Ð°Ð· Ð¾Ð² Ñĸ ĠÐĹ Ð½Ð°Ñĩ ÐµÐ½ Ð½Ñı ") Ġ// Ġadd Ġbase Entries Ġto Ġdataset ĊĠĠĠĠĠĠĠ ĠdataSet . color Ġ= ĠColor . BLUE ĊĠĠĠĠĠĠĠ ĠdataSet . circle Colors Ġ= ĠdataSet Circle Colors ĊĠĠĠĠĠĠĠ Ġval Ġline Data Ġ= ĠLine Data ( data Set ) ĊĠĠĠĠĠĠĠ Ġchart . data Ġ= Ġline Data ĊĠĠĠĠĠĠĠ ĠtextView 1 1 . text Ġ= Ġentry List ToString ( base Entries ) ĊĠĠĠĠĠĠĠ Ġchart . invalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdraw Entries (){ ĊĠĠĠĠĠĠĠ Ġval Ġdatasets Ġ= ĠArrayList < IL ine DataSet >() ĊĊĠĠĠĠĠĠĠ Ġval Ġbase Ġ= ĠLine DataSet ( base Entries , Ġ" Ðĳ Ð°Ð· Ð¾Ð² Ñĸ ĠÐĹ Ð½Ð°Ñĩ ÐµÐ½ Ð½Ñı ") ĊĠĠĠĠĠĠĠ Ġval Ġbase Circle Colors Ġ= ĠArrayList < Int >() ĊĠĠĠĠĠĠĠ Ġbase Circle Colors . add ( Color . BLUE ) ĊĠĠĠĠĠĠĠ Ġbase . color Ġ= ĠColor . BLUE ĊĠĠĠĠĠĠĠ Ġbase . circle Colors Ġ= Ġbase Circle Colors ĊĊĠĠĠĠĠĠĠ Ġval Ġnew Ġ= ĠLine DataSet ( entries , Ġ" ÐĹ Ð½Ð°Ñĩ ÐµÐ½ Ð½Ñı ĠÐ· ĠÑ ĸ Ð½ ÑĤÐµÑĢ Ð¿ Ð¾Ð» Ñı ÑĨ Ñĸ ÑĶ Ñİ ") ĊĠĠĠĠĠĠĠ Ġval Ġnew Circle Colors Ġ= ĠArrayList < Int >() ĊĠĠĠĠĠĠĠ Ġnew Circle Colors . add ( Color . RED ) ĊĠĠĠĠĠĠĠ Ġnew . color Ġ= ĠColor . RED ĊĠĠĠĠĠĠĠ Ġnew . circle Colors Ġ= Ġnew Circle Colors ĊĊĠĠĠĠĠĠĠ Ġdatasets . add ( new ) ĊĠĠĠĠĠĠĠ Ġdatasets . add ( base ) ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠLine Data ( datasets ) ĊĠĠĠĠĠĠĠ Ġchart . data Ġ= Ġdata ĊĠĠĠĠĠĠĠ ĠtextView 1 1 . text Ġ= Ġentry List ToString ( entries ) ĊĠĠĠĠĠĠĠ Ġchart . invalidate () ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġconfigure Chart (){ ĊĠĠĠĠĠĠĠ Ġchart . is Drag X Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġchart . is Drag Y Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġchart . is Scale Y Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġchart . is Scale X Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġchart . description . text Ġ= Ġ" Ðĵ ÑĢÐ° ÑĦ Ñĸ Ðº ĠÑĦÑĥÐ½Ðº ÑĨ Ñĸ Ñ Ĺ " ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġinterpolate (){ ĊĠĠĠĠĠĠĠ Ġif Ġ( base Entries . isEmpty ()) return ĊĠĠĠĠĠĠĠ Ġvar Ġinterpol ator : ĠInterpol ator Ġ= ĠL ag range Interpolator () ĊĠĠĠĠĠĠĠ Ġvar Ġdots In Between Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġtry { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdots In Between Ġ= Ġinterpolation _ steps . text . toString (). toInt () Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} catch Ġ( e : ĠNumber FormatException ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalert View (" ÐĿ ÐµÐº Ð¾ÑĢ ÐµÐºÑĤ Ð½Ð° ĠÐº Ñĸ Ð»ÑĮ Ðº Ñĸ ÑģÑĤÑĮ ĠÐº ÑĢ Ð¾Ðº Ñĸ Ð² ĠÑ ĸ Ð½ ÑĤÐµÑĢ Ð¿ Ð¾Ð» Ñı ÑĨ Ñĸ Ñ Ĺ , ĠÐ² Ð¸Ðº Ð¾ÑĢ Ð¸ÑģÑĤ Ð°Ð½ Ð¾ Ġ 1 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwhen ( radio _ group _ lab 3 . checked RadioButton Id ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlag range . id Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinterpol ator Ġ= ĠL ag range Interpolator () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalert View (" Ð Ĩ Ð½ ÑĤÐµÑĢ Ð¿ Ð¾Ð» Ñı ÑĨ Ñĸ Ñİ ĠÐ±ÑĥÐ´ Ðµ ĠÐ² Ð¸Ðº Ð¾Ð½ Ð°Ð½ Ð¾ ĠÐ¼ÐµÑĤÐ¾Ð´ Ð¾Ð¼ ĠÐ Ľ Ð°Ð³ ÑĢÐ°Ð½ Ð¶ Ð° ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew ton . id Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinterpol ator Ġ= ĠNew ton Interpolator () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalert View (" Ð Ĩ Ð½ ÑĤÐµÑĢ Ð¿ Ð¾Ð» Ñı ÑĨ Ñĸ Ñİ ĠÐ±ÑĥÐ´ Ðµ ĠÐ² Ð¸Ðº Ð¾Ð½ Ð°Ð½ Ð¾ ĠÐ¼ÐµÑĤÐ¾Ð´ Ð¾Ð¼ ĠÐĿ ÑĮ ÑİÑĤ Ð¾Ð½ Ð° ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġnew Entries Ġ= ĠArrayList < Entry >( base Entries . size Ġ* Ġ( dots In Between Ġ+ Ġ 1 ) Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġ 0 Ġuntil Ġbase Entries . size Ġ- Ġ 1 ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Entries . add ( base Entries [ i ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġ 1 .. dots In Between ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Entries . add ( interpol ator . interpolate ( base Entries , Ġbase Entries [ i ]. x Ġ+ Ġ( base Entries [ i + 1 ]. x Ġ- Ġbase Entries [ i ]. x )/ dots In Between * j )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġnew Entries . add ( base Entries [ base Entries . size - 1 ]) ĊĠĠĠĠĠĠĠ Ġentries Ġ= Ġnew Entries ĊĠĠĠĠĠĠĠ Ġdraw Entries () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdraw Base Values (){ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase Entries Ġ= Ġget Base Vals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrange Start . text . toString (). toDouble (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrange End . text . toString (). toDouble (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdot Amount . text . toString (). toInt ()) ĊĠĠĠĠĠĠĠ Ġ} catch Ġ( e : ĠNumber FormatException ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalert View (" ÐĿ ÐµÐº Ð¾ÑĢ ÑĢ ÐµÐºÑĤ Ð½Ð¸ Ð¹ ĠÑĦ Ð¾ÑĢÐ¼ Ð°ÑĤ ĠÐ² Ð²ÐµÐ´ ÐµÐ½Ð¸ Ñħ ĠÐ½ Ð¾Ð¼ ÐµÑĢ Ñĸ Ð² ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( base Entries . isEmpty ()) Ġreturn ĊĠĠĠĠĠĠĠ Ġdraw Base Entries () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ lab 3 ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĠĠĠĠĠĠĠ ĠtextView 1 1 . movement Method Ġ= ĠScroll ing Movement Method () ĊĊĠĠĠĠĠĠĠ Ġlag range . toggle () Ġ Ġ// Ġlag range Ġinterpolation Ġis Ġdefault Ġmethod ĊĠĠĠĠĠĠĠ Ġconfigure Chart () ĊĠĠĠĠĠĠĠ Ġbase _ vals _ lab 3 . setOnClickListener Ġ{ draw Base Values ()} ĊĠĠĠĠĠĠĠ Ġinterpolate _ lab 3 . setOnClickListener Ġ{ interpolate ()} ĊĠĠĠ Ġ} Ċ Ċ } Ċ