lcsim/src/org/lcsim/fit/zsegment
diff -u -r1.2 -r1.3
--- ZSegmentFitter.java 29 Nov 2007 19:49:10 -0000 1.2
+++ ZSegmentFitter.java 11 Dec 2007 20:46:25 -0000 1.3
@@ -103,9 +103,9 @@
int j = (i+1) % nv;
double[] p0 = _polygon.get(i);
double[] p1 = _polygon.get(j);
- double darea = 0.5*(p0[0]*p1[1]-p1[0]*p0[1]);
+ double darea = 0.5*(p0[0]*p1[1] - p1[0]*p0[1]);
_area += darea;
- _centroid[0] += (p0[0]+p1[0])*darea;
+ _centroid[0] += (p0[0]+p1[0]) * darea;
_centroid[1] += (p0[1]+p1[1]) * darea;
}
_centroid[0] /= 3*_area;
@@ -145,8 +145,9 @@
double[] pcent = PseudoCentroid();
int nv = _polygon.size();
for (int i=0; i<nv-1; i++) {
- double phi1 = Math.atan2(_polygon.get(i)[1]-pcent[1],_polygon.get(i)[0]-pcent[0]);
for (int j=i+1; j<nv; j++) {
+ // phi1 calcuation must stay inside loop because of possible re-ordering
+ double phi1 = Math.atan2(_polygon.get(i)[1]-pcent[1],_polygon.get(i)[0]-pcent[0]);
double phi2 = Math.atan2(_polygon.get(j)[1]-pcent[1],_polygon.get(j)[0]-pcent[0]);
if (phi1>phi2) {
double[] temp = _polygon.get(j);