Posted to tcl by emiliano at Thu Dec 25 16:36:55 GMT 2008view pretty

proc getArcEndpoints {canvas arc} {
        lassign [$canvas coords $arc] Xi Yi Xf Yf

        set width  [expr {$Xf - $Xi}]
        set height [expr {$Yf - $Yi}]
        set centX  [expr {($Xf + $Xi)/2}]
        set centY  [expr {($Yf + $Yi)/2}]
        set startA [$canvas itemcget $arc -start]
        set endA   [expr {$startA + [$canvas itemcget $arc -extent]}]

        set dtor   [expr {4*atan(1)/180.0}]

        set startX [expr {$centX + cos ($startA * $dtor) * $width / 2}]
        set startY [expr {$centY - sin ($startA * $dtor) * $height / 2}]
        set endX   [expr {$centX + cos ($endA * $dtor) * $width / 2}]
        set endY   [expr {$centY - sin ($endA * $dtor) * $height / 2}]

        return [list $startX $startY $endX $endY]
}