青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 132  文章 - 51  trackbacks - 0
<2011年4月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

常用鏈接

留言簿(7)

隨筆分類(lèi)

隨筆檔案

文章分類(lèi)

文章檔案

cocos2d-x

OGRE

OPenGL

搜索

  •  

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

BOOL D3DXIntersectTri(
        CONST D3DXVECTOR3
* p0,                           //頂點(diǎn)1
        CONST D3DXVECTOR3
* p1,
        CONST D3DXVECTOR3
* p2,
        CONST D3DXVECTOR3
* pRayPos,               //射線起始位置
        CONST D3DXVECTOR3
* pRayDir,               //射線方向
        FLOAT
*             pU,                                          //三個(gè)點(diǎn)比重
        FLOAT
*             pV,
        FLOAT
*             pDist                                       //射線起點(diǎn)到交點(diǎn)位置
        );

para :其中p0, p1, p2分別指向三角形的三個(gè)頂點(diǎn),position為射線起點(diǎn),direction為射線方向向量,u,v,為交點(diǎn)重心坐標(biāo),因?yàn)椴豢赡苤稽c(diǎn)到頂點(diǎn)上,可能點(diǎn)在三角形范圍內(nèi),distance為起點(diǎn)到交點(diǎn)距離,成功返回TRUE,失敗返回FALSE。

vPickPos = v0 * ( 1-u-v) + v1*u + v2*v = v0 + u * (v1 - v0) + v * (v3 - v0); 

特別注意:方向向量必須為單位向量,即pRayDir - pRayPos  為單位向量否則,pDist的值和向量長(zhǎng)度成正比關(guān)系


eg:
    D3DXVECTOR3    rayDir;
    D3DXVECTOR3 vDest( 
10,200,0.f);
    D3DXVECTOR3 vSour( 
10,200,-10.f );
    rayDir 
= vDest - vSour;
    D3DXVec3Normalize( 
&rayDir, &rayDir );                                    //將方向向量化
    BOOL bHit 
= D3DXIntersectTri( &D3DXVECTOR3(0.0f,  0.0f0.5f),
                                
&D3DXVECTOR3(250.0f250.0f0.5f),
                                
&D3DXVECTOR3(0.0f250.0f0.5f),        //pos
                                &D3DXVECTOR3(10,200,-10.f ),            //dir
                                &rayDir, 
                                
&fu, 
                                
&fv, 
                                
&t );

游戲中應(yīng)用
    float CTerrain::GetZByXY( float fx,float fy  )
    
