I don't know math, but you can identify the rogues with tagging -- its usually the red "one"s for me, so I didn't expand on tags two and three

#! perl -slw use strict; use Tk; our $W = our $H = 600; ## 2012-07-31-18:49:09 use constant PI => 3.1415926535897932384626433832795; use constant RAD => 180 / PI; sub curvedArrow { my $tag = 'thetag my( $cnv, $x1, $y1, $x2, $y2, $color ) = ( ' . +join(', ', @_ ).')'; my( $cnv, $x1, $y1, $x2, $y2, $color ) = @_; my $rad = sqrt( abs( $x1 - $x2 )**2 + abs( $y1 - $y2 )**2 ); my $q = sqrt( ( $x2 - $x1 )**2 + ( $y2 - $y1 )**2 ); my( $x3, $y3 ) = ( ( $x1 + $x2 ) / 2, ( $y1 + $y2 ) / 2 ); my $xc = $x3 + sqrt( $rad**2 - ( $q / 2 )**2 ) * ( $y1 - $y2 ) / $ +q; my $yc = $y3 + sqrt( $rad**2 - ( $q / 2 )**2 ) * ( $x2 - $x1 ) / $ +q; my $a1 = atan2( ( $yc - $y1 ) , -( $xc - $x1 ) ) * RAD; my $a2 = atan2( ( $yc - $y2 ) , -( $xc - $x2 ) ) * RAD; my @one = ( $xc - $rad, $yc - $rad, $xc + $rad, $yc + $rad, -style => 'arc', -start => $a1, -extent => $a2 - $a1, ); $cnv->createArc( @one, -outline=> $color, -tags => ["one $tag ", "one @one"], ); my $r2 = $rad / 15; $cnv->createArc( $x1-$r2, $y1-$r2, $x1+$r2, $y1+$r2, -start=>$a1-77, -extent=>($a2-$a1)/2, -fill=> $color, -tags => ["two $tag "], ); $cnv->createArc( $x2-$r2, $y2-$r2, $x2+$r2, $y2+$r2, -start=> ( $a2+107 ) %360, -extent=>($a2-$a1)/2, -fill=> $colo +r, -tags => ["three $tag "], ); return $xc, $yc; } our $W //= 1000; our $H //= 800; my $mw = new MainWindow(-title => 'Test'); my $canvas = $mw->Canvas(-width => $W, -height => $H )->pack; for( 1 .. 10 ) { my( $x1, $y1 ) = ( int( rand( $W ) ), int( rand( $H ) ) ); $canvas->createLine( $x1-5, $y1, $x1+5, $y1, -fill => 'blue' ); $canvas->createLine( $x1, $y1-5, $x1, $y1+5, -fill => 'blue' ); my( $x2, $y2 ) = ( int( rand $W ), int( rand $H ) ); $canvas->createLine( $x2-5, $y2, $x2+5, $y2, -fill => 'green' ); $canvas->createLine( $x2, $y2-5, $x2, $y2+5, -fill => 'green' ); my( $xc, $yc ) = curvedArrow( $canvas, $x1, $y1, $x2, $y2, 'black' + ); $canvas->createLine( $xc-5, $yc, $xc+5, $yc, -fill => 'red' ); $canvas->createLine( $xc, $yc-5, $xc, $yc+5, -fill => 'red' ); ( $xc, $yc ) = curvedArrow( $canvas, $x2, $y2, $x1, $y1, 'red' ) +; $canvas->createLine( $xc-5, $yc, $xc+5, $yc, -fill => 'red' ); $canvas->createLine( $xc, $yc-5, $xc, $yc+5, -fill => 'red' ); } #~ $canvas->bind( '<<1>>', \&tagsUnderMouse ); #~ $canvas->bind( '<Button-1>', \&tagsUnderMouse ); #~ $canvas->bind( '<ButtonPress-1>' , \&tagsUnderMouse ); $mw->bind( ref( $canvas ), '<ButtonPress-1>' , \&tagsUnderMouse ); MainLoop; sub tagsUnderMouse { warn "@_"; #~ my $canvas = $Tk::event->W; my $x = $Tk::event->X; my $y = $Tk::event->Y; my( $canvas ) = @_; use Data::Dump; my @closest = $canvas->find( closest => $x, $y ) ; #~ my %ccget = map { $_ => [ $canvas->itemconfigure($_) ] } @clos +est; my %ccget = map { $_ => [ $canvas->itemcget($_, '-tags') ] } @clo +sest; dd [ "$canvas", \@closest , \%ccget ]; }

In reply to Re: My math error or Perl's? by Anonymous Monk
in thread My math error or Perl's? by BrowserUk

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.