package Ġde . jos hu agle it ze . transformation network . simulator . util . geometry Ċ Ċ data Ġclass ĠTra verse ( val Ġcoordinates : ĠList < Coordinate >) Ġ{ ĊĠĠĠ Ġconstructor ( var arg Ġcoordinates : ĠCoordinate ) Ġ: Ġthis ( coordinates . asList ()) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck ( coordinates . size Ġ>= Ġ 2 ) Ġ{ Ġ" A Ġtraverse Ġneeds Ġat Ġleast Ġ 2 Ġcoordinates !" Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġstart Ġ= Ġcoordinates . first () ĊĠĠĠ Ġval Ġend Ġ= Ġcoordinates . last () ĊĊĠĠĠ Ġoperator Ġfun Ġplus ( coordinate : ĠCoordinate ) Ġ= Ġtransform Coordinates Ġ{ Ġit Ġ+ Ġcoordinate Ġ} ĊĠĠĠ Ġoperator Ġfun Ġminus ( coordinate : ĠCoordinate ) Ġ= Ġtransform Coordinates Ġ{ Ġit Ġ- Ġcoordinate Ġ} ĊĊĠĠĠ Ġfun Ġtransform Coordinates ( transformation : Ġ( Coordinate ) Ġ-> ĠCoordinate ) Ġ= ĊĠĠĠĠĠĠĠ ĠTra verse ( coordinates . map ( transformation )) ĊĊĠĠĠ Ġval Ġlength : ĠDouble ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġcoordinates ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. window ed ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. fold (. 0 ) Ġ{ Ġlength , Ġ( first , Ġsecond ) Ġ-> Ġlength Ġ+ Ġfirst . distance To ( second ) Ġ} Ċ } Ċ