/*
* arc.c++
*
- * $Date: 2002/11/01 23:35:07 $ $Revision: 1.2 $
- * $Header: /home/krh/git/sync/mesa-cvs-repo/Mesa/src/glu/sgi/libnurbs/internals/arc.cc,v 1.2 2002/11/01 23:35:07 brianp Exp $
*/
#include <stdio.h>
#include "myassert.h"
#include "arc.h"
#include "bin.h"
-#include "bezierarc.h"
#include "pwlarc.h"
#include "simplemath.h"
/* local preprocessor definitions */
-#define ZERO 0.00001/*0.000001*/
+#define ZERO 0.00001/*0.000001*/
-const int Arc::bezier_tag = (1<<13);
-const int Arc::arc_tag = (1<<3);
-const int Arc::tail_tag = (1<<6);
+const int Arc::bezier_tag = (1<<13);
+const int Arc::arc_tag = (1<<3);
+const int Arc::tail_tag = (1<<6);
/*--------------------------------------------------------------------------
* makeSide - attach a pwl arc to an arc and mark it as a border arc
clearbezier();
setside( side );
}
-
+
/*--------------------------------------------------------------------------
* numpts - count number of points on arc loop
Arc::markverts( void )
{
Arc_ptr jarc = this;
-
+
do {
TrimVertex *p = jarc->pwlArc->pts;
for( int i=0; i<jarc->pwlArc->npts; i++ )
botpt = toppt = this->tail()[1];
for( Arc_ptr jarc = this->next; jarc != this; jarc = jarc->next ) {
- if ( jarc->tail()[0] < leftpt ||
+ if ( jarc->tail()[0] < leftpt ||
(jarc->tail()[0] <= leftpt && jarc->rhead()[0]<=leftpt)) {
leftpt = jarc->pwlArc->pts->param[0];
extrema[1] = jarc;
}
- if ( jarc->tail()[0] > rightpt ||
+ if ( jarc->tail()[0] > rightpt ||
(jarc->tail()[0] >= rightpt && jarc->rhead()[0] >= rightpt)) {
rightpt = jarc->pwlArc->pts->param[0];
extrema[3] = jarc;
}
- if ( jarc->tail()[1] < botpt ||
- (jarc->tail()[1] <= botpt && jarc->rhead()[1] <= botpt )) {
+ if ( jarc->tail()[1] < botpt ||
+ (jarc->tail()[1] <= botpt && jarc->rhead()[1] <= botpt )) {
botpt = jarc->pwlArc->pts->param[1];
extrema[2] = jarc;
}
- if ( jarc->tail()[1] > toppt ||
+ if ( jarc->tail()[1] > toppt ||
(jarc->tail()[1] >= toppt && jarc->rhead()[1] >= toppt)) {
toppt = jarc->pwlArc->pts->param[1];
extrema[0] = jarc;
Arc::show()
{
#ifndef NDEBUG
- dprintf( "\tPWLARC NP: %d FL: 1\n", pwlArc->npts );
+ _glu_dprintf( "\tPWLARC NP: %d FL: 1\n", pwlArc->npts );
for( int i = 0; i < pwlArc->npts; i++ ) {
- dprintf( "\t\tVERTEX %f %f\n", pwlArc->pts[i].param[0],
+ _glu_dprintf( "\t\tVERTEX %f %f\n", pwlArc->pts[i].param[0],
pwlArc->pts[i].param[1] );
}
#endif
{
Arc_ptr jarc = this;
- if( ! this ) {
-#ifndef NDEBUG
- dprintf( "\n\nEMPTY TRIM\n\n" );
-#endif
- return;
- }
-
#ifndef NDEBUG
- dprintf( "BGNTRIM\n" );
+ _glu_dprintf( "BGNTRIM\n" );
#endif
do {
jarc->show( );
jarc = jarc->next;
} while (jarc != this);
#ifndef NDEBUG
- dprintf("ENDTRIM\n" );
+ _glu_dprintf("ENDTRIM\n" );
#endif
}
if( ((p0[0] - p1[0]) > ZERO) || ((p1[0] - p0[0]) > ZERO) ||
((p0[1] - p1[1]) > ZERO) || ((p1[1] - p0[1]) > ZERO) ) {
#ifndef NDEBUG
- dprintf( "x coord = %f %f %f\n", p0[0], p1[0], p0[0] - p1[0] );
- dprintf( "y coord = %f %f %f\n", p0[1], p1[1], p0[1] - p1[1] );
+ _glu_dprintf( "x coord = %f %f %f\n", p0[0], p1[0], p0[0] - p1[0] );
+ _glu_dprintf( "y coord = %f %f %f\n", p0[1], p1[1], p0[1] - p1[1] );
#endif
return 1;
} else {
- /* average two points together */
- p0[0] = p1[0] = (p1[0] + p0[0]) * 0.5;
- p0[1] = p1[1] = (p1[1] + p0[1]) * 0.5;
- return 0;
+ /* average two points together */
+ p0[0] = p1[0] = (p1[0] + p0[0]) * 0.5;
+ p0[1] = p1[1] = (p1[1] + p0[1]) * 0.5;
+ return 0;
}
}
do {
assert( (jarc->pwlArc != 0) || (jarc->bezierArc != 0) );
- if (jarc->prev == 0 || jarc->next == 0) {
+ if (jarc->prev == 0 || jarc->next == 0) {
#ifndef NDEBUG
- dprintf( "checkjarc:null next/prev pointer\n");
+ _glu_dprintf( "checkjarc:null next/prev pointer\n");
jarc->print( );
#endif
return 0;
- }
+ }
- if (jarc->next->prev != jarc) {
+ if (jarc->next->prev != jarc) {
#ifndef NDEBUG
- dprintf( "checkjarc: pointer linkage screwed up\n");
+ _glu_dprintf( "checkjarc: pointer linkage screwed up\n");
jarc->print( );
#endif
return 0;
- }
+ }
- if( jarc->pwlArc ) {
+ if( jarc->pwlArc ) {
#ifndef NDEBUG
assert( jarc->pwlArc->npts >= 1 );
assert( jarc->pwlArc->npts < 100000 );
/*
for( int i=0; i < jarc->pwlArc->npts-1; i++ )
- assert( neq_vert( jarc->pwlArc->pts[i].param,
+ assert( neq_vert( jarc->pwlArc->pts[i].param,
jarc->pwlArc->pts[i+1].param) );
*/
#endif
if( jarc->prev->pwlArc ) {
if( jarc->tail()[1] != jarc->prev->rhead()[1] ) {
#ifndef NDEBUG
- dprintf( "checkjarc: geometric linkage screwed up 1\n");
+ _glu_dprintf( "checkjarc: geometric linkage screwed up 1\n");
jarc->prev->show();
jarc->show();
#endif
return 0;
}
if( jarc->tail()[0] != jarc->prev->rhead()[0] ) {
-
+
#ifndef NDEBUG
- dprintf( "checkjarc: geometric linkage screwed up 2\n");
+ _glu_dprintf( "checkjarc: geometric linkage screwed up 2\n");
jarc->prev->show();
jarc->show();
#endif
if( jarc->next->pwlArc ) {
if( jarc->next->tail()[0] != jarc->rhead()[0] ) {
#ifndef NDEBUG
- dprintf( "checkjarc: geometric linkage screwed up 3\n");
+ _glu_dprintf( "checkjarc: geometric linkage screwed up 3\n");
jarc->show();
jarc->next->show();
#endif
}
if( jarc->next->tail()[1] != jarc->rhead()[1] ) {
#ifndef NDEBUG
- dprintf( "checkjarc: geometric linkage screwed up 4\n");
+ _glu_dprintf( "checkjarc: geometric linkage screwed up 4\n");
jarc->show();
jarc->next->show();
#endif
}
if( jarc->isbezier() ) {
assert( jarc->pwlArc->npts == 2 );
- assert( (jarc->pwlArc->pts[0].param[0] == \
- jarc->pwlArc->pts[1].param[0]) ||\
- (jarc->pwlArc->pts[0].param[1] == \
- jarc->pwlArc->pts[1].param[1]) );
+ assert( (jarc->pwlArc->pts[0].param[0] == \
+ jarc->pwlArc->pts[1].param[0]) ||\
+ (jarc->pwlArc->pts[0].param[1] == \
+ jarc->pwlArc->pts[1].param[1]) );
}
}
- jarc = jarc->next;
+ jarc = jarc->next;
} while (jarc != this);
return 1;
}
if( jarc != 0 ) {
next = jarc->next;
prev = jarc;
- next->prev = prev->next = this;
+ next->prev = prev->next = this;
} else {
- next = prev = this;
+ next = prev = this;
}
return this;
}