Require Class/basicSurfaceFromSurface

basicSurfaceFromSurface Subclass basicOffsetSurface {
  ClassVar {offset .1} {frame 0}
  ClassVar "domain {[basicSurfaceFromSurface get domain]}"

  Method SetValues {} {
    Vars offset f-u f-setup uv
    set object [Self Reference Object]
    set u [lindex $uv 0]; set v [lindex $uv 1]
    set P [var P]

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

    set f-u [join [list \
      "set $P \[$object F \${$u} \${$v}\]" \
      "set _P \[+ \${$P} \[* \$_offset\
         \[$object UnitNormal \${$u} \${$v}\]\]\]" \
      {foreach _i [array names _X] {set _X($_i) [lindex $_P $_i]}} \
    ] \n ]
  }
}
