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

天行健 君子當(dāng)自強(qiáng)而不息

DirectX 9的一些數(shù)學(xué)計(jì)算函數(shù):矩陣,坐標(biāo)變換。


向量的運(yùn)算已超了傳統(tǒng)意義上的數(shù)的運(yùn)算,因?yàn)橄蛄坎⒉皇且话愕臄?shù)字。這意味著一切可用符號(hào)表示出來的事物,都可以對(duì)其進(jìn)行各種關(guān)系運(yùn)算,而不必關(guān)心事物的本身。這種符號(hào)運(yùn)算的觀點(diǎn),推動(dòng)了近代數(shù)學(xué)對(duì)一般的集合元素進(jìn)行的抽象代數(shù)方面的研究。

在線性方程組的求解上,變元較少的方程組(如僅有兩個(gè)未知數(shù)x和y的方程組)的解很容易表達(dá)出來,但是推廣到較為復(fù)雜的更多變元的情形,如何推測方程組的解以及如何用確定的式子表達(dá)出來,引發(fā)了對(duì)行列式的提出和研究。行列式實(shí)質(zhì)上是方陣數(shù)據(jù)的一種運(yùn)算,由此自然地想到,可對(duì)一般行列數(shù)據(jù)定義代數(shù)運(yùn)算,就像對(duì)向量定義運(yùn)算一樣,這就是矩陣運(yùn)算的產(chǎn)生歷史。

由于DirectX三維游戲的開發(fā)僅需要應(yīng)用4x4矩陣的計(jì)算,因此,DirectX 9在d3dx9math.h文件中定義了對(duì)應(yīng)于4x4矩陣的D3DMATRIX結(jié)構(gòu)體和一個(gè)提供了4X4矩陣的各種運(yùn)算處理的D3DXMATRIX類。

typedef struct _D3DMATRIX {
    union {
        
struct {
            
float        _11, _12, _13, _14;
            
float        _21, _22, _23, _24;
            
float        _31, _32, _33, _34;
            
float        _41, _42, _43, _44;

        };
        
float m[4][4];
    };
} D3DMATRIX;

typedef 
struct D3DXMATRIX : public D3DMATRIX
{
public:
    D3DXMATRIX() {};
    D3DXMATRIX( CONST FLOAT 
* );
    D3DXMATRIX( CONST D3DMATRIX
& );
    D3DXMATRIX( CONST D3DXFLOAT16 
* );
    D3DXMATRIX( FLOAT _11, FLOAT _12, FLOAT _13, FLOAT _14,
                FLOAT _21, FLOAT _22, FLOAT _23, FLOAT _24,
                FLOAT _31, FLOAT _32, FLOAT _33, FLOAT _34,
                FLOAT _41, FLOAT _42, FLOAT _43, FLOAT _44 );


    
// access grants
    FLOAT& operator () ( UINT Row, UINT Col );
    FLOAT  
operator () ( UINT Row, UINT Col ) const;

    
// casting operators
    operator FLOAT* ();
    
operator CONST FLOAT* () const;

    
// assignment operators
    D3DXMATRIX& operator *= ( CONST D3DXMATRIX& );
    D3DXMATRIX
& operator += ( CONST D3DXMATRIX& );
    D3DXMATRIX
& operator -= ( CONST D3DXMATRIX& );
    D3DXMATRIX
& operator *= ( FLOAT );
    D3DXMATRIX
& operator /= ( FLOAT );

    
// unary operators
    D3DXMATRIX operator + () const;
    D3DXMATRIX 
operator - () const;

    
// binary operators
    D3DXMATRIX operator * ( CONST D3DXMATRIX& ) const;
    D3DXMATRIX 
operator + ( CONST D3DXMATRIX& ) const;
    D3DXMATRIX 
operator - ( CONST D3DXMATRIX& ) const;
    D3DXMATRIX 
operator * ( FLOAT ) const;
    D3DXMATRIX 
operator / ( FLOAT ) const;

    friend D3DXMATRIX 
operator * ( FLOAT, CONST D3DXMATRIX& );

    BOOL 
operator == ( CONST D3DXMATRIX& ) const;
    BOOL 
operator != ( CONST D3DXMATRIX& ) const;

} D3DXMATRIX, 
*LPD3DXMATRIX;

要正確運(yùn)行以下的示例程序,需要在工程中包含d3dx9.lib,或者在main函數(shù)前加入
#pragma comment(lib, "d3dx9.lib")

以指示編譯器鏈接d3dx9.lib。

矩陣的基本運(yùn)算:包括加,減,乘。

函數(shù)原型:
    D3DXMATRIX operator * ( CONST D3DXMATRIX& ) const;
    D3DXMATRIX operator + ( CONST D3DXMATRIX& ) const;
    D3DXMATRIX operator - ( CONST D3DXMATRIX& ) const;
    D3DXMATRIX operator * ( FLOAT ) const;
    D3DXMATRIX operator / ( FLOAT ) const;

代碼示例:

#include <stdio.h>
#include 
<D3DX9Math.h>

#pragma warning(disable : 
4305)

int main()
{
    
// initialize and print matrix A
    D3DXMATRIX A(11.012.013.014.0,
                 
21.022.023.024.0,
                 
31.032.033.034.0,
                 
41.042.043.044.0);

    printf(
"\n");

    printf(
"     |%f   %f    %f    %f|\n", A._11,A._12,A._13,A._14);
    printf(
"     |%f   %f    %f    %f|\n", A._21,A._22,A._23,A._24);
    printf(
"  A= |%f   %f    %f    %f|\n", A._31,A._32,A._33,A._34);
    printf(
"     |%f   %f    %f    %f|\n", A._41,A._42,A._43,A._44);

    printf(
"\n\n\n");

    
// initialize and print matrix B
    D3DXMATRIX B(-10.0-12.0-13.0-14.0,
                 
-21.0-21.0-23.0-24.0,
                 
-31.0-32.0-32.0-34.0,
                 
-41.0-42.0-43.0-43.0);

    printf(
"     |%f   %f    %f    %f|\n", B._11,B._12,B._13,B._14);
    printf(
"     |%f   %f    %f    %f|\n", B._21,B._22,B._23,B._24);
    printf(
"  B= |%f   %f    %f    %f|\n", B._31,B._32,B._33,B._34);
    printf(
"     |%f   %f    %f    %f|\n", B._41,B._42,B._43,B._44);

    printf(
"\n\n\n");

    
// calculate A+B
    D3DXMATRIX C = A + B;

    
for(int i=0; i<4; i++)
    {
        
if(i != 2)
            printf(
"      |%f   %f    %f    %f|\n", C(i,0), C(i,1), C(i,2), C(i,3));
        
else 
            printf(
"  A+B=|%f   %f    %f    %f|\n", C(i,0), C(i,1), C(i,2), C(i,3));
    }

    printf(
"\n\n\n");

    
// calculate A * B
    C = A * B;
    
    
for(int i=0; i<4; i++)
    {
        
if(i != 2)
            printf(
"     |%f   %f    %f    %f|\n", C(i,0), C(i,1), C(i,2), C(i,3));
        
else 
            printf(
"  AB=|%f   %f    %f    %f|\n", C(i,0), C(i,1), C(i,2), C(i,3));
    }
    
    printf(
"\n");

    
return 0;
}

輸出:



矩陣求逆:

// Calculate inverse of matrix.  Inversion my fail, in which case NULL will
// be returned.  The determinant of pM is also returned it pfDeterminant
// is non-NULL.
D3DXMATRIX* WINAPI D3DXMatrixInverse
    ( D3DXMATRIX *pOut, FLOAT *pDeterminant, CONST D3DXMATRIX *pM );

代碼示例:

#include <stdio.h>
#include 
<D3DX9Math.h>

#pragma warning(disable : 
4305)

int main()
{
    
// initialize and print matrix A
    D3DXMATRIX A(1.012.013.014.0,
                 
0.01.0,  23.024.0,
                 
0.00.0,  1.0,  34.0,
                 
0.00.0,  0.0,  1.0);

    printf(
"       |%-4.6f   %-4.6f    %-4.6f    %-4.6f|\n", A._11, A._12, A._13, A._14);
    printf(
"       |%04.6f   %04.6f    %04.6f    %04.6f|\n", A._21, A._22, A._23, A._24);
    printf(
"   A=  |%04.6f   %04.6f    %04.6f    %04.6f|\n", A._31, A._32, A._33, A._34);
    printf(
"       |%04.6f   %04.6f    %04.6f    %04.6f|\n", A._41, A._42, A._43, A._44);

    printf(
"\n\n\n");

    
// calculate inverse matrix for A
    D3DXMATRIX B;

    D3DXMatrixInverse(
&B, NULL, &A);

    printf(
"        |%04.6f   %04.6f    %04.6f    %04.6f|\n", B._11, B._12, B._13, B._14);
    printf(
"        |%04.6f   %04.6f    %04.6f    %04.6f|\n", B._21, B._22, B._23, B._24);
    printf(
"inv(A)= |%04.6f   %04.6f    %04.6f    %04.6f|\n", B._31, B._32, B._33, B._34);
    printf(
"        |%04.6f   %04.6f    %04.6f    %04.6f|\n", B._41, B._42, B._43, B._44);

    printf(
"\n\n\n");

    
return 0;
}

輸出:



矩陣轉(zhuǎn)置:

D3DXMATRIX* WINAPI D3DXMatrixTranspose
    ( D3DXMATRIX *pOut, CONST D3DXMATRIX *pM );

代碼示例:

#include <stdio.h>
#include 
<D3DX9Math.h>

#pragma warning(disable : 
4305)

int main()
{
    
// initialize and print matrix
    D3DXMATRIX A(11.0f12.0f13.0f14.0f,
                
21.0f22.0f23.0f24.0f,
                
31.0f32.0f33.0f34.0f,
                
41.0f42.0f43.0f44.0f);

    printf(
"          |%f   %f    %f    %f|\n", A._11, A._12, A._13, A._14);
    printf(
"          |%f   %f    %f    %f|\n", A._21, A._22, A._23, A._24);
    printf(
"       A= |%f   %f    %f    %f|\n", A._31, A._32, A._33, A._34);
    printf(
"          |%f   %f    %f    %f|\n", A._41, A._42, A._43, A._44);

    printf(
"\n\n\n");

    
// calculate matrix transpose
    D3DXMATRIX C;

    D3DXMatrixTranspose(
&C, &A);

    printf(
"              |%f   %f    %f    %f|\n", C._11, C._12, C._13, C._14);
    printf(
"              |%f   %f    %f    %f|\n", C._21, C._22, C._23, C._24);
    printf(
" transpose A= |%f   %f    %f    %f|\n", C._31, C._32, C._33, C._34);
    printf(
"              |%f   %f    %f    %f|\n", C._41, C._42, C._43, C._44);

    printf(
"\n\n\n");

    
return 0;
}

輸出:



坐標(biāo)平移變換:

1) Builds a matrix using the specified offsets.

D3DXMATRIX *WINAPI D3DXMatrixTranslation(D3DXMATRIX *pOut, FLOAT x, FLOAT y, FLOAT z);

2) Transforms a 3-D vector by a given matrix, projecting the result back into w = 1.

D3DXVECTOR3 *WINAPI D3DXVec3TransformCoord(D3DXVECTOR3 *pOut,
    CONST D3DXVECTOR3 *pV,
    CONST D3DXMATRIX *pM
);

This function transforms the vector, pV (x, y, z, 1), by the matrix, pM, projecting the result back into w=1.

3) Transforms the 3-D vector normal by the given matrix.

D3DXVECTOR3 *WINAPI D3DXVec3TransformNormal(D3DXVECTOR3 *pOut,
    CONST D3DXVECTOR3 *pV,
    CONST D3DXMATRIX *pM
);

This function transforms the vector normal (x, y, z, 0) of the vector, pV, by the matrix, pM.

If you transform a normal by a non-affine matrix, the matrix you pass to this function should be the transpose of the inverse of the matrix you would use to transform a coordinate.

D3DXVec3TransformNormal這個(gè)函數(shù)似乎執(zhí)行與 D3DXVec3TransformCoord相反的運(yùn)算,沒搞懂。

代碼示例:

#include <stdio.h>
#include 
<D3DX9Math.h>

#pragma warning(disable : 
4305)

int main()
{
    D3DXVECTOR3 v(
1.02.03.0);
    D3DXMATRIX M;

    D3DXMatrixTranslation(
&M, v.x, v.y, v.z);

    printf(
"             |%f   %f    %f    %f|\n", M._11, M._12, M._13, M._14);
    printf(
"             |%f   %f    %f    %f|\n", M._21, M._22, M._23, M._24);
    printf(
"Translate M= |%f   %f    %f    %f|\n", M._31, M._32, M._33, M._34);
    printf(
"             |%f   %f    %f    %f|\n", M._41, M._42, M._43, M._44);

    printf(
"\n\n");

    D3DXVECTOR3 P(
20.03.08.0);
    D3DXVECTOR3 new_P;

    D3DXVec3TransformCoord(
&new_P, &P, &M);

    printf(
"p coordinate (%f, %f, %f) in new coordinate reference\n\n", new_P.x, new_P.y, new_P.z);

    D3DXVec3TransformNormal(
&new_P, &P, &M);

    printf(
"p transform normal (%f, %f, %f)\n\n", new_P.x, new_P.y, new_P.z);

    
return 0;
}

輸出:



坐標(biāo)的放大縮小變換:

Builds a matrix that scales along the x-axis, the y-axis, and the z-axis.

D3DXMATRIX * D3DXMatrixScaling(
D3DXMATRIX *pOut,
FLOAT sx,
FLOAT sy,
FLOAT sz
);
pOut
[in, out] Pointer to the D3DXMATRIX structure that is the result of the operation.
sx
[in] Scaling factor that is applied along the x-axis.
sy
[in] Scaling factor that is applied along the y-axis.
sz
[in] Scaling factor that is applied along the z-axis.

代碼示例:

#include <stdio.h>
#include 
<D3DX9Math.h>

#pragma warning(disable : 
4305)

int main()
{
    D3DXMATRIX M;
    D3DXMatrixScaling(
&M, 2.02.02.0);

    printf(
"                   |%f   %f    %f    %f|\n", M._11, M._12, M._13, M._14);
    printf(
"                   |%f   %f    %f    %f|\n", M._21, M._22, M._23, M._24);
    printf(
"Scaling Matrix: M= |%f   %f    %f    %f|\n", M._31, M._32, M._33, M._34);
    printf(
"                   |%f   %f    %f    %f|\n", M._41, M._42, M._43 ,M._44);

    printf(
"\n\n\n");

    D3DXVECTOR3  P(
3.08.033.0);
    D3DXVECTOR3 new_P;

    D3DXVec3TransformCoord(
&new_P, &P, &M);
    printf(
"After transform coordinate: (%f, %f, %f)\n\n", new_P.x, new_P.y, new_P.z);

    
return 0;
}

輸出:



旋轉(zhuǎn)變換:

對(duì)于旋轉(zhuǎn)變換的矩陣計(jì)算,DirectX提供了 D3DXMatrixRotationX,D3DXMatrixRotationY, D3DXMatrixRotationZ和D3DXMatrixRotationAxis等函數(shù)來計(jì)算沿x,y,z軸以及任意軸線的旋轉(zhuǎn)變換矩陣,這4個(gè)函數(shù)的旋轉(zhuǎn)角都采用弧度作為計(jì)量單位.

// Build a matrix which rotates around the X axis
D3DXMATRIX* WINAPI D3DXMatrixRotationX
    ( D3DXMATRIX *pOut, FLOAT Angle );

// Build a matrix which rotates around the Y axis
D3DXMATRIX* WINAPI D3DXMatrixRotationY
    ( D3DXMATRIX *pOut, FLOAT Angle );

// Build a matrix which rotates around the Z axis
D3DXMATRIX* WINAPI D3DXMatrixRotationZ
    ( D3DXMATRIX *pOut, FLOAT Angle );

// Build a matrix which rotates around an arbitrary axis
D3DXMATRIX* WINAPI D3DXMatrixRotationAxis
    ( D3DXMATRIX *pOut, CONST D3DXVECTOR3 *pV, FLOAT Angle );

代碼示例:

#include <stdio.h>
#include 
<D3DX9Math.h>

#pragma warning(disable : 
4305)

int main()
{
    D3DXMATRIX M;
    D3DXVECTOR3 vec_rotate(
5.05.05.0);
    
float angle = D3DX_PI;

    D3DXMatrixRotationAxis(
&M, &vec_rotate, angle);

    printf(
"                    |%f   %f    %f    %f|\n", M._11, M._12, M._13, M._14);
    printf(
"                    |%f   %f    %f    %f|\n", M._21, M._22, M._23, M._24);
    printf(
"Rotation Matrix M = |%f   %f    %f    %f|\n", M._31, M._32, M._33, M._34);
    printf(
"                    |%f   %f    %f    %f|\n", M._41, M._42, M._43, M._44);

    printf(
"\n\n\n");

    D3DXVECTOR3 P(
2.03.06.0);
    D3DXVec3TransformCoord(
&P, &P, &M);

    printf(
"After rotation: P(%f, %f, %f)\n\n", P.x, P.y, P.z);

    
return 0;
}

輸出:



還有一個(gè)函數(shù) D3DXMatrixRotationYawPitchRoll,可以直接計(jì)算沿x,y,z軸旋轉(zhuǎn)的變換矩陣。

Builds a matrix with a specified yaw, pitch, and roll.

D3DXMATRIX * D3DXMatrixRotationYawPitchRoll(
D3DXMATRIX *pOut,
FLOAT Yaw,
FLOAT Pitch,
FLOAT Roll
);

Parameters

pOut
[in, out] Pointer to the D3DXMATRIX structure that is the result of the operation.
Yaw
[in] Yaw around the y-axis, in radians.
Pitch
[in] Pitch around the x-axis, in radians.
Roll
[in] Roll around the z-axis, in radians.

Return Values

Pointer to a D3DXMATRIX structure with the specified yaw, pitch, and roll.

Remarks

The return value for this function is the same value returned in the pOut parameter. In this way, the D3DXMatrixRotationYawPitchRoll function can be used as a parameter for another function.

The order of transformations is roll first, then pitch, then yaw. Relative to the object's local coordinate axis, this is equivalent to rotation around the z-axis, followed by rotation around the x-axis, followed by rotation around the y-axis.
 

Figure 1.  Roll, pitch, yaw diagram




代碼示例:

#include <stdio.h>
#include 
<D3DX9Math.h>

#pragma comment(lib, 
"d3dx9.lib")

#pragma warning(disable : 
4305)

int main()
{
    D3DXMATRIX M;
    D3DXVECTOR3 P(
2.03.06.0);

    printf(
"Before rotation: P(%f, %f, %f)\n\n", P.x, P.y, P.z);

    
// Rotate around y-axis with 0 degree, around x-axis with PI degree, around z-axis with PI degree.
    D3DXMatrixRotationYawPitchRoll(&M, 0, D3DX_PI, D3DX_PI);

    printf(
"                    |%f   %f    %f    %f|\n", M._11, M._12, M._13, M._14);
    printf(
"                    |%f   %f    %f    %f|\n", M._21, M._22, M._23, M._24);
    printf(
"Rotation Matrix M = |%f   %f    %f    %f|\n", M._31, M._32, M._33, M._34);
    printf(
"                    |%f   %f    %f    %f|\n", M._41, M._42, M._43, M._44);

    printf(
"\n\n\n");
    
    D3DXVec3TransformCoord(
&P, &P, &M);

    printf(
"After rotation: P(%f, %f, %f)\n\n", P.x, P.y, P.z);

    
return 0;
}

運(yùn)行截圖:



posted on 2007-04-27 20:04 lovedday 閱讀(2389) 評(píng)論(0)  編輯 收藏 引用 所屬分類: ■ DirectX 9 Program

公告

導(dǎo)航

統(tǒng)計(jì)

常用鏈接

隨筆分類(178)

3D游戲編程相關(guān)鏈接

搜索