{
        
//求出第幾個(gè)方格
        int x,y;
        x 
= fx / MAPTILESIZE;
        y 
= fy / MAPTILESIZE;
        
if( x < 0 || x >= m_iMapWidth-1  )
            
return 0;
        
if( y < 0 || y >= m_iMapHeight-1 )
            
return 0;    
        
        
//方格四頂點(diǎn)
        D3DXVECTOR3 *pos[4];
        pos[
0= &m_ppPointPos[ y ][ x ];
        pos[
1= &m_ppPointPos[ y ][ x + 1];
        pos[
2= &m_ppPointPos[ y + 1][ x + 1];
        pos[
3= &m_ppPointPos[ y + 1][ x ];

        
float fMaxZ;
        fMaxZ 
= pos[ 0 ]->z ;
        
int iLoop;
        
for( iLoop = 1 ; iLoop < 4 ; iLoop ++ )
        
{
            
if( fMaxZ < pos[ iLoop ]->z )
                fMaxZ 
= pos[ iLoop ]->z;
        }


        
// 求眼睛和地形相交位置,注意單位化方向向量
        D3DXVECTOR3 vEye,vDir(0,0,-1);

        vEye.x 
= fx;
        vEye.y 
= fy;
        vEye.z 
= fMaxZ + 10;

        
float fU,fV,fDis;

        
if!D3DXIntersectTri( pos[0],pos[1] ,pos[2],&vEye,&vDir,            //三角形1
            &fU,&fV,&fDis ) )
        
{    
            
if!D3DXIntersectTri( pos[2],pos[3],pos[0],&vEye,&vDir,        //三角形2
                &fU,&fV,&fDis ) )
            
{
                
return 0.0f;
            }

            
else
            
{
                
return vEye.z - fDis;
            }

        }

        
else
        
{
            
return vEye.z - fDis;
        }

    }


 參考:
地形碰撞計(jì)算:
一.如果是鼠標(biāo)點(diǎn)擊地面,
可將射線固定長(zhǎng)度并分段,然后用射線與每一個(gè)分段上的點(diǎn)所落在的地面tile(兩個(gè)三角形)進(jìn)行求交,
相交則返回對(duì)應(yīng)位置,否則繼續(xù)與下一個(gè)段上的點(diǎn)所落在的地面tile求交
/*
      0      1
       ---->
      | \  |
      |  \ |
    2 V ---  3   
*/
這里不討論點(diǎn)擊屏幕求射線方法與射線分段處理,只算求交
如下d3d求交得出uv,再求位置:
 VECTOR3 vPickPos;
 // 右邊:
 if( D3DXIntersectTri(&v0, &v1, &v3, &vOrig, &vDir, &u, &v, NULL) == TRUE)
 {
  vPickPos = v0 + u * (v1 - v0) + v * (v3 - v0); 
  return vPickPos.z;
 }
 // 左邊:
 if( D3DXIntersectTri(&v0, &v3, &v2, &vOrig, &vDir, &u, &v, NULL) == TRUE)
 {
  vPickPos = v0 + u * (v3 - v0) + v * (v2 - v0);  
  return vPickPos.z;
 }

二.如果是僅是求地表某點(diǎn)高度
則可用uv重心求法(注意上述第一點(diǎn)的d3d的那個(gè)uv重心求法不太一樣,他的uv跟他的向量走?)
 float u = (fX-(int)fX);
 float v = (fY-(int)fY);

 float p0 = fHeight[0];
 float p1 = fHeight[1];
 float p2 = fHeight[2];
 float p3 = fHeight[3];

 if(u>v){ // 右邊
  return p0 + u * (p1 - p0) + v * (p3 - p1);; 
 }
 else{  // 左邊
  return  p0 + u * (p3 - p2) + v * (p2 - p0);
 }


http://flipcode.spaces.live.com/blog/cns!8E578E7901A88369!1052.entry
posted on 2010-08-18 14:23 風(fēng)輕云淡 閱讀(1372) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): DX
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久成人免费视频| 一本色道**综合亚洲精品蜜桃冫 | 老色鬼精品视频在线观看播放| 一区二区三区国产盗摄| 狠狠色丁香久久综合频道 | 一区二区高清在线| 欧美激情亚洲另类| 麻豆精品视频在线观看| 欧美一区二区高清在线观看| 9l视频自拍蝌蚪9l视频成人| 亚洲电影在线| 国模套图日韩精品一区二区| 国产美女精品免费电影| 欧美视频精品在线观看| 欧美高清视频免费观看| 免费观看成人| 久久久久久9| 久久成人精品无人区| 午夜精品一区二区三区在线视| 亚洲深夜激情| 在线性视频日韩欧美| aa成人免费视频| 亚洲人成久久| 亚洲日本成人网| 亚洲狠狠丁香婷婷综合久久久| 欧美电影美腿模特1979在线看| 久久免费国产| 久久久青草婷婷精品综合日韩| 久久精彩免费视频| 久久精品官网| 久久久久国产一区二区三区四区| 欧美一级播放| 久久久国产亚洲精品| 久久午夜激情| 欧美freesex8一10精品| 欧美成人视屏| 亚洲高清激情| 91久久精品一区| 99re这里只有精品6| 亚洲视频在线观看网站| 亚洲永久免费精品| 先锋亚洲精品| 久久久久久九九九九| 久久久综合精品| 欧美电影免费观看大全| 欧美日韩国产欧| 国产精品区免费视频| 国产精品一区二区你懂得| 国产色婷婷国产综合在线理论片a| 国产亚洲欧美一区在线观看| 极品日韩av| 亚洲精品一级| 亚洲永久视频| 久久亚洲精品视频| 亚洲国产精品va在线观看黑人| 日韩视频在线免费| 亚洲免费在线精品一区| 久久久久久成人| 欧美极品在线观看| 国产精品女人毛片| 一区二区三区自拍| 亚洲免费观看高清完整版在线观看熊 | 亚洲激情视频在线播放| 在线亚洲欧美专区二区| 性伦欧美刺激片在线观看| 久久综合中文色婷婷| 欧美日韩精品久久| 国产主播一区二区三区四区| 亚洲国产成人tv| 亚洲永久免费av| 蜜臀av一级做a爰片久久| 亚洲精品中文在线| 欧美在线视频日韩| 欧美日韩成人综合在线一区二区| 国产女人18毛片水18精品| 91久久在线观看| 欧美中在线观看| 亚洲电影一级黄| 亚洲一区中文| 欧美二区在线看| 国产一区二区三区精品欧美日韩一区二区三区 | 亚洲国产视频直播| 午夜欧美视频| 欧美日韩国产探花| 亚洲第一福利在线观看| 午夜精品久久久久久99热软件| 欧美大成色www永久网站婷| 亚洲影视综合| 欧美久久久久久久| 精品二区视频| 香蕉国产精品偷在线观看不卡| 亚洲黄色高清| 久久黄色影院| 国产精品视频免费一区| 亚洲精品婷婷| 免费永久网站黄欧美| 午夜精品一区二区三区在线播放| 欧美日韩国产一区二区三区地区 | 亚洲一级在线| 欧美国产亚洲另类动漫| 欧美一级专区免费大片| 欧美午夜精品久久久久久孕妇 | 99视频在线观看一区三区| 久久视频一区二区| 国内精品美女av在线播放| 欧美亚洲一区二区三区| 日韩视频在线观看国产| 欧美大成色www永久网站婷| 激情五月综合色婷婷一区二区| 午夜精品亚洲| 在线亚洲欧美| 欧美色大人视频| 一区二区三区高清视频在线观看| 女人天堂亚洲aⅴ在线观看| 欧美一区成人| 国产日韩一区二区三区| 欧美一级片久久久久久久| 一本久道久久综合狠狠爱| 欧美乱妇高清无乱码| 亚洲精品在线二区| 亚洲国产成人精品久久| 久久综合一区二区| 亚洲精美视频| 欧美韩日一区二区| 美女久久一区| 亚洲人成欧美中文字幕| 亚洲国产视频直播| 欧美精品在线视频| 一本久久a久久免费精品不卡 | 久久精品国产清自在天天线| 国产伪娘ts一区| 久久久久久久综合色一本| 欧美一区国产二区| 极品少妇一区二区三区| 蜜桃av一区二区| 美女精品网站| 夜夜躁日日躁狠狠久久88av| 亚洲啪啪91| 欧美日韩一区在线观看视频| 亚洲一区免费观看| 午夜精品剧场| 精品二区久久| 亚洲国产精品电影| 欧美三级欧美一级| 久久成人免费视频| 久久综合给合久久狠狠色| 亚洲精品社区| 亚洲午夜免费福利视频| 国外精品视频| 亚洲国产欧美日韩| 欧美午夜在线视频| 久久精品国产一区二区三| 久久久综合视频| 一区二区久久久久久| 亚洲中字黄色| 伊人男人综合视频网| 亚洲国产视频一区| 国产精品青草综合久久久久99 | 亚洲一区二区三区精品在线| 国产日产精品一区二区三区四区的观看方式 | 一区二区三区精品久久久| 亚洲午夜电影| 亚洲成在线观看| 日韩小视频在线观看| 国产视频精品免费播放| 欧美国产日韩一二三区| 欧美小视频在线| 免费成人av在线看| 欧美视频一区在线| 久久午夜电影网| 欧美日韩在线三级| 老司机久久99久久精品播放免费| 欧美精品网站| 久久久久国产成人精品亚洲午夜| 欧美国产日韩一区二区在线观看| 亚洲欧美日韩区| 欧美r片在线| 欧美在线一区二区三区| 欧美成人亚洲成人日韩成人| 欧美一区二区三区四区高清 | 国产精品网红福利| 欧美阿v一级看视频| 国产精品高清网站| 亚洲二区视频| 国产一区二区高清| 夜夜躁日日躁狠狠久久88av| 伊人久久综合| 亚洲伊人伊色伊影伊综合网| 亚洲精品久久久久久下一站| 欧美一区=区| 亚洲综合欧美日韩| 欧美激情精品久久久六区热门| 久久久久久一区| 国产精品色午夜在线观看| 欧美激情国产高清| 精品91久久久久| 亚洲欧美日韩人成在线播放| 亚洲视屏在线播放| 欧美成人一区二区三区片免费| 久久在线91|