obj method canvaseditor shearSelection {dot dot0 cx cy phi {mode parallel}} { set transformL [list rotate [list $phi $cx $cy]] # lassign [$dot storeXY info] baseX baseY $dot storeXY $dot transform {*}$transformL $dot storeXY $baseX $baseY # $dot0 transform {*}$transformL set x [$dot cget -x] set y [$dot cget -y] set x0 [$dot0 cget -x] set y0 [$dot0 cget -y] lappend transformL shearHorizontal [list $cy $y0 [- $x $x0]] if {$mode ne "parallel"} then { set fac [expr {($y - $cy) / ($y0 - $cy)}] lappend transformL scaleVertical [list $cy $fac] } lappend transformL rotate [list [- $phi] $cx $cy] foreach obj [my selection] { foreach dot [$obj dots] { $dot transform {*}$transformL } if {[$obj isa line]} then { $obj dots lines draw coords } else { $obj draw } } }
© Wolf-Dieter Busch | Home | Sitemap | Urheber | A-Z