All Downloads are FREE. Search and download functionalities are using the official Maven repository.

scalaz.geo.ElevatedCurve.scala Maven / Gradle / Ivy

The newest version!
package scalaz
package geo

sealed trait ElevatedCurve {
  val curve: GeodeticCurve
  val elevation: Elevation

  lazy val length = {
    val d = curve.ellipsoidalDistance
    val e = elevation.value
    scala.math.sqrt(d * d + e * e) 
  }
}

trait ElevatedCurves {
  def elevatedCurve(c: GeodeticCurve, e: Elevation) = new ElevatedCurve {
    val curve = c
    val elevation = e
  }
}

object ElevatedCurve {
  import Scalaz._
  
  implicit def ElevatedCurveShow: Show[ElevatedCurve] = showBy(((_: ElevatedCurve).curve) &&& ((_: ElevatedCurve).elevation))

  implicit def ElevatedCurveEqual: Equal[ElevatedCurve] = equalBy(((_: ElevatedCurve).curve) &&& ((_: ElevatedCurve).elevation))

  implicit def ElevatedCurveOrder: Order[ElevatedCurve] = orderBy(((_: ElevatedCurve).curve) &&& ((_: ElevatedCurve).elevation))
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy