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

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

?? our_math.c

?? 這是一個簡單的3d動畫mmi,這是模擬器上的
?? C
?? 第 1 頁 / 共 2 頁
字號:
/**************************************************************************
Copyright (C) jianbo miao Corporation.  All Rights Released.
this is a 3d engin named our_3d_engin.
our_3d_engin feature:
1:there is no float.
2:it do the 3d things all by softwear.
3:base on 1 and 2 , it can execution on arm which have no 3d hardwear accelerate.

  if you have any  suggestion or question,pls contact with me
  mail:miaojb@126.com
  msn:miaojianbo@hotmail.com
  qq:30209027
  
    2008/01/01
***************************************************************************/
#ifdef OUR_MAIN_C
#ifndef OUR_MATH_C
#define OUR_MATH_C


#include "our_math.h"
#include "our_3d.h"
#include "math.h"


#define FLOAT 1
//FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
//FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

//unsigned int reciprocal_look[1000];
unsigned int reciprocal_look[1];
//MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
//MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
#if FLOAT

unsigned short sin_cos_look[PI2_MY/4+1];//260

#else

const unsigned short sin_cos_look[PI2_MY/4+1]=
{
    0,402,804,1206,1607,2009,2410,811,3211,3611,4011,4409,
        4808,5205,5602,5997,6392,6786,7179,7571,7961,8351,8739,
        9126,9512,9896,10278,10659,11039,11416,11793,12167,12539,
        12910,13278,13645,14010,14372,14732,15090,15446,15800,16151,
        16499,16846,17189,17530,17869,18204,18537,18868,19195,19519,
        19841,20159,20475,20787,21097,21403,21706,22005,22301,22594,
        22884,23170,23453,23732,24007,24279,24547,24812,25073,25330,
        25583,25832,26077,26319,26557,26790,27020,27245,27466,27684,
        27897,28106,28310,28511,28707,28898,29086,29269,29447,29621,
        29791,29956,30117,30273,30425,30572,30714,30852,30985,31114,
        31237,31357,31471,31581,31685,31785,31881,31971,32057,32138,	
        32214,32285,32351,32413,32469,32521,32568,32610,32647,32679,
        32706,32728,32745,32758,32765,32768
};
/*
const unsigned short sin_cos_look[PI2_MY/4+1]=
{

};*/
#endif
//*********************************************************************
//準備sin_cos_look數組,給sin cos用
//參數1: 
//return: 
//*********************************************************************
void OUR_Build_Sin_Cos_Tables(void)
{
    /**/
#if FLOAT
    int ang;
    for (ang = 0; ang <= PI2_MY/4; ang++)
    {    
        double theta = (double)ang*PI*2/PI2_MY;					// convert ang to radians
        sin_cos_look[ang] = (int)((sin(theta))*(0x1<<(FIXP15_SHIFT+5))+(0x1<<(4)))>>5; 		// insert next entry into table
        //sin_cos_look[ang] = sin(theta)*(0x1<<FIXP15_SHIFT); 
    }
#endif
}
//*********************************************************************
//求sin的函數,在OUR_Build_Sin_Cos_Tables之后使用
//參數1: 要求的sin的度數值 沒有限制 ( 512為360度)
//return:sin值
//*********************************************************************
FIXP16 OUR_Fast_Sin(FIXP16 theta)		//30t
{ 	
    UINT ang;
    ang=theta+0x80000000;					//加上2PI的倍數 使得負數變成正數
    //ang=ang&(~0xfffffe00);					//只取2PI以內的數
    ang=ang&(~(0xffffffff<<PI2_MY_BITS));					//只取2PI以內的數
    if(ang<(PI2_MY/4))
        return (sin_cos_look[ang]);
    else if(ang<PI2_MY/2)
        return (sin_cos_look[PI2_MY/2-ang]);
    else if(ang<PI2_MY*3/4)
        return -(sin_cos_look[ang-PI2_MY/2]);
    else //if(ang<0x200)
        return -(sin_cos_look[PI2_MY-ang]);		/**/
}
//*********************************************************************
//求cos的函數,在OUR_Build_Sin_Cos_Tables之后使用
//參數1: 要求的cos的度數值 沒有限制 ( 512為360度)
//return:cos值
//*********************************************************************
FIXP16 OUR_Fast_Cos(FIXP16 theta)		//30t
{
    UINT ang;
    ang=theta&(~(0xffffffff<<PI2_MY_BITS));					//只取2PI以內的數
    
    if(ang<(PI2_MY/4))
        return (sin_cos_look[(PI2_MY/4)-ang]);		//10t
    else if(ang<(PI2_MY/2))
        return -(sin_cos_look[ang-(PI2_MY/4)]);		//15t
    else if(ang<(PI2_MY*3/4))
        return -(sin_cos_look[(PI2_MY*3/4)-ang]);		//20t
    else //if(ang<0x200)
        return (sin_cos_look[ang-(PI2_MY*3/4)]);		/**///25t
}
//*********************************************************************
//準備reciprocal_look數組,給OUR_Fast_reciprocal用
//參數1: 
//return: 
//*********************************************************************
void OUR_Build_reciprocal_look(void)
{
/*
    int i;
    for (i=1;i<sizeof(reciprocal_look)/4;i++)
    {
        reciprocal_look[i]=(1<<18)/i;
    }
    reciprocal_look[0]=0x7fffffff;
    */
}
//*********************************************************************
//求倒數
//參數1:
//return: (0x1<<20)/theta

