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

  1. proc getArcEndpoints {canvas arc} {
  2. lassign [$canvas coords $arc] Xi Yi Xf Yf
  3.  
  4. set width [expr {$Xf - $Xi}]
  5. set height [expr {$Yf - $Yi}]
  6. set centX [expr {($Xf + $Xi)/2}]
  7. set centY [expr {($Yf + $Yi)/2}]
  8. set startA [$canvas itemcget $arc -start]
  9. set endA [expr {$startA + [$canvas itemcget $arc -extent]}]
  10.  
  11. set dtor [expr {4*atan(1)/180.0}]
  12.  
  13. set startX [expr {$centX + cos ($startA * $dtor) * $width / 2}]
  14. set startY [expr {$centY - sin ($startA * $dtor) * $height / 2}]
  15. set endX [expr {$centX + cos ($endA * $dtor) * $width / 2}]
  16. set endY [expr {$centY - sin ($endA * $dtor) * $height / 2}]
  17.  
  18. return [list $startX $startY $endX $endY]
  19. }