/************************************************************************** C U R V U T I L . C ***************************************************************************/ /***************************************************************************** FILENAME : curvutil.c PURPOSE : Some curvature utilities *****************************************************************************/ #include #include #include "/usr/users/header/arrkey.h" #include "piece.h" #include "statline.h" extern WINDOW *stdscr; extern WINDOW *drwin,*stripwin; extern double radt,dx,dy,thta; extern float ll; extern result; extern int oldsharp,oldzero; #ifdef ROGER /*************************************************************************** C U R V F C T ****************************************************************************/ curvfct(piecenum) int piecenum; { int i; double temp; for(i=1;i<=piece[piecenum].numinres-1;i++) { temp = piece[piecenum].angular[i] - piece[piecenum].angular[i+1]; if (temp > 300.0) temp = temp - 360.0; if (temp < -300.0) temp = temp + 360.0; piece[piecenum].curv[i] = temp; } } /*************************************************************************** A N G U L A R F C T ****************************************************************************/ angularfct(piecenum) int piecenum; { float strtdeg,ldist; int i; strtdeg = piece[piecenum].degree[1]; ldist = 0; for(i=1;i<=piece[piecenum].numinres;i++) { ldist += piece[piecenum].l[i]; piece[piecenum].angular[i] = (strtdeg-piece[piecenum].degree[i]) - ((6.283*ldist)/piece[piecenum].totall); } } #endif /*************************************************************************** S E G L E N G T H ****************************************************************************/ seglength(piecenm) int piecenm; { int k,i,m,n; float curmdx,curmdy,prevmdx,prevmdy,totall; float deg,lencnt,g,h; float a,b,c,d; char gak[50]; k = 0; m = piece[piecenm].pathcnt-(2*resl); for(i=1;i0) d = -1 * d; if (d < 0) d = -1 * d; #endif if (dx < 0) if (dy > 0) d = d - 180.0; else d = d + 180.0; *degr = d; } /* end function */ /**************************************************************************/ /* LINLNGTH */ /**************************************************************************/ linlngth(x1,y1,x2,y2,length) float x1,y1,x2,y2; float *length; { float a,b; float q; double c; a = (x2 - x1); b = (y2 - y1); a = a*a; b = b*b; c = sqrt((double)(a+b)); q = (float)c; *length = q; } /**************************************************************************/ /* A V E R I N G (optional) */ /**************************************************************************/ avering(piecenum) int piecenum; { int i; for(i=3;i<=(piece[piecenum].pathcnt-2);i++) { ll = 0.0; ll += piece[piecenum].avgx[i-2]; ll += piece[piecenum].avgx[i]; ll += piece[piecenum].avgx[i+2]; ll = ll / 3.0; piece[piecenum].avgx[i-2] = ll; ll = 0.0; ll += piece[piecenum].avgy[i-2]; ll += piece[piecenum].avgy[i]; ll += piece[piecenum].avgy[i+2]; ll = ll / 3.0; piece[piecenum].avgy[i-2] = ll; } for(i=2;i<=(piece[piecenum].pathcnt-1);i++) { ll = 0.0; ll += piece[piecenum].avgx[i-1]; ll += piece[piecenum].avgx[i]; ll += piece[piecenum].avgx[i+1]; ll = ll / 3.0; piece[piecenum].avgx[i-1] = ll; ll = 0.0; ll += piece[piecenum].avgy[i-1]; ll += piece[piecenum].avgy[i]; ll += piece[piecenum].avgy[i+1]; ll = ll / 3.0; piece[piecenum].avgy[i-1] = ll; } for(i=2;i<=(piece[piecenum].pathcnt-1);i++) { ll = 0.0; ll += piece[piecenum].avgx[i-1]; ll += piece[piecenum].avgx[i]; ll += piece[piecenum].avgx[i+1]; ll = ll / 3.0; piece[piecenum].avgx[i-1] = ll; ll = 0.0; ll += piece[piecenum].avgy[i-1]; ll += piece[piecenum].avgy[i]; ll += piece[piecenum].avgy[i+1]; ll = ll / 3.0; piece[piecenum].avgy[i-1] = ll; } ll = 0.0; ll += piece[piecenum].avgx[piece[piecenum].pathcnt]; ll += piece[piecenum].avgx[1]; ll += piece[piecenum].avgx[2]; ll = ll / 3.0; piece[piecenum].avgx[1] = ll; ll = 0.0; ll += piece[piecenum].avgx[piece[piecenum].pathcnt -1]; ll += piece[piecenum].avgx[piece[piecenum].pathcnt]; ll += piece[piecenum].avgx[1]; ll = ll / 3.0; piece[piecenum].avgx[piece[piecenum].pathcnt] = ll; ll = 0.0; ll += piece[piecenum].avgy[piece[piecenum].pathcnt]; ll += piece[piecenum].avgy[1]; ll += piece[piecenum].avgy[2]; ll = ll / 3.0; piece[piecenum].avgy[1] = ll; ll = 0.0; ll += piece[piecenum].avgy[piece[piecenum].pathcnt -1]; ll += piece[piecenum].avgy[piece[piecenum].pathcnt]; ll += piece[piecenum].avgy[1]; ll = ll / 3.0; piece[piecenum].avgy[piece[piecenum].pathcnt] = ll; } /* end function */ xit(pcnum,index) int pcnum,index; { drawline(round(piece[pcnum].avgx[index])-5, round(piece[pcnum].avgy[index])-5, round(piece[pcnum].avgx[index])+5, round(piece[pcnum].avgy[index])+5,1); drawline(round(piece[pcnum].avgx[index])-5, round(piece[pcnum].avgy[index])+5, round(piece[pcnum].avgx[index])+5, round(piece[pcnum].avgy[index])-5,1); }/* end function */ /**************************************************************************/ /* END SECTION */ /**************************************************************************/