最新評(píng)論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲黄色在线看| 欧美日韩国产成人高清视频| 亚洲第一页中文字幕| 免费中文字幕日韩欧美| 欧美成人一二三| 日韩性生活视频| 亚洲一区黄色| 久久久久欧美| 欧美精品色综合| 国产精品美女999| 国内精品久久久久久久果冻传媒| 激情久久婷婷| 9l国产精品久久久久麻豆| 亚洲综合色视频| 久久九九免费视频| 亚洲欧洲一区二区天堂久久| 在线一区日本视频| 久久本道综合色狠狠五月| 另类尿喷潮videofree | 亚洲伦理在线免费看| 中文在线不卡视频| 另类尿喷潮videofree| 亚洲美女91| 久久久一区二区三区| 欧美日韩国产小视频| 国产永久精品大片wwwapp| 亚洲精品视频免费观看| 性亚洲最疯狂xxxx高清| 亚洲国产精品久久久久| 亚洲线精品一区二区三区八戒| 久久免费国产| 国产精品视频不卡| av成人免费观看| 美女网站在线免费欧美精品| 一本色道综合亚洲| 欧美不卡视频| 亚洲高清一二三区| 久久免费视频网| 亚洲一区日韩| 欧美天天在线| 亚洲巨乳在线| 欧美成人免费在线| 欧美中文字幕第一页| 国产精品免费观看在线| 亚洲精品专区| 亚洲大胆在线| 欧美 日韩 国产 一区| 黄色综合网站| 欧美国产一区二区| 欧美在线观看www| 国产精品久久久久三级| 亚洲精品在线看| 欧美国产精品v| 久久久精品国产一区二区三区| 国产精品你懂的在线| 亚洲免费网址| 这里只有精品视频在线| 欧美日韩一区在线播放| 亚洲视频一区在线观看| 99精品99久久久久久宅男| 欧美日韩午夜精品| 一区二区欧美国产| 一区二区三区国产精华| 欧美视频在线观看免费网址| 亚洲一区免费| 亚洲女性喷水在线观看一区| 国产日韩1区| 久久久久久69| 久久中文字幕一区| 日韩午夜电影在线观看| 99在线精品观看| 国产精品久久久久久久久果冻传媒 | 日韩亚洲在线观看| 国产精品欧美日韩久久| 欧美一区二区三区视频在线观看| 亚洲欧美在线一区| 极品尤物一区二区三区| 亚洲国产精品t66y| 国产精品国产三级国产普通话99| 午夜激情一区| 久久久久久久激情视频| 99re66热这里只有精品3直播| 在线一区二区三区四区| 尤物精品在线| 宅男精品视频| 亚洲国产专区校园欧美| 亚洲视频日本| 在线观看一区二区视频| 99pao成人国产永久免费视频| 国产精品一区久久久久| 免费在线成人av| 国产精品久久久久秋霞鲁丝| 免费成人黄色av| 国产精品久久久一本精品| 欧美成年视频| 国产精品一区二区三区四区五区| 噜噜噜在线观看免费视频日韩| 欧美精品1区2区| 久久久一本精品99久久精品66| 另类亚洲自拍| 欧美一区二区在线看| 欧美成人午夜激情| 久久国产精品99久久久久久老狼| 欧美承认网站| 久久久精彩视频| 欧美日韩一区自拍| 欧美黄色精品| 在线成人性视频| 欧美亚洲在线视频| 久久男人资源视频| 国产精品毛片| 亚洲国产乱码最新视频| 国产色视频一区| 999亚洲国产精| 亚洲伦理在线观看| 久久久久久久999| 欧美一级播放| 欧美午夜精彩| 亚洲美女精品久久| 99热在这里有精品免费| 快she精品国产999| 欧美freesex交免费视频| 好吊日精品视频| 欧美一区二区三区在线观看视频| 午夜精品久久久久久99热软件 | 欧美国产精品久久| 欧美电影免费观看网站| 精品动漫3d一区二区三区免费| 欧美亚洲日本国产| 久久久国产精品一区二区中文 | 亚洲欧美在线免费| 亚洲一区欧美激情| 欧美日韩视频在线| 99精品热6080yy久久| 一区二区高清在线观看| 欧美日韩国产色站一区二区三区| 亚洲国产精品小视频| 亚洲美女黄色| 欧美三级不卡| 亚洲一级免费视频| 欧美在线视频二区| 黄色成人在线免费| 久久婷婷国产综合国色天香| 欧美黑人在线观看| 亚洲视频大全| 国产欧美日韩一区二区三区在线观看 | 亚洲中无吗在线| 国产精品成人一区二区艾草| 亚洲一区二区三区乱码aⅴ| 久久成人一区二区| 亚洲电影在线看| 欧美日韩午夜在线视频| 亚洲免费影视| 欧美大片在线看免费观看| 日韩午夜av在线| 国产精品欧美精品| 久久久九九九九| 亚洲国产一区二区三区青草影视 | 亚洲国产精品久久久久秋霞不卡| 另类专区欧美制服同性| 亚洲免费高清视频| 久久成人羞羞网站| 亚洲黄色成人久久久| 国产精品成人一区二区| 久久九九国产精品| 亚洲精品网站在线播放gif| 亚洲欧美卡通另类91av| 国语自产在线不卡| 欧美日韩精品一二三区| 欧美一区午夜视频在线观看| 亚洲黄网站在线观看| 欧美一区视频在线| 亚洲高清视频一区| 欧美日韩精品一区二区| 亚洲欧美成人精品| 亚洲国产成人tv| 欧美在线视屏| 亚洲乱码国产乱码精品精天堂| 国产精品色网| 欧美伦理91i| 久久久噜噜噜久久久| 亚洲少妇在线| 亚洲激情在线视频| 久久久久久有精品国产| 一本色道久久综合亚洲精品婷婷| 国产一区二区三区丝袜| 欧美色大人视频| 免费观看欧美在线视频的网站| 亚洲在线观看视频| 日韩亚洲视频| 亚洲国产成人av| 免费视频久久| 久久精品免视看| 亚洲欧美日韩在线观看a三区 | 欧美影院在线播放| 中日韩高清电影网| 亚洲人成7777| 亚洲第一网站| 欧美国产综合视频| 欧美va亚洲va国产综合|