亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? our_math.c

?? 這是一個簡單的3d動畫mmi,這是模擬器上的
?? C
?? 第 1 頁 / 共 2 頁
字號:
        mprod->M[i][1] =  (x*mb->M[0][1] + y*mb->M[1][1] + z*mb->M[2][1]+(1<<(FIXP15_SHIFT-1)))>>FIXP15_SHIFT ;
        mprod->M[i][2] =  (x*mb->M[0][2] + y*mb->M[1][2] + z*mb->M[2][2]+(1<<(FIXP15_SHIFT-1)))>>FIXP15_SHIFT ;
    }
} 
//------------------------------------------------------------------------

/****************************************/
/*Function: 開根號處理                  */
/*入口參數:被開方數,長整型            */
/*出口參數:開方結果,整型              */
/****************************************/
unsigned int OUR_sqrt_16(unsigned long M)				//250t
{
    unsigned int N, i;
    unsigned long tmp, ttp;   	// 結果、循環計數
    if (M == 0)               		// 被開方數,開方結果也為0
        return 0;
    N = 0;
    tmp = (M >> 30);          	// 獲取最高位:B[m-1]
    M <<= 2;
    if (tmp > 1)              		// 最高位為1
    {
        N ++;                 		// 結果當前位為1,否則為默認的0
        tmp -= N;
    }
    for (i=15; i>0; i--)      		// 求剩余的15位
    {
        N <<= 1;              		// 左移一位
        tmp <<= 2;
        tmp += (M >> 30);     	// 假設
        ttp = N;
        ttp = (ttp<<1)+1;
        M <<= 2;
        if (tmp >= ttp)       		// 假設成立
        {
            tmp -= ttp;
            N ++;
        }
    }
    return N;
}
//---------------------------------------------------------------

void OUR_VECTOR3D_Normalize(FIX_VECTOR3D_PTR va)	//400t
{
    UINT	length,length_inv;
    while(OUR_int_abs(va->MM.x) >0x4000 ||	//本來的模不能太大,可能平方后加起溢出
        OUR_int_abs(va->MM.y) >0x4000 ||
        OUR_int_abs(va->MM.z) >0x4000 )
    {
        va->MM.x >>=1;
        va->MM.y >>=1;
        va->MM.z >>=1;
    }
    length = OUR_sqrt_16(va->MM.x*va->MM.x + va->MM.y*va->MM.y + va->MM.z*va->MM.z);//250t
    if (length ==0) 
        return;
    length_inv =1<<31;								// can't use 0xffffffff, cause va->x is always < 0x80000000
    length_inv /=length;
    
    // compute normalized version of vector
    va->MM.x=(va->MM.x*length_inv);
    va->MM.x =( va->MM.x) >>(31-FIXP15_SHIFT);
    
    va->MM.y=(va->MM.y*length_inv);
    va->MM.y =( va->MM.y) >>(31-FIXP15_SHIFT);
    
    va->MM.z=(va->MM.z*length_inv);
    va->MM.z =( va->MM.z) >>(31-FIXP15_SHIFT);
}
//---------------------------------------------------------------

void OUR_FAST_Normalize(FIX_VECTOR3D_PTR va)	//200t
{
    UINT	length,length_inv;
    
    length =OUR_FAST_Length(va);
    if (length ==0) 
        return;
    //length_inv =1<<31;								// can't use 0xffffffff, cause va->x is always < 0x80000000
    length_inv= (1<<31)/length;
    
    // compute normalized version of vector
    va->MM.x=(va->MM.x*length_inv);
    va->MM.x =( va->MM.x) >>(31-FIXP15_SHIFT);
    
    va->MM.y=(va->MM.y*length_inv);
    va->MM.y =( va->MM.y) >>(31-FIXP15_SHIFT);
    
    va->MM.z=(va->MM.z*length_inv);
    va->MM.z =( va->MM.z) >>(31-FIXP15_SHIFT);
}

//---------------------------------------------------------------

FIXP16 OUR_VECTOR3D_Dot(FIX_VECTOR3D_PTR va, FIX_VECTOR3D_PTR vb)//40t
{
    return( (va->MM.x * vb->MM.x) + (va->MM.y * vb->MM.y) + (va->MM.z * vb->MM.z) );
}

//---------------------------------------------------------------

