Exemple #1
0
int 
collide_recursive(box *b1, box *b2, double R[3][3], double T[3], double s)
{
  double d[3]; // temp storage for scaled dimensions of box b2.
  int rc;      // return codes
  
  if (1)
    {
#if TRACE1
      PrintInfo(("Next collision: b1, b2, R, T, s\n");
      PrintInfo(("b1=%x, b2=%x\n", b1, b2);
      Mprint(R);
      Vprint(T);
      PrintInfo(("%lf\n", s);
#endif
      
      if (RAPID_first_contact && (RAPID_num_contacts > 0)) return RAPID_OK;

      // test top level

      RAPID_num_box_tests++;
  
      int f1;
  
      d[0] = s * b2->d[0];
      d[1] = s * b2->d[1];
      d[2] = s * b2->d[2];
      f1 = obb_disjoint(R, T, b1->d, d);

#if TRACE1
      if (f1 != 0)
	{
	  PrintInfo(("BOX TEST %d DISJOINT! (code %d)\n", RAPID_num_box_tests, f1);
	}
Exemple #2
0
void
Numput(unsigned int i)
{
    char buf[20];

    strnum((unsigned char *)buf, i);
    Mprint(buf);
}
Exemple #3
0
unsigned int
readuuhead(T_HD *hp, unsigned char *ptr, unsigned int slen)
{
    unsigned int mode= hp->mode;

#if BCB
    dummy_use(slen);               /* BCB の警告対策 */
#endif

    memclr(sizeof(T_HD)-NAMES, hp);
    hp->mode= mode;
    ptr = getword(hp->fname, ptr);
    if(*ptr) {
        ptr = getword(hp->fname, ptr);
        hp->perm = num7str(hp->fname);
        if(hp->perm >= 0 && *ptr) {
            ptr = getword(hp->fname, ptr);
#if BCB
            dummy_use((unsigned int)ptr);
#endif
            if(!(hp->mode & mLIST)) {
                Merr((char *)hp->fname);
                Merrch(' ');
            } else {
                Mprint((char *)hp->fname);
                Mprint(" line:");
            }
            hp->ztype = zUUE;
            hp->uulength = -1;
            hp->fsize = 0;
            hp->nextline = 0;

            return TRUE;
        }
    }

    return	FALSE;
}
Exemple #4
0
static unsigned int
readhead(T_HD *hp, unsigned char *ptr, unsigned int slen)
{
    struct headline	hd;
    unsigned int len
        = (*ptr == '!') ? decline_7((unsigned char *)&hd, ptr, slen) :
          decline_8((unsigned char *)&hd, ptr, slen);
    /* 上のちょっと危ないぞ */

    if(len > 60 && crc_check(0xffff, (unsigned char *)&hd, len) == 0x1d0f) {
        unsigned int	i;
        unsigned char	*s, *p;
        /*		memclr( sizeof(T_HD), hp );*/
        timecpy(&hp->fsize, (unsigned int *)hd.fs); /* 危ないかも WDN */
        if((int)(hp->vol = hd.volume)) {
            timecpy(&hp->volsize, (unsigned int *)hd.vbyte); /* 危かも WDN */
            hp->fsize= (hp->volsize*hd.volume > hp->fsize ?
                        hp->fsize-(hp->volsize*(hd.volume-1)) : hp->volsize);
        }
        hp->byte= hd.line[0]+(hd.line[1]<<8);
        hp->tcrc= (hd.crc16[0]<<8)+hd.crc16[1];
        hp->body= hp->byte-3;
        hp->blockbyte= hp->body*hp->body;
        hp->date= hp->perm= 0;
        if( hd.flag & 1 )
            timecpy(&hp->date, (unsigned int *)hd.date); /* 危かも WDN */
        hp->initflag= TRUE;
        hp->exec= ztype[hp->ztype= ishbit2z[hd.ishbit]].decexec;
        hp->block= hp->fsize/hp->blockbyte +1;
        hp->fsize+= 2;
        hp->dline= hp->fsize/hp->body+1;
        for( i= 0, s= hp->fname, p= hd.node ; *p != ' ' && i<8 ; i++ )
            *s++= *p++;
        if( *hd.ext != ' ' )
            for( *s++= '.', i= 0, p= hd.ext ; *p!=' '&&i<3 ; i++ )
                *s++= *p++;
        *s= '\0';

        if( !(hp->mode & mADJNAME) ) {
            unsigned int	ic;
            for( ic= 0, s= hp->fname, p= hp->adjname ;
                    *s && *s == *p && ic<8 ; s++, p++, ic++ );
            if( (!*s || *s == '.' || ic == 8) && *p )
                p_strcpy( hp->fname, hp->adjname );
        }

        /* debug */
        {
            if( !(hp->mode & mLIST) ) {
                Merr( (char *)hp->fname );
                Merrch( '(' );
                Numerr( hp->fsize-2 );
                if( hd.volume ) {
                    Merrch( '/' );
                    Numerr( hd.volume );
                }
                Merrch( ')' );
            } else {
                char	buf[28];
                Mprint( (char *)hp->fname );
                Mputchar( ' ' );
                Mputchar( '(' );
                Numput( hp->fsize-2 );
                if( hd.volume ) {
                    Mputchar( '/' );
                    Numput( hd.volume );
                }
                Mputchar( ')' );
                Mputchar( ' ' );
                DATESTR(
                    ((hp->date & 0xfe000000)>>9)+
                    ((hp->date & 0x01e00000)>>13)+
                    ((hp->date & 0x001f0000)>>16)+
                    0x27bc0000
                    , buf );
                Mprint( buf );
                Mputchar( ' ' );
                TIMESTR(
                    ((hp->date & 0x0000f800)<<5)+
                    ((hp->date & 0x000007e0)<<3)+
                    ((hp->date<<1) & 0x3e)
                    , buf );
                Mprint( buf );
                Mputchar( ' ' );
                Mprint( (char *)ztype[hp->ztype].name );
                Mprint( " os:" );
                Numput( hd.os );
#if 0
                if( hd.flag & 12 ) {
                    unsigned	i,j;
                    i= (hd.crc16[0]<<8)+hd.crc16[1];
                    timecpy( &j, hd.crc32 );
                    if( filecrc( hp->fname, i, j ) ) {
                        Mprint( "<crcOK!>" );
                    }
                }
#endif
                Mprint( " line:" );
            }
        }
        return	TRUE;
    }