/* Ċ Ġ* Ġ Ġ< h 1 > License Ġ:</ h 1 > Ġ< br /> Ċ Ġ* ĠThe Ġfollowing Ġcode Ġis Ġdeliver Ġas Ġis . Ġ< br /> Ċ Ġ* Ġ ĠYou Ġcan Ġuse , Ġmodify , Ġthe Ġcode Ġas Ġyour Ġneed Ġfor Ġany Ġusage .< br /> Ċ Ġ* Ġ ĠBut Ġyou Ġcan 't Ġdo Ġany Ġaction Ġthat Ġavoid Ġme Ġor Ġother Ġperson Ġuse , Ġmodify Ġthis Ġcode .< br /> Ċ Ġ* Ġ ĠThe Ġcode Ġis Ġfree Ġfor Ġusage Ġand Ġmodification , Ġyou Ġcan 't Ġchange Ġthat Ġfact . Ċ Ġ*/ Ċ Ċ package Ġfr . j help . engine . scene . geom . robot . animation Ċ Ċ import Ġfr . j help . animations . Animation Ċ import Ġfr . j help . animations . inter pool ation . De cel eration Interpolation Ċ import Ġfr . j help . engine . scene . geom . robot . Robot Ċ import Ġfr . j help . engine . scene . geom . robot . Robot Animation Ċ import Ġfr . j help . engine . scene . geom . robot . Robot Position Ċ import Ġkotlin . math . max Ċ Ċ /** Ċ Ġ* ĠCreate Ġanimation Ġthat Ġmake Ġrobot Ġto Ġrun Ċ Ġ* Ġ@ param Ġnumber Frame Per Step ĠNumber Ġframe Ġto Ġmake Ġa Ġstep Ċ Ġ* Ġ@ param Ġnumber Step ĠNumber Ġstep Ġto Ġmake Ċ Ġ* Ġ@ return ĠCreated Ġanimation Ċ Ġ*/ Ċ fun ĠRobot . run ( number Frame Per Step : ĠInt Ġ= Ġ 1 , Ġnumber Step : ĠInt Ġ= Ġ 1 ): ĠAnimation Ċ { ĊĠĠĠ Ġval Ġframe Ġ= Ġmax ( 1 , Ġnumber Frame Per Step ); ĊĠĠĠ Ġval Ġsemi Frame Ġ= Ġframe Ġshr Ġ 1 ĊĠĠĠ Ġval Ġportion Ġ= Ġ 5 ĊĠĠĠ Ġval Ġpart Ġ= Ġframe Ġ/ Ġportion ĊĠĠĠ Ġval Ġleft Ġ= Ġframe Ġ- Ġpart ĊĠĠĠ Ġval Ġangle Ġ= Ġ( 3 6 Ġ* Ġportion ) Ġ/ Ġ( portion Ġ+ Ġ 1 ) ĊĠĠĠ Ġval Ġstep Max Ġ= Ġmax ( 1 , Ġnumber Step ) ĊĠĠĠ Ġval Ġanimation Ġ= ĠRobot Animation ( this ) ĊĠĠĠ Ġval Ġrobot Position 1 Ġ= ĊĠĠĠĠĠĠĠ ĠRobot Position ( right Sh oulder Angle X Ġ= Ġ 1 8 0 f Ġ- Ġangle , Ġleft Sh oulder Angle X Ġ= Ġ 1 8 0 f Ġ+ Ġangle , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright El bow Angle X Ġ= Ġ- 9 0 f , Ġleft El bow Angle X Ġ= Ġ- 9 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright Ass Angle X Ġ= Ġ 1 8 0 f Ġ+ Ġangle , Ġleft Ass Angle X Ġ= Ġ 9 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright K nee Angle X Ġ= Ġ 0 f , Ġleft K nee Angle X Ġ= Ġ 9 0 f ) ĊĠĠĠ Ġval Ġrobot Position 2 Ġ= ĠRobot Position ( right Sh oulder Angle X Ġ= Ġ 1 4 4 f , Ġleft Sh oulder Angle X Ġ= Ġ 2 1 6 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright El bow Angle X Ġ= Ġ- 9 0 f , Ġleft El bow Angle X Ġ= Ġ- 9 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright Ass Angle X Ġ= Ġ 2 1 6 f , Ġleft Ass Angle X Ġ= Ġ 1 4 4 f ) ĊĠĠĠ Ġval Ġrobot Position 3 Ġ= ĊĠĠĠĠĠĠĠ ĠRobot Position ( right Sh oulder Angle X Ġ= Ġ 1 8 0 f Ġ+ Ġangle , Ġleft Sh oulder Angle X Ġ= Ġ 1 8 0 f Ġ- Ġangle , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright El bow Angle X Ġ= Ġ- 9 0 f , Ġleft El bow Angle X Ġ= Ġ- 9 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright Ass Angle X Ġ= Ġ 9 0 f , Ġleft Ass Angle X Ġ= Ġ 1 8 0 f Ġ+ Ġangle , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright K nee Angle X Ġ= Ġ 9 0 f , Ġleft K nee Angle X Ġ= Ġ 0 f ) ĊĠĠĠ Ġval Ġrobot Position 4 Ġ= ĠRobot Position ( right Sh oulder Angle X Ġ= Ġ 2 1 6 f , Ġleft Sh oulder Angle X Ġ= Ġ 1 4 4 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright El bow Angle X Ġ= Ġ- 9 0 f , Ġleft El bow Angle X Ġ= Ġ- 9 0 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright Ass Angle X Ġ= Ġ 1 4 4 f , Ġleft Ass Angle X Ġ= Ġ 2 1 6 f ) ĊĠĠĠ Ġvar Ġkey Ġ= Ġsemi Frame ĊĠĠĠ Ġanimation . frame ( key , Ġrobot Position 1 ) ĊĠĠĠ Ġvar Ġstep Ġ= Ġ 1 ĊĊĠĠĠ Ġwhile Ġ( step Ġ< Ġstep Max ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġkey Ġ+= Ġleft ĊĠĠĠĠĠĠĠ Ġanimation . frame ( key , Ġif Ġ(( step Ġand Ġ 1 ) Ġ== Ġ 0 ) Ġrobot Position 1 Ġelse Ġrobot Position 3 ) ĊĠĠĠĠĠĠĠ Ġkey Ġ+= Ġpart ĊĠĠĠĠĠĠĠ Ġanimation . frame ( key , Ġif Ġ(( step Ġand Ġ 1 ) Ġ== Ġ 0 ) Ġrobot Position 2 Ġelse Ġrobot Position 4 ) ĊĠĠĠĠĠĠĠ Ġstep ++ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġkey Ġ+= Ġframe ĊĠĠĠ Ġanimation . frame ( key , ĠRobot Position (), ĠDec el eration Interpolation ( 2 f )) ĊĠĠĠ Ġreturn Ġanimation Ċ } Ċ