Invoked by objects line, fill, group.
obj method dot scaleObj {x y x0 y0 refX refY {mode both}} {
set baseHlen [- $refX $x0]
set hLen [- $x $x0]
if {$mode eq "vertical"} then {
set hScale 1.0
} else {
set hScale [/ [double $hLen] $baseHlen]
}
#
set baseVlen [- $refY $y0]
set vLen [- $y $y0]
if {$mode eq "horizontal"} then {
set vScale 1.0
} else {
set vScale [/ [double $vLen] $baseVlen]
}
#
if {$mode eq "proportional"} then {
set hScale [max $hScale $vScale]
set vScale $hScale
}
#
set x1 [my baseX]
set y1 [my baseY]
set hDist0 [- $x1 $x0]
set vDist0 [- $y1 $y0]
set hDist1 [* $hDist0 $hScale]
set vDist1 [* $vDist0 $vScale]
set x2 [+ $x0 $hDist1]
set y2 [+ $y0 $vDist1]
$self configure -x $x2 -y $y2
}
© Wolf-Dieter Busch | Home | Sitemap | Urheber | A-Z