//注意:使用這個函數時要>>20,所以出去之后乘以的值不能太大
//就是說,除以后的值是小于2000的話是肯定正確的
//如果估計大于2000,就在外面先>>5再乘.
//*********************************************************************
UINT OUR_Fast_reciprocal(FIXP16 theta)//36t    20bits for reciprocal
{
    
    return 0;
}
UINT OUR_Fast_division(FIXP16 y,FIXP16 x)
{
    if(y<(0x01<<12))									//10t
    {
        return (y*OUR_Fast_reciprocal(x))>>20;			//45t
    }
    else if(y<(0x01<<20))								//15t			
    {
        if(x<(0x01<<4))
            return (y*(OUR_Fast_reciprocal(x)>>8))>>12;	//50t
        else if(x<(0x01<<8))
            return (y*(OUR_Fast_reciprocal(x)>>4))>>16;	//55t
        else
            return (y*OUR_Fast_reciprocal(x))>>20;		//60t
    }
    
    else if(y<(0x01<<26))								//20t
    {
        if(x<(0x01<<4))
            return ((y>>6)*(OUR_Fast_reciprocal(x)>>8))>>6;//55t
        
        else if(x<(0x01<<8))
            return ((y>>6)*(OUR_Fast_reciprocal(x)>>4))>>10;//60t
        
        else if(x<(0x01<<12))
            return ((y>>6)*OUR_Fast_reciprocal(x))>>14;		//65t
        
        else if(x<(0x01<<16))
            return ((y>>6)*OUR_Fast_reciprocal(x>>4))>>18;	//70t
        else 
            return ((y>>6)*OUR_Fast_reciprocal(x>>8))>>22;	//75t
    }
    else												//25t
    {
        if(x<(0x01<<4))
            return ((y>>12)*(OUR_Fast_reciprocal(x)>>8));	//60t
        
        else if(x<(0x01<<8))
            return ((y>>12)*(OUR_Fast_reciprocal(x)>>4))>>4;//65t
        
        else if(x<(0x01<<12))
            return ((y>>12)*OUR_Fast_reciprocal(x))>>8;		
        
        else if(x<(0x01<<16))
            return ((y>>12)*OUR_Fast_reciprocal(x>>4))>>12;
        
        else //if(x<(0x01<<12))
            return ((y>>12)*OUR_Fast_reciprocal(x>>8))>>16;	//80t
    }
    return 0;
}
//MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
//MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM

//*********************************************************************
//P1=P0 x M
//參數1: 
//return:

