Skip to content

Commit 72d0531

Browse files
committedSep 15, 2013
add some comments
1 parent 9aa969b commit 72d0531

File tree

3 files changed

+53
-64
lines changed

3 files changed

+53
-64
lines changed
 

‎GeoCommon.hpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@
2121
#ifndef GEOCOMMON_H
2222
#define GEOCOMMON_H
2323

24-
#define UCHAR unsigned char
25-
#define USHORT unsigned short
24+
// #define UCHAR unsigned char
25+
// #define USHORT unsigned short
2626

2727
#define USE_MINIMIZER
2828

‎eigen.cpp

+41-50
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
#include <assert.h>
3030
#define ROTATE(a,i,j,k,l) g=a[i][j];h=a[k][l];a[i][j]=g-s*(h+g*tau);a[k][l]=h+s*(g-h*tau);
3131

32+
// used to select solving method in calcPoint()
3233
int method = 3;
3334

3435
// for reducing two upper triangular systems of equations into 1
@@ -506,62 +507,56 @@ void descent ( float A[][3], float B[], float guess[], BoundingBoxf *box )
506507
store [ 1 ] = guess [ 1 ];
507508
store [ 2 ] = guess [ 2 ];
508509

509-
if ( method == 2 || method == 0 )
510-
{
510+
if ( method == 2 || method == 0 ) {
511511

512-
i = 0;
513-
r [ 0 ] = B [ 0 ] - ( A [ 0 ] [ 0 ] * guess [ 0 ] + A [ 0 ] [ 1 ] * guess [ 1 ] + A [ 0 ] [ 2 ] * guess [ 2 ] );
514-
r [ 1 ] = B [ 1 ] - ( A [ 1 ] [ 0 ] * guess [ 0 ] + A [ 1 ] [ 1 ] * guess [ 1 ] + A [ 1 ] [ 2 ] * guess [ 2 ] );
515-
r [ 2 ] = B [ 2 ] - ( A [ 2 ] [ 0 ] * guess [ 0 ] + A [ 2 ] [ 1 ] * guess [ 1 ] + A [ 2 ] [ 2 ] * guess [ 2 ] );
512+
i = 0;
513+
r [ 0 ] = B [ 0 ] - ( A [ 0 ] [ 0 ] * guess [ 0 ] + A [ 0 ] [ 1 ] * guess [ 1 ] + A [ 0 ] [ 2 ] * guess [ 2 ] );
514+
r [ 1 ] = B [ 1 ] - ( A [ 1 ] [ 0 ] * guess [ 0 ] + A [ 1 ] [ 1 ] * guess [ 1 ] + A [ 1 ] [ 2 ] * guess [ 2 ] );
515+
r [ 2 ] = B [ 2 ] - ( A [ 2 ] [ 0 ] * guess [ 0 ] + A [ 2 ] [ 1 ] * guess [ 1 ] + A [ 2 ] [ 2 ] * guess [ 2 ] );
516516

517-
delta = r [ 0 ] * r [ 0 ] + r [ 1 ] * r [ 1 ] + r [ 2 ] * r [ 2 ];
518-
delta0 = delta * TOLERANCE * TOLERANCE;
517+
delta = r [ 0 ] * r [ 0 ] + r [ 1 ] * r [ 1 ] + r [ 2 ] * r [ 2 ];
518+
delta0 = delta * TOLERANCE * TOLERANCE;
519519

520-
while ( i < n && delta > delta0 )
521-
{
522-
div = r [ 0 ] * ( A [ 0 ] [ 0 ] * r [ 0 ] + A [ 0 ] [ 1 ] * r [ 1 ] + A [ 0 ] [ 2 ] * r [ 2 ] );
523-
div += r [ 1 ] * ( A [ 1 ] [ 0 ] * r [ 0 ] + A [ 1 ] [ 1 ] * r [ 1 ] + A [ 1 ] [ 2 ] * r [ 2 ] );
524-
div += r [ 2 ] * ( A [ 2 ] [ 0 ] * r [ 0 ] + A [ 2 ] [ 1 ] * r [ 1 ] + A [ 2 ] [ 2 ] * r [ 2 ] );
520+
while ( i < n && delta > delta0 ) {
521+
div = r [ 0 ] * ( A [ 0 ] [ 0 ] * r [ 0 ] + A [ 0 ] [ 1 ] * r [ 1 ] + A [ 0 ] [ 2 ] * r [ 2 ] );
522+
div += r [ 1 ] * ( A [ 1 ] [ 0 ] * r [ 0 ] + A [ 1 ] [ 1 ] * r [ 1 ] + A [ 1 ] [ 2 ] * r [ 2 ] );
523+
div += r [ 2 ] * ( A [ 2 ] [ 0 ] * r [ 0 ] + A [ 2 ] [ 1 ] * r [ 1 ] + A [ 2 ] [ 2 ] * r [ 2 ] );
525524

526-
if ( fabs ( div ) < 0.0000001f )
527-
{
528-
break;
529-
}
525+
if ( fabs ( div ) < 0.0000001f )
526+
break;
530527

531-
alpha = delta / div;
528+
alpha = delta / div;
532529

533-
newPoint [ 0 ] = guess [ 0 ] + alpha * r [ 0 ];
534-
newPoint [ 1 ] = guess [ 1 ] + alpha * r [ 1 ];
535-
newPoint [ 2 ] = guess [ 2 ] + alpha * r [ 2 ];
530+
newPoint [ 0 ] = guess [ 0 ] + alpha * r [ 0 ];
531+
newPoint [ 1 ] = guess [ 1 ] + alpha * r [ 1 ];
532+
newPoint [ 2 ] = guess [ 2 ] + alpha * r [ 2 ];
536533

537-
guess [ 0 ] = newPoint [ 0 ];
538-
guess [ 1 ] = newPoint [ 1 ];
539-
guess [ 2 ] = newPoint [ 2 ];
534+
guess [ 0 ] = newPoint [ 0 ];
535+
guess [ 1 ] = newPoint [ 1 ];
536+
guess [ 2 ] = newPoint [ 2 ];
540537

541-
r [ 0 ] = B [ 0 ] - ( A [ 0 ] [ 0 ] * guess [ 0 ] + A [ 0 ] [ 1 ] * guess [ 1 ] + A [ 0 ] [ 2 ] * guess [ 2 ] );
542-
r [ 1 ] = B [ 1 ] - ( A [ 1 ] [ 0 ] * guess [ 0 ] + A [ 1 ] [ 1 ] * guess [ 1 ] + A [ 1 ] [ 2 ] * guess [ 2 ] );
543-
r [ 2 ] = B [ 2 ] - ( A [ 2 ] [ 0 ] * guess [ 0 ] + A [ 2 ] [ 1 ] * guess [ 1 ] + A [ 2 ] [ 2 ] * guess [ 2 ] );
538+
r [ 0 ] = B [ 0 ] - ( A [ 0 ] [ 0 ] * guess [ 0 ] + A [ 0 ] [ 1 ] * guess [ 1 ] + A [ 0 ] [ 2 ] * guess [ 2 ] );
539+
r [ 1 ] = B [ 1 ] - ( A [ 1 ] [ 0 ] * guess [ 0 ] + A [ 1 ] [ 1 ] * guess [ 1 ] + A [ 1 ] [ 2 ] * guess [ 2 ] );
540+
r [ 2 ] = B [ 2 ] - ( A [ 2 ] [ 0 ] * guess [ 0 ] + A [ 2 ] [ 1 ] * guess [ 1 ] + A [ 2 ] [ 2 ] * guess [ 2 ] );
544541

545-
delta = r [ 0 ] * r [ 0 ] + r [ 1 ] * r [ 1 ] + r [ 2 ] * r [ 2 ];
542+
delta = r [ 0 ] * r [ 0 ] + r [ 1 ] * r [ 1 ] + r [ 2 ] * r [ 2 ];
546543

547-
i++;
548-
}
544+
i++;
545+
}
549546

550-
if ( guess [ 0 ] >= box->begin.x && guess [ 0 ] <= box->end.x &&
551-
guess [ 1 ] >= box->begin.y && guess [ 1 ] <= box->end.y &&
552-
guess [ 2 ] >= box->begin.z && guess [ 2 ] <= box->end.z )
553-
{
554-
return;
555-
}
556-
}
547+
if ( guess [ 0 ] >= box->begin.x && guess [ 0 ] <= box->end.x &&
548+
guess [ 1 ] >= box->begin.y && guess [ 1 ] <= box->end.y &&
549+
guess [ 2 ] >= box->begin.z && guess [ 2 ] <= box->end.z )
550+
{
551+
return;
552+
}
553+
} // method 2 or 0
557554