void OUR_VECTOR3D_Cross(FIX_VECTOR3D_PTR va, //80t
                        FIX_VECTOR3D_PTR vb,
                        FIX_VECTOR3D_PTR vn)
{
    
    vn->MM.x =  ( (va->MM.y * vb->MM.z) - (va->MM.z * vb->MM.y) );
    vn->MM.y = -( (va->MM.x * vb->MM.z) - (va->MM.z * vb->MM.x) );
    vn->MM.z =  ( (va->MM.x * vb->MM.y) - (va->MM.y * vb->MM.x) ); 
    
} 
//--------------------------------------------------------------------


//---------------------------------------------------------------

int OUR_FAST_Length(FIX_VECTOR3D_PTR va)	//50t // compute distance with 2% error--writed by mjb on 2008/03/15
{	
    int i=10;  	// 
    UINT temp;  	// used for swaping
    UINT x,y,z; 	// used for algorithm
    
    // make sure values are all positive
    x = OUR_int_abs(va->MM.x);
    y = OUR_int_abs(va->MM.y);
    z = OUR_int_abs(va->MM.z);
    
    // sort values
    if (y < x) OUR_SWAP(x,y,temp)
        if (z < y) OUR_SWAP(y,z,temp)
            if (y < x) OUR_SWAP(x,y,temp)
                
                while(z>(1<<20))
                {
                    x>>=1;
                    y>>=1;
                    z>>=1;
                    i--;
                }
                if(x<(y>>1))
                {
                    temp=(1024*y+195*x)>>10;
                }
                else
                {
                    temp=(829*y+608*x)>>10;
                }
                if(temp<(z>>1))
                {
                    return (1024*z+195*temp)>>(i);
                }
                else
                {
                    return (829*z+608*temp)>>(i);
                }
} 
//--------------------------------------------------------------------

int OUR_Mat_Inverse_3X3(FIX_MATRIX_3X3_PTR m, FIX_MATRIX_3X3_PTR mi)//400t
{
    // this function computes the inverse of a 3x3
    // first compute the determinate to see if there is 
    // an inverse
    //FIX_MATRIX_3X3	mb;
    int det_inv,det;
    
    det = 	 (m->MM.M00>>5)*((m->MM.M11*m->MM.M22 - m->MM.M21*m->MM.M12)>>10) - //80t
        (m->MM.M01>>5)*((m->MM.M10*m->MM.M22 - m->MM.M20*m->MM.M12)>>10) + 
        (m->MM.M02>>5)*((m->MM.M10*m->MM.M21 - m->MM.M20*m->MM.M11)>>10);
    
    if (det==0)
        return(0);
    
    // compute inverse to save divides
    det_inv = (1<<30)/(det>>15);										//80t
#define I_LEFT_MOVE 15
    // compute inverse using m-1 = adjoint(m)/det(m)
    mi->MM.M00 =  (det_inv*((m->MM.M11*m->MM.M22 - m->MM.M21*m->MM.M12)>>15)+(1<<(I_LEFT_MOVE-1)))>>I_LEFT_MOVE;
    mi->MM.M10 = (-det_inv*((m->MM.M10*m->MM.M22 - m->MM.M20*m->MM.M12)>>15)+(1<<(I_LEFT_MOVE-1)))>>I_LEFT_MOVE;
    mi->MM.M20 =  (det_inv*((m->MM.M10*m->MM.M21 - m->MM.M20*m->MM.M11)>>15)+(1<<(I_LEFT_MOVE-1)))>>I_LEFT_MOVE;
    
    mi->MM.M01 = (-det_inv*((m->MM.M01*m->MM.M22 - m->MM.M21*m->MM.M02)>>15)+(1<<(I_LEFT_MOVE-1)))>>I_LEFT_MOVE;
    mi->MM.M11 =  (det_inv*((m->MM.M00*m->MM.M22 - m->MM.M20*m->MM.M02)>>15)+(1<<(I_LEFT_MOVE-1)))>>I_LEFT_MOVE;
    mi->MM.M21 = (-det_inv*((m->MM.M00*m->MM.M21 - m->MM.M20*m->MM.M01)>>15)+(1<<(I_LEFT_MOVE-1)))>>I_LEFT_MOVE;
    
    mi->MM.M02 =  (det_inv*((m->MM.M01*m->MM.M12 - m->MM.M11*m->MM.M02)>>15)+(1<<(I_LEFT_MOVE-1)))>>I_LEFT_MOVE;
    mi->MM.M12 = (-det_inv*((m->MM.M00*m->MM.M12 - m->MM.M10*m->MM.M02)>>15)+(1<<(I_LEFT_MOVE-1)))>>I_LEFT_MOVE;
    mi->MM.M22 =  (det_inv*((m->MM.M00*m->MM.M11 - m->MM.M10*m->MM.M01)>>15)+(1<<(I_LEFT_MOVE-1)))>>I_LEFT_MOVE;
    
    // return success
    return(1);
    
} 
//MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
//MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM


