[Pgp-tools-commit] r624 - in trunk: debian springgraph
Guilhem Moulin
guilhem-guest at moszumanska.debian.org
Thu May 15 17:17:48 UTC 2014
Author: guilhem-guest
Date: 2014-05-15 17:17:48 +0000 (Thu, 15 May 2014)
New Revision: 624
Modified:
trunk/debian/changelog
trunk/springgraph/springgraph
Log:
springgraph: Avoid 'illegal division by zero' errors.
When dealing with isolated nodes and/or degenerated cylinders.
Closes: LP #1267981.
Modified: trunk/debian/changelog
===================================================================
--- trunk/debian/changelog 2014-05-15 17:17:44 UTC (rev 623)
+++ trunk/debian/changelog 2014-05-15 17:17:48 UTC (rev 624)
@@ -10,6 +10,9 @@
* sig2dot:
+ Apply -d on OpenPGP signatures and revocation certificates only.
(LP: #393242)
+ * springgraph:
+ + Avoid 'illegal division by zero' errors when dealing with isolated nodes
+ and/or degenerated cylinders. (LP: #1267981)
-- Guilhem Moulin <guilhem at guilhem.org> Thu, 15 May 2014 15:21:02 +0200
Modified: trunk/springgraph/springgraph
===================================================================
--- trunk/springgraph/springgraph 2014-05-15 17:17:44 UTC (rev 623)
+++ trunk/springgraph/springgraph 2014-05-15 17:17:48 UTC (rev 624)
@@ -383,20 +383,20 @@
$node{$nodenum}{oldz} = $node{$nodenum}{z} if $pov_or_vrml;
$xmove = 0;
$ymove = 0;
+ $zmove = 0 if $pov_or_vrml;
}
for $source (@nodelist)
{
$movecount = 0;
for $dest (@nodelist)
{
- next if ($source eq $dest);
+ next if $source eq $dest; # loops are not supported
$xdist = $node{$source}{oldx} - $node{$dest}{oldx};
$ydist = $node{$source}{oldy} - $node{$dest}{oldy};
- $dist = $xdist*$xdist + $ydist*$ydist;
- if ($pov_or_vrml)
- {
- $zdist = $node{$source}{oldz} - $node{$dest}{oldz};
- $dist += $zdist*$zdist;
+ $dist = $xdist**2 + $ydist**2;
+ if ($pov_or_vrml) {
+ $zdist = $node{$source}{oldz} - $node{$dest}{oldz};
+ $dist += $zdist**2;
}
# $distance = sqrt($dist);
$percent = $push / $dist;
@@ -420,9 +420,12 @@
# print STDERR "is: $node[$source]{oldx} $node[$source]{oldy} $xdist $ydist, want: $wantxdist $wantydist ($newdist2)\n";
}
- $xmove = $xmove / $movecount;
- $ymove = $ymove / $movecount;
- $zmove = $zmove / $movecount if $pov_or_vrml;
+ if ($movecount) {
+ # renormalize if there are multiple nodes
+ $xmove /= $movecount;
+ $ymove /= $movecount;
+ $zmove /= $movecount if $pov_or_vrml;
+ }
$node{$source}{x} -= $xmove;
$node{$source}{y} -= $ymove;
$node{$source}{z} -= $zmove if $pov_or_vrml;
@@ -861,21 +864,19 @@
my $dx=$x1-$x2;
my $dy=$y1-$y2;
my $dz=$z1-$z2;
- if (1) {
- unless (0) {
- $length = sqrt($dx*$dx + $dy*$dy + $dz*$dz);
- $rx = $dx;
- $ry = ($dy+$length);
- $rz = $dz;
- $dist = sqrt(abs($rx)**2 + abs($ry)**2);
- $dist = sqrt(abs($rz)**2 + abs($dist)**2);
- $rx = $rx / $dist;
- $ry = $ry / $dist;
- $rz = $rz / $dist;
- $t = ($x1-($dx/2))." ".($y1-($dy/2))." ".($z1-($dz/2));
- $r = "$rx $ry $rz $pi";
- }
+ $length = sqrt($dx**2 + $dy**2 + $dz**2);
+ $rx = $dx;
+ $ry = $dy+$length;
+ $rz = $dz;
+ $dist = sqrt($rx**2 + $ry**2 + $rz**2);
+ if ($dist) {
+ # renormalize if the cylinder is not degenerated
+ $rx /= $dist;
+ $ry /= $dist;
+ $rz /= $dist;
}
+ $t = ($x1-($dx/2))." ".($y1-($dy/2))." ".($z1-($dz/2));
+ $r = "$rx $ry $rz $pi";
return ($t,$r,$length);
}
More information about the Pgp-tools-commit
mailing list