//注意:	va的所有值絕對值<0x8000=32768
//		mb的所有值絕對值<0x8000
//*********************************************************************
void OUR_FIX_Mat_Mul_VECTOR3D_3X3(	FIX_VECTOR3D_PTR  	va, 		//100t
                                  FIX_MATRIX_3X3_PTR 	mb,
                                  FIX_VECTOR3D_PTR  	vprod)
{
    //有一個4舍5入的過程
    FIXP16 x,y,z;
    x=va->M[0];
    y=va->M[1];
    z=va->M[2];
    vprod->M[0] = (x*mb->M[0][0] + y*mb->M[1][0] + z*mb->M[2][0] +(1<<(FIXP15_SHIFT-1)))>>FIXP15_SHIFT;
    vprod->M[1] = (x*mb->M[0][1] + y*mb->M[1][1] + z*mb->M[2][1] +(1<<(FIXP15_SHIFT-1)))>>FIXP15_SHIFT;
    vprod->M[2] = (x*mb->M[0][2] + y*mb->M[1][2] + z*mb->M[2][2] +(1<<(FIXP15_SHIFT-1)))>>FIXP15_SHIFT;
} 
//------------------------------------------------------------------------
void OUR_FIX_VECTOR3D_SUB(	FIX_VECTOR3D_PTR  	va, 					//20t
                          FIX_VECTOR3D_PTR  	vb,
                          FIX_VECTOR3D_PTR  	vprod)
{
    vprod->M[0] = va->M[0]-vb->M[0];
    vprod->M[1] = va->M[1]-vb->M[1];
    vprod->M[2] = va->M[2]-vb->M[2];
} 
//------------------------------------------------------------------------
void OUR_FIX_VECTOR3D_ADD(	FIX_VECTOR3D_PTR  	va, 					//20t
                          FIX_VECTOR3D_PTR  	vb,
                          FIX_VECTOR3D_PTR  	vprod)
{
    vprod->M[0] = va->M[0]+vb->M[0];
    vprod->M[1] = va->M[1]+vb->M[1];
    vprod->M[2] = va->M[2]+vb->M[2];
} 
//------------------------------------------------------------------------
void OUR_VECTOR3D_SUB(	OUR_3D_POINT_PTR  	va, 
                      OUR_3D_POINT_PTR  	vb,
                      OUR_3D_POINT_PTR  	vprod)
{
    //	vprod->M[0] = va->M[0]-vb->M[0];
    //	vprod->M[1] = va->M[1]-vb->M[1];
    //	vprod->M[2] = va->M[2]-vb->M[2];
} 

//*********************************************************************
//P1=P0 x M
//參數1: 
//return:

//注意:	ma的所有值絕對值<0x8000=32768
//		mb的所有值絕對值<0x8000
//*********************************************************************
void OUR_FIX_Mat_Mul_3X3(	FIX_MATRIX_3X3_PTR  	ma, 			//320t
                         FIX_MATRIX_3X3_PTR 	mb,
                         FIX_MATRIX_3X3_PTR  	mprod)
{
    FIXP16 x,y,z;
    int i;
    for(i=0;i<3;i++)
    {	
        x=ma->M[i][0];
        y=ma->M[i][1];
        z=ma->M[i][2];
        mprod->M[i][0] =  (x*mb->M[0][0] + y*mb->M[1][0] + z*mb->M[2][0]+(1<<(FIXP15_SHIFT-1)))>>FIXP15_SHIFT ;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品成人免费观看| 高清国产一区二区三区| 色婷婷一区二区三区四区| 国产欧美日韩精品一区| 国产麻豆91精品| 精品粉嫩aⅴ一区二区三区四区| 美女性感视频久久| 26uuu亚洲综合色| 丁香激情综合国产| 亚洲乱码中文字幕| 欧美日韩大陆在线| 久草中文综合在线| 国产精品免费久久久久| 在线观看一区不卡| 美女脱光内衣内裤视频久久网站| 日韩一区二区三区电影在线观看| 国内精品久久久久影院薰衣草 | 蜜桃视频在线观看一区二区| 日韩精品一区二区三区视频 | 亚洲一卡二卡三卡四卡无卡久久| 欧美日韩综合色| 蜜臀av国产精品久久久久| 国产色爱av资源综合区| 色欲综合视频天天天| 日韩精品久久理论片| 久久天天做天天爱综合色| 色综合久久66| 麻豆精品新av中文字幕| 日韩美女视频19| 日韩欧美在线综合网| a在线播放不卡| 天天影视色香欲综合网老头| 国产亚洲制服色| 欧美群妇大交群的观看方式| 国产成人精品免费视频网站| 一区二区三区中文字幕| 久久久久久久久久久久久夜| 91成人网在线| 成人午夜碰碰视频| 美女精品一区二区| 国产精品国产三级国产普通话三级 | 国产综合色产在线精品| 一区二区三区欧美在线观看| 亚洲精品一区在线观看| 欧美精品在线视频| 高清成人在线观看| 秋霞电影一区二区| 中文字幕日韩一区| 亚洲精品在线三区| 欧美肥妇free| 色哟哟一区二区三区| 国产传媒日韩欧美成人| 麻豆成人91精品二区三区| 亚洲美女屁股眼交3| 欧美精品一区二区三区蜜桃视频 | 精品国产乱码久久久久久蜜臀| 色婷婷精品久久二区二区蜜臀av| 国产一区二区三区蝌蚪| 丝袜亚洲精品中文字幕一区| 一区二区不卡在线播放| 国产精品久久午夜夜伦鲁鲁| 亚洲精品一区二区三区蜜桃下载 | 久久久亚洲国产美女国产盗摄| 日本在线观看不卡视频| 国产伦精品一区二区三区免费| 亚洲美女屁股眼交| 国产精品入口麻豆九色| 久久精品一二三| 欧美mv日韩mv国产| 欧美一区二区在线不卡| 欧美色区777第一页| 91精品1区2区| 欧洲一区二区三区免费视频| 成人国产在线观看| 国产91在线看| 懂色av一区二区三区免费观看| 国产麻豆精品久久一二三| 黄一区二区三区| 精品一区二区三区久久| 国产一区二区影院| 国产传媒欧美日韩成人| 国产成人亚洲综合a∨婷婷 | 国产美女av一区二区三区| 精品在线观看视频| 国内欧美视频一区二区| 国产精品一区免费在线观看| 国产一区二区三区在线观看精品| 久久97超碰国产精品超碰| 精品一区二区免费| 国产精品一区一区| 99精品视频中文字幕| 99re视频精品| 在线观看91视频| 欧美日韩午夜在线| 欧美一区二区三区色| 精品国产麻豆免费人成网站| 国产亚洲午夜高清国产拍精品| 久久久精品免费观看| 国产精品国产三级国产普通话蜜臀| 亚洲欧洲在线观看av| 亚洲高清在线精品| 蜜桃视频在线观看一区| 岛国精品一区二区| 色老头久久综合| 欧美videossexotv100| 欧美精品一区二区三区在线| 中文字幕一区二区三区精华液| 亚洲国产一区二区视频| 麻豆高清免费国产一区| 菠萝蜜视频在线观看一区| 欧美三区在线视频| 久久伊人蜜桃av一区二区| 亚洲视频香蕉人妖| 麻豆精品一区二区综合av| 91玉足脚交白嫩脚丫在线播放| 欧美一区二区三区电影| 国产精品久久免费看| 日韩av一级片| 色综合夜色一区| 久久免费美女视频| 亚洲成人免费影院| 成人黄色免费短视频| 日韩一区二区三区高清免费看看| 中文一区在线播放| 日欧美一区二区| 成人午夜又粗又硬又大| 欧美区视频在线观看| 久久免费电影网| 日韩av一区二区在线影视| 国产ts人妖一区二区| 欧美日韩在线观看一区二区| 欧美色视频在线| 国产精品成人网| 人人爽香蕉精品| 成人av在线看| 日韩一区二区三区三四区视频在线观看 | 国产精品热久久久久夜色精品三区| 最新欧美精品一区二区三区| 91精品国产一区二区人妖| 美女任你摸久久| 成人激情开心网| 欧美精品在线观看播放| 久久精品综合网| 五月综合激情网| 不卡欧美aaaaa| 久久久国产综合精品女国产盗摄| 亚洲色图制服诱惑 | 成人视屏免费看| 国产成人鲁色资源国产91色综| 一本色道久久综合亚洲aⅴ蜜桃 | 91亚洲男人天堂| 日韩女优毛片在线| 亚洲欧美怡红院| 奇米精品一区二区三区在线观看一| 欧美美女一区二区| 亚洲日本在线a| 国产精品主播直播| 久久久不卡网国产精品一区| 亚洲成精国产精品女| 91一区二区在线| 国产女同性恋一区二区| 日本成人中文字幕在线视频| 欧美怡红院视频| 亚洲国产精品高清| 国产美女视频91| 欧美一卡在线观看| 中文子幕无线码一区tr| 成人在线视频一区二区| 精品国产乱码久久久久久图片| 日韩高清不卡一区二区| 91福利国产精品| 亚洲丝袜精品丝袜在线| 国产·精品毛片| 久久影院电视剧免费观看| 蜜桃传媒麻豆第一区在线观看| 欧美亚洲国产一区在线观看网站| 亚洲一区二区四区蜜桃| 色综合天天综合狠狠| 国产精品福利在线播放| 国产一区二区三区免费看| 日韩欧美亚洲另类制服综合在线| 麻豆91在线播放免费| 欧美一二三四在线| 丝袜亚洲精品中文字幕一区| 欧美日韩中文一区| 香蕉影视欧美成人| 欧美日韩综合一区| 视频一区视频二区中文字幕| 欧美日韩国产大片| 国产精品毛片高清在线完整版 | 日韩一区二区免费在线观看| 一区二区三区日韩欧美精品| 91在线播放网址| 欧美色图片你懂的| 中文字幕一区三区| 成人午夜在线视频| 国产精品热久久久久夜色精品三区 | 国产精品国产馆在线真实露脸| 成人免费视频国产在线观看| 国产精品午夜免费|