558-
if ( method == 0 || method == 1 )
559-
{
555+
if ( method == 0 || method == 1 ) {
560556
c = A [ 0 ] [ 0 ] + A [ 1 ] [ 1 ] + A [ 2 ] [ 2 ];
561557
if ( c == 0 )
562-
{
563558
return;
564-
}
559+
565560
c = ( 0.75f / c );
566561

567562
guess [ 0 ] = store [ 0 ];
@@ -572,8 +567,7 @@ void descent ( float A[][3], float B[], float guess[], BoundingBoxf *box )
572567
r [ 1 ] = B [ 1 ] - ( A [ 1 ] [ 0 ] * guess [ 0 ] + A [ 1 ] [ 1 ] * guess [ 1 ] + A [ 1 ] [ 2 ] * guess [ 2 ] );
573568
r [ 2 ] = B [ 2 ] - ( A [ 2 ] [ 0 ] * guess [ 0 ] + A [ 2 ] [ 1 ] * guess [ 1 ] + A [ 2 ] [ 2 ] * guess [ 2 ] );
574569

575-
for ( i = 0; i < n; i++ )
576-
{
570+
for ( i = 0; i < n; i++ ) {
577571
guess [ 0 ] = guess [ 0 ] + c * r [ 0 ];
578572
guess [ 1 ] = guess [ 1 ] + c * r [ 1 ];
579573
guess [ 2 ] = guess [ 2 ] + c * r [ 2 ];
@@ -617,9 +611,9 @@ float calcPoint ( float halfA[], float b[], float btb, float midpoint[], float r
617611
a [ 2 ] [ 1 ] = halfA [ 4 ];
618612
a [ 2 ] [ 2 ] = halfA [ 5 ];
619613

620-
switch ( method )
614+
switch ( method ) // by default method = 3
621615
{
622-
case 0:
616+
case 0:
623617
case 1:
624618
case 2:
625619
rvalue [ 0 ] = midpoint [ 0 ];
@@ -630,13 +624,10 @@ float calcPoint ( float halfA[], float b[], float btb, float midpoint[], float r
630624
return calcError ( a, b, btb, rvalue );
631625
break;
632626
case 3:
633-
matInverse ( a, midpoint, inv, w, u );
634-
635-
627+
matInverse( a, midpoint, inv, w, u );
636628
newB [ 0 ] = b [ 0 ] - a [ 0 ] [ 0 ] * midpoint [ 0 ] - a [ 0 ] [ 1 ] * midpoint [ 1 ] - a [ 0 ] [ 2 ] * midpoint [ 2 ];
637629
newB [ 1 ] = b [ 1 ] - a [ 1 ] [ 0 ] * midpoint [ 0 ] - a [ 1 ] [ 1 ] * midpoint [ 1 ] - a [ 1 ] [ 2 ] * midpoint [ 2 ];
638630
newB [ 2 ] = b [ 2 ] - a [ 2 ] [ 0 ] * midpoint [ 0 ] - a [ 2 ] [ 1 ] * midpoint [ 1 ] - a [ 2 ] [ 2 ] * midpoint [ 2 ];
639-
640631
rvalue [ 0 ] = inv [ 0 ] [ 0 ] * newB [ 0 ] + inv [ 1 ] [ 0 ] * newB [ 1 ] + inv [ 2 ] [ 0 ] * newB [ 2 ] + midpoint [ 0 ];
641632
rvalue [ 1 ] = inv [ 0 ] [ 1 ] * newB [ 0 ] + inv [ 1 ] [ 1 ] * newB [ 1 ] + inv [ 2 ] [ 1 ] * newB [ 2 ] + midpoint [ 1 ];
642633
rvalue [ 2 ] = inv [ 0 ] [ 2 ] * newB [ 0 ] + inv [ 1 ] [ 2 ] * newB [ 1 ] + inv [ 2 ] [ 2 ] * newB [ 2 ] + midpoint [ 2 ];
@@ -768,7 +759,7 @@ float calcPoint ( float halfA[], float b[], float btb, float midpoint[], float r
768759
return ret;
769760

770761
break;
771-
case 5:
762+
case 5: // do nothing, return midpoint
772763
rvalue [ 0 ] = midpoint [ 0 ];
773764
rvalue [ 1 ] = midpoint [ 1 ];
774765
rvalue [ 2 ] = midpoint [ 2 ];

‎octree.hpp

+10-12
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,7 @@ class LeafNode : public OctreeNode {
6363
char height; // depth
6464
float mp[3]; // this is the minimizer point of the QEF
6565
int index; // ?
66-
// QEF data
67-
float ata[6], atb[3], btb ;
66+
float ata[6], atb[3], btb; // QEF data
6867

6968
// Construction
7069
LeafNode( int ht, unsigned char sg, float coord[3] ) {
@@ -86,7 +85,7 @@ class LeafNode : public OctreeNode {
8685
// Construction by QEF
8786
// each edge of the cube can have an intersection point
8887
// so we can give up to 12 intersection points with 12 normal-vectors
89-
// specify numner of intersections in numint
88+
// specify number of intersections in numint
9089
//
9190
// st is the minimum bounding-box point
9291
// st + (1,1,1)*len is the maximum bounding-box point
@@ -144,7 +143,11 @@ class LeafNode : public OctreeNode {
144143

145144
// eigen.hpp
146145
// calculate minimizer point, and return error
146+
// QEF: ata, atb, btb
147+
// pt is the average of the intersection points
147148
// mp is the result
149+
// box is a bounding-box for this node
150+
// mat is storage for calcPoint() ?
148151
float error = calcPoint( ata, atb, btb, pt, mp, box, mat ) ;
149152

150153
#ifdef CLAMP // Clamp all minimizers to be inside the cell
@@ -175,15 +178,10 @@ class PseudoLeafNode : public OctreeNode {
175178
unsigned char signs;
176179
public:
177180
char height ;
178-
179181
float mp[3]; // Minimizer
180182
int index;
181-
182-
// QEF
183-
float ata[6], atb[3], btb ;
184-
185-
// Children
186-
OctreeNode * child[8] ;
183+
float ata[6], atb[3], btb ; // QEF
184+
OctreeNode * child[8] ; // Children
187185

188186
// Construction, without QEF
189187
PseudoLeafNode ( int ht, unsigned char sg, float coord[3] ) {
@@ -295,9 +293,9 @@ const int dirEdge[3][4] = {
295293
class Octree {
296294
public:
297295
OctreeNode* root ;
298-
int dimen; /// Length of grid
296+
int dimen; // Length of grid
299297
int maxDepth;
300-
int hasQEF; // Has QEF? why not bool? used in simplify()
298+
int hasQEF; // Has QEF? why not bool? used in simplify()
301299
int faceVerts, edgeVerts, actualTris ;
302300
int founds, news ;
303301
public:

0 commit comments

Comments
 (0)
Please sign in to comment.