void OUR_mmcpy(UINT *des,UINT *src,UINT num)
{
    UINT *max_des;
    //des&=~0x3;
    //src&=~0x3;
    max_des = des+(num);
    for (;des<max_des;)
    {
        *des++=*src++;
    }
}

void OUR_mmset(UINT *des,UINT src,UINT num)
{
    UINT *max_des;
    //des&=~0x3;
    //src&=~0x3;
    max_des = des+(num);
    for (;des<max_des;)
    {
        *des++=src;
    }
}
void OUR_mmset_box16(int x,int y,int w,int h,UCHAR *video_buffer,int lpitch,CLR c)
{
    UINT *des=(UINT*)video_buffer+((y*lpitch+x)>>1);
    UINT *max_des=des+((h*lpitch)>>1);
    int i;
    lpitch=lpitch>>1;
    max_des=des+((h*lpitch));
    //des&=~0x3;
    //src&=~0x3;
    c=(c<<16)+c;
    w=w>>1;
    for (;des<max_des;)
    {
        for(i=0;i<w;i++)
        {
            des[i]=c;
        }
        des+=lpitch;
    }
}
void OUR_BOX_OUT_clear16(int x1,int y1,
                                        CLR C,
                                        UCHAR *video_buffer, int lpitch)                                        
{
    UINT *des=(UINT*)video_buffer;
    int i;
    //C=OUR_RGB32_2_16(C);
    C=(C<<16)+C;
    //the top side
    OUR_mmset(des,C,y1*OUR_D_screem_w/2);
    //the button side
    des=(UINT*)video_buffer+((OUR_D_screem_h-y1-1)*lpitch)/2;
    OUR_mmset(des,C,y1*OUR_D_screem_w/2);
    //the right side
    des=(UINT*)video_buffer+((OUR_D_screem_w-1-x1))/2+((y1-1)*lpitch)/2;
    //C=0xffffffff;
    for(i=0;i<=OUR_D_screem_h-2*y1;i++)
    {
        OUR_mmset(des,C,x1);
        des+=lpitch/2;
    }
}

//FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
//FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
#endif
#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91极品视觉盛宴| 国产欧美一区二区精品性色超碰| 欧美成人一区二区三区片免费| 中文一区一区三区高中清不卡| 亚洲一区二区三区四区在线 | 91片黄在线观看| 91精品国产色综合久久不卡电影 | 中文字幕在线不卡一区| 视频一区二区不卡| av影院午夜一区| 欧美不卡一区二区三区| 国产精品看片你懂得| 极品少妇xxxx偷拍精品少妇| 欧美私人免费视频| 国产精品美女久久久久aⅴ国产馆| 性做久久久久久免费观看欧美| 国产尤物一区二区在线| 欧美精品vⅰdeose4hd| 亚洲人成网站精品片在线观看| 黑人巨大精品欧美黑白配亚洲| 在线区一区二视频| 亚洲人成伊人成综合网小说| 国产精华液一区二区三区| 色综合av在线| 国产精品久久久久7777按摩| 国产在线日韩欧美| 精品88久久久久88久久久| 午夜精彩视频在线观看不卡| 色拍拍在线精品视频8848| 国产精品久久久久精k8| 国产专区欧美精品| 精品精品国产高清a毛片牛牛| 午夜精品久久久久久久久| 国产a区久久久| 亚洲国产精华液网站w| 狠狠色狠狠色综合系列| 久久蜜桃av一区二区天堂| 理论电影国产精品| 日韩三级视频在线观看| 另类专区欧美蜜桃臀第一页| 精品国产乱码久久久久久影片| 精品一区免费av| 精品美女被调教视频大全网站| 久久av中文字幕片| 久久综合狠狠综合久久综合88| 国产精品亚洲综合一区在线观看| 精品国产91乱码一区二区三区 | 欧美性xxxxx极品少妇| 亚洲乱码中文字幕综合| 欧美色图第一页| 日韩av二区在线播放| 欧美一区二区三区爱爱| 久草这里只有精品视频| 国产精品网友自拍| 欧美视频一区二区三区在线观看| 亚洲成人av中文| 精品毛片乱码1区2区3区| 国产成人夜色高潮福利影视| 亚洲丝袜美腿综合| 777久久久精品| 国产成人av福利| 亚洲精品国久久99热| 欧美区一区二区三区| 激情综合网激情| 亚洲视频一区二区在线观看| 欧美日韩免费电影| 国产伦精一区二区三区| 亚洲日本va午夜在线影院| 欧美日韩国产三级| 国产露脸91国语对白| 亚洲美女视频一区| 精品日韩99亚洲| 色综合久久综合网97色综合 | 欧美一级高清片| 白白色亚洲国产精品| 亚洲mv在线观看| 国产精品久久久久久久久免费丝袜 | 亚洲国产精品一区二区www| 欧美成人精品3d动漫h| 99riav一区二区三区| 日韩高清一级片| 国产精品萝li| 精品三级在线观看| 日本韩国一区二区| 国产高清精品在线| 日本女人一区二区三区| 亚洲美女一区二区三区| 欧美激情一区在线观看| 51精品久久久久久久蜜臀| youjizz国产精品| 国产一区二区主播在线| 日韩电影在线免费看| 亚洲精品日产精品乱码不卡| 久久综合久久久久88| 欧美妇女性影城| 欧美老肥妇做.爰bbww视频| 成人动漫一区二区在线| 韩国一区二区三区| 免费看日韩a级影片| 午夜国产不卡在线观看视频| 亚洲精品视频免费看| 国产精品国产三级国产普通话三级 | 777亚洲妇女| 91国产精品成人| caoporm超碰国产精品| 国产精品正在播放| 国产一区二区三区在线观看免费视频 | 午夜伊人狠狠久久| 一区二区三区 在线观看视频| 国产精品你懂的在线欣赏| 精品国产99国产精品| 日韩女优电影在线观看| 日韩亚洲欧美在线| 日韩一级高清毛片| 欧美电视剧免费观看| 日韩片之四级片| 日韩三级高清在线| 欧美本精品男人aⅴ天堂| 日韩精品一区国产麻豆| 精品国产123| 久久久精品蜜桃| 日本一区二区三级电影在线观看| 久久免费电影网| 亚洲国产精品ⅴa在线观看| 国产精品久久久久久久裸模| 中文字幕欧美日韩一区| 国产精品免费久久久久| 亚洲欧美日韩人成在线播放| 亚洲精品日韩一| 亚洲一区二区三区四区在线| 性感美女久久精品| 麻豆成人久久精品二区三区小说| av成人免费在线观看| 97精品久久久午夜一区二区三区 | 欧美日韩视频第一区| 欧美日韩激情一区二区三区| 欧美一区二区三区四区五区| 欧美精品一区二区在线观看| 国产欧美一区二区三区鸳鸯浴| 国产精品久久久久久亚洲毛片| 一区二区三区欧美| 免费不卡在线观看| 成人免费视频视频| 欧美性色综合网| 精品福利在线导航| 一区二区三区在线视频播放| 日韩av在线免费观看不卡| 国产风韵犹存在线视精品| 99久免费精品视频在线观看| 4438x亚洲最大成人网| www国产精品av| 一区二区三区国产| 极品少妇一区二区三区精品视频| 99精品一区二区三区| 在线不卡一区二区| 国产欧美精品国产国产专区| 一区二区三区四区视频精品免费| 麻豆精品一二三| 日本精品视频一区二区| 久久免费美女视频| 亚洲福利一二三区| av毛片久久久久**hd| 日韩一区二区三区视频在线| 国产精品第一页第二页第三页 | 1024成人网| 久草精品在线观看| 在线精品观看国产| 亚洲国产高清aⅴ视频| 青青草视频一区| 91极品视觉盛宴| 国产精品美女久久福利网站| 蜜臀av性久久久久蜜臀aⅴ流畅 | 国产91清纯白嫩初高中在线观看| 欧美图区在线视频| 国产精品久久久爽爽爽麻豆色哟哟| 丝袜美腿亚洲一区| 在线亚洲高清视频| 国产精品久久久久9999吃药| 久久99精品国产| 精品成人一区二区三区四区| 亚洲精品写真福利| av资源站一区| 中文字幕不卡三区| 国产一区中文字幕| 欧美成人精品1314www| 日韩国产精品久久久| 欧美色男人天堂| 亚洲一二三四区不卡| 色呦呦网站一区| 亚洲人精品午夜| 96av麻豆蜜桃一区二区| 国产精品狼人久久影院观看方式| 国产成人亚洲精品青草天美| 精品国产亚洲在线| 极品美女销魂一区二区三区 | 免费成人结看片| 正在播放一区二区| 日韩福利视频导航| 精品少妇一区二区三区日产乱码| 日韩成人精品在线|