Tcl Source Code

Artifact [bc8983663f]
Login

Artifact bc8983663f650d0119d65922333fecebd9a77868:

Attachment "bug.tcl" to ticket [1273713fff] added by alvinpleung 2005-08-27 00:33:01. Also attachment "bug.tcl" to ticket [1273713fff] added by alvinpleung 2005-08-26 07:38:28.
proc testCase1 {edgeCoords vertices} {
   set x1 [lindex $edgeCoords 0]
   set y1 [lindex $edgeCoords 1]

   set x0 [lindex $vertices 0]
   set y0 [lindex $vertices 1]

   set rad2deg [expr 180 / 3.141592654]

   set x1_sq [expr $x1 * $x1]
   set y1_sq [expr $y1 * $y1]
   set x0_sq [expr $x0 * $x0]

#  puts "x0 = $x0, x0^2 = $x0_sq"
#  puts "x1 = $x1, x1^2 = $x1_sq"
#  puts "y1 = $y1, y1^2 = $y1_sq"

   set denominator [expr 1.0 / ($x1_sq + $y1_sq)]
#  puts "$x1_sq + $y1_sq = [expr $x1_sq + $y1_sq]"
#  puts "denominator = $denominator"

   set factor1 [expr -1 * $x0_sq + $x1_sq + $y1_sq]
#  puts "factor1 = $factor1"

   set x0x1 [expr $x0 * $x1]
#  puts "x0x1 = $x0x1"

   if {$factor1 > 0.0} {
      set y1_sqrt_factor1 [expr $y1* sqrt($factor1)]

#     puts "$x0x1 - $y1 * sqrt($factor1) = [expr $x0x1 - $y1_sqrt_factor1]"
#     puts "$x0x1 + $y1 * sqrt($factor1) = [expr $x0x1 + $y1_sqrt_factor1]"

      # have to split up the expr; otherwise, acos failed
	  set factor2 [expr ($x0x1 - $y1_sqrt_factor1) * $denominator]
	  set factor3 [expr ($x0x1 + $y1_sqrt_factor1) * $denominator]

#     puts "($x0x1 - $y1 * sqrt($factor1)) * $denominator = $factor2"
#     puts "($x0x1 + $y1 * sqrt($factor1)) * $denominator = $factor3"

#     puts "acos(($x0x1 - $y1_sqrt_factor1) * $denominator)) = [expr acos($factor2)]"
#     puts "acos(($x0x1 + $y1_sqrt_factor1) * $denominator)) = [expr acos($factor3)]"

      set angles1 [list [expr -1 * acos($factor2)] [expr acos($factor2)] \
         [expr -1 * acos($factor3)] [expr acos($factor3)]]

      puts "angles1 - $angles1"

      # have to split up the expr; otherwise, acos failed
	  set factor2 [expr acos(($x0x1 - $y1_sqrt_factor1) * $denominator)]
	  set factor3 [expr acos($x0x1 + $y1_sqrt_factor1) * $denominator)]

      set angles2 [list [expr -1 * $factor2] [expr $factor2] \
         [expr -1 * $factor3] [expr $factor3]]

      puts "angles2 - $angles2"
   } else {
      ::error "failed to compute angle"
   }
}

testCase1 [list -1792.986000 -1792.986000] [list -1792.986000 -1792.986000]