Require Class/basicCurveFromCurve

basicCurveFromCurve Subclass basicOffsetCurve {
  ClassVar {offset .1} {frame 0}
  ClassVar "domain {[basicCurveFromCurve get domain]}"

  Method SetValues {} {
    Vars offset function f-setup param
    set object [Self Reference Object]
    set P [var P]

    set f-setup [join [list \
      "uplevel {upvar \#0 $P $P}" \
      "uplevel {[list let _offset $offset]}" \
    ] \n]

    set function [join [list \
      "set $P \[$object F \${$param}\]" \
      "set _P \[+ \${$P} \[* \$_offset \[$object Normal \${$param}\]\]\]" \
      {foreach _i [array names _X] {set _X($_i) [lindex $_P $_i]}} \
    ] \n ]
  }
}
