aboutsummaryrefslogtreecommitdiff
path: root/vfd-dashboard/src/main/scala/vfd/dashboard/ui/instruments/Balance.scala
blob: ef5a3cc2f41a0f69709c9c2aa3a8b004e6ca74b8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package vfd.dashboard.ui.instruments

import org.scalajs.dom.html
import vfd.dashboard.Environment

class Balance(implicit env: Environment) extends SvgInstrument[(Double, Double, Double, Double)] {
  import SvgInstrument._
  
  val initial = (0.0, 0.0, 0.0, 0.0)
  
  lazy val element = svgObject("balance")
  lazy val position = part("position")
  lazy val moveable = Seq(position)
  
  protected def update(value: (Double, Double, Double, Double)) = {
    val m0 = value._1
    val m1 = value._2
    val m2 = value._3
    val m3 = value._4
    val s = m0 + m1 + m2 + m3
    val i = (m0 - m2) / s
    val j = (m1 - m3) / s
    val x = 0.5 * (i - j)
    val y = 0.5 * (-i - j)
    translate(position, (x * 50).toInt, (y * 50).toInt)
  }
}