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

隨筆 - 32  文章 - 94  trackbacks - 0
<2025年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

常用鏈接

留言簿(8)

隨筆分類

隨筆檔案

好友連接

搜索

  •  

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

注意:如果需要轉(zhuǎn)載,請(qǐng)注明作者
作者:陳昱(CY)


繼續(xù)上一章寫(xiě),根據(jù)上一章線段存儲(chǔ)的思路,完成線的復(fù)制代碼如下:
 1void CSuperCube::CaculateLHelp(int currentDim)
 2{
 3    //---------------------------邊計(jì)算
 4    if (currentDim==0)return;
 5    if(currentDim==1)
 6    {
 7        Lines[0].points1=&Points[0];
 8        Lines[0].points2=&Points[DimensionNum];
 9        return;
10    }

11    else
12    {
13        //----------------------------------------------------------復(fù)制產(chǎn)生的邊
14        int targetStar=LinesCount[currentDim-1];//復(fù)制的起始邊
15        int targetEnd=LinesCount[currentDim-1]*2;//復(fù)制的結(jié)束邊下一條邊
16        for(int i=targetStar;i<targetEnd;++i)
17        {
18            Lines[i].points1=Lines[i-targetStar].points1+DimensionNum*(1<<(currentDim-1));//指針偏移
19            Lines[i].points2=Lines[i-targetStar].points2+DimensionNum*(1<<(currentDim-1));
20        }

21        //------------------------------------------復(fù)制部分完成,增加拉伸部分產(chǎn)生的邊
22        targetStar=targetEnd;//拉伸邊存儲(chǔ)起始
23        targetEnd=targetStar+(1<<(currentDim-1));//拉伸邊存儲(chǔ)結(jié)束的下一條邊
24        for(int i=targetStar;i<targetEnd;++i)
25        {
26            Lines[i].points1=&Points[(i-targetStar)*DimensionNum];
27            Lines[i].points2=&Points[(i-targetStar*2+targetEnd)*DimensionNum];
28        }

29    }

30}

經(jīng)過(guò)查找維基百科,矩陣旋轉(zhuǎn)采用所說(shuō)的吉文斯旋轉(zhuǎn)http://zh.wikipedia.org/w/index.php?title=Givens%E6%97%8B%E8%BD%AC&variant=zh-cn
于是有了點(diǎn)和線的數(shù)據(jù),可以初步用OpenGL渲染了!!于是把面的數(shù)據(jù)生成先拋到一邊,迫不及待完成UI界面、鍵盤交互。
目前為止代碼如下:(由于上一章的代碼沒(méi)有debug,難免有些錯(cuò)誤,上一章的代碼就不修改了,這里貼出正確的代碼,后面加上demo演示)
.h文件:
  1#pragma once
  2#include "mainWindowStyle.h"
  3#include "common/Render/CY_Camera.h"
  4
  5class CSuperCube:public CY_Screen
  6{
  7    //-----------------------------------------------------------
  8    int MaxDim;//維度數(shù)量
  9    int *PointsCount;
 10    int *LinesCount;
 11    int *FaceCount;
 12    //-----------------------------------------------------------
 13
 14    float Length;//邊長(zhǎng)
 15    //-----------------------------------------------------------------------------------------
 16    bool isDone;//已經(jīng)可以渲染的標(biāo)志
 17
 18    float *Points;//n維空間中的點(diǎn)(以DimensionNum為一組為一個(gè)點(diǎn)坐標(biāo),PointNum為點(diǎn)數(shù)量,所以該float數(shù)組大小為DimensionNum*PointNum)
 19    int    DimensionNum;
 20    int PointNum;
 21
 22    struct SLine
 23    {
 24        float *points1;
 25        float *points2;
 26        SLine()
 27        {
 28            points1=0;
 29            points2=0;
 30        }

 31    }
;
 32    SLine *Lines;//n維空間中的線(以2個(gè)點(diǎn)的x坐標(biāo)索引為起始)
 33    int LineNum;
 34
 35    struct SFace
 36    {
 37        float *points1;
 38        float *points2;
 39        float *points3;
 40        float *points4;
 41        SFace()
 42        {
 43            points1=0;
 44            points2=0;
 45            points3=0;
 46            points4=0;
 47        }

 48    }
;
 49    int FaceNum;
 50    SFace *Faces;//n維空間中的面
 51    //---------------------------------------------------------------------------------------------
 52    //初始化各個(gè)維度的立方體中,點(diǎn)、線、面的數(shù)量
 53    //輸入:maxDim最大維數(shù)
 54    void InitMaxPLF(int maxDim);
 55
 56
 57    //計(jì)算Dim維度下的立方體的點(diǎn)、線、面
 58    void CaculatePLF(int Dim);
 59    void CaculatePHelp(int currentDim);
 60    void CaculateLHelp(int currentDim);
 61    void CaculateFHelp(int currentDim);
 62
 63
 64    inline int PtAtIndex(int i)const
 65    {
 66        return i*DimensionNum;
 67    }

 68
 69    //吉文斯矩陣旋轉(zhuǎn),
 70    //輸入:dimNum空間維度(>=2,<=15)、point點(diǎn)指針、theta角度、dim1旋轉(zhuǎn)面的第一個(gè)方向、dim2旋轉(zhuǎn)面的第二個(gè)方向(值從1---15)
 71    //輸出:point點(diǎn)的坐標(biāo)值
 72    inline void GivensRotateMatrix(int dimNum,float *point,float theta,int dim1,int dim2);
 73
 74    void Rotate(float theta,int dim1,int dim2);
 75public:
 76    CSuperCube();
 77    ~CSuperCube();
 78
 79    //-----------------------------------
 80    CY_TextBox *DimensionInput;
 81    CY_Label *InputLabel;
 82    CY_Button  *CreateBtn;
 83    CY_CheckBox *FaceLineRender;
 84
 85    CY_Camera theCamera;
 86    //------------------------------------
 87
 88    unsigned long lastTime;
 89    unsigned long currentTime;
 90    void UpDate();
 91
 92    void DrawScene();
 93
 94    void LineRender();
 95    void FaceRender();
 96
 97
 98    void OnKeyDown();
 99    void OnCreateBtnDown(CY_Controller *);
100}
;

.cpp文件:
  1#include "Screens.h"
  2#include <math.h>
  3
  4
  5CSuperCube::CSuperCube():CY_Screen()
  6{
  7    isDone=false;
  8    Length=50.0f;
  9    MaxDim=0;//維度數(shù)量
 10
 11    PointsCount=0;//點(diǎn)數(shù)
 12    LinesCount=0;//線數(shù)
 13    FaceCount=0;//面數(shù)
 14
 15    Points=0;//n維空間中的點(diǎn)(以DimensionNum為一組為一個(gè)點(diǎn)坐標(biāo),PointNum為點(diǎn)數(shù)量,所以該float數(shù)組大小為DimensionNum*PointNum)
 16    DimensionNum=0;
 17    PointNum=0;
 18
 19    Lines=0;//n維空間中的線(以2個(gè)點(diǎn)的x坐標(biāo)索引為起始)
 20    LineNum=0;
 21
 22    Faces=0;
 23    FaceNum=0;
 24
 25    //------------------------------------------------
 26    InputLabel=new CY_Label(L"請(qǐng)輸入超立方體維度:",20,20);
 27    this->addContent(InputLabel);
 28    DimensionInput=new CY_TextBox(160,15,100);
 29    DimensionInput->SetNumberic();
 30    this->addContent(DimensionInput);
 31    CreateBtn=new CY_Button(L"馬上生成~~",windowWidth/2-50,windowHeight-50,100,30);
 32    CreateBtn->OnMouseUpEvent.Bind(this,&CSuperCube::OnCreateBtnDown);
 33    this->addContent(CreateBtn);
 34    FaceLineRender=new CY_CheckBox(400,18,L"線框渲染",true);
 35    this->addContent(FaceLineRender);
 36
 37    
 38    theCamera.SetTargetPosition(Vector3(0,0,0));
 39    theCamera.SetPosition(Vector3(0,0,200));
 40    theCamera.SetUpVector(Vector3(0,1,0));
 41
 42
 43    currentTime=GetTickCount();
 44    lastTime=currentTime;
 45    //--------------------------------------------------
 46
 47    InitMaxPLF(15);
 48}

 49CSuperCube::~CSuperCube()
 50{
 51    if (PointsCount) delete []PointsCount;
 52    if(LinesCount) delete[]LinesCount;
 53    if(FaceCount)delete[]FaceCount;
 54
 55    if(Points)delete []Points;
 56    if(Lines)delete []Lines;
 57    if(Faces)delete []Faces;
 58}

 59//----------------------------------------------------------------------------------------------------------------------------
 60void CSuperCube::InitMaxPLF(int maxDim)
 61{
 62    if (MaxDim || maxDim<3 || maxDim>15)
 63        return;
 64    
 65    MaxDim=maxDim+1;
 66
 67    PointsCount=new int[MaxDim];
 68    LinesCount=new int[MaxDim];
 69    FaceCount=new int[MaxDim];
 70
 71    int i;
 72
 73    PointsCount[0]=1;
 74    for (i=1;i<MaxDim;++i)
 75        PointsCount[i]=PointsCount[i-1]*2;
 76
 77    LinesCount[0]=0;
 78    LinesCount[1]=1;
 79    for (i=2;i<MaxDim;++i)
 80        LinesCount[i]=LinesCount[i-1]*2+PointsCount[i-1];
 81
 82    FaceCount[0]=0;
 83    FaceCount[1]=0;
 84    FaceCount[2]=1;
 85    for(i=3;i<MaxDim;++i)
 86        FaceCount[i]=FaceCount[i-1]*2+LinesCount[i-1];
 87}

 88inline void CSuperCube::GivensRotateMatrix(int dimNum,float *point,float theta,int dim1,int dim2)
 89{
 90    if(dimNum<2 || dimNum>=16 || dim1<0 || dim1>dimNum || dim2<0 ||dim2>dimNum || dim1==dim2)return;
 91
 92    float temp1=cos(theta);
 93    float temp2=sin(theta);
 94    float temp=point[dim1]*temp1-point[dim2]*temp2;
 95    
 96    point[dim2]=point[dim1]*temp2+point[dim2]*temp1;
 97    point[dim1]=temp;
 98}

 99void CSuperCube::Rotate(float theta,int dim1,int dim2)
100{
101    for(int i=0;i<PointNum;++i)
102        GivensRotateMatrix(DimensionNum,&Points[i*DimensionNum],theta,dim1,dim2);
103}

104//-----------------------------------------------------------------------------------------------------------------------------
105void CSuperCube::CaculatePHelp(int currentDim)
106{
107    int i;
108    //----------------------點(diǎn)計(jì)算
109    if(currentDim==0)
110        return;
111    else
112    {
113        int targetStart=1<<(currentDim-1);//復(fù)制的起始點(diǎn)
114        int targetEnd=1<<currentDim;//復(fù)制的結(jié)束點(diǎn)下一點(diǎn)
115        for (i=targetStart;i<targetEnd;++i)
116        {
117            int index=DimensionNum*i;//目標(biāo)點(diǎn)的x坐標(biāo)索引
118            int source=DimensionNum*targetStart;//來(lái)源點(diǎn)的x坐標(biāo)索引負(fù)偏移量
119            for (int j=0;j<currentDim-1;++j)
120            {
121                Points[index+j]=Points[index-source+j];//復(fù)制
122            }

123            Points[index+currentDim-1]=Length;//新加的維度設(shè)為邊長(zhǎng)
124        }

125    }

126}

127void CSuperCube::CaculateLHelp(int currentDim)
128{
129    //---------------------------邊計(jì)算
130    if (currentDim==0)return;
131    if(currentDim==1)
132    {
133        Lines[0].points1=&Points[0];
134        Lines[0].points2=&Points[DimensionNum];
135        return;
136    }

137    else
138    {
139        //----------------------------------------------------------復(fù)制產(chǎn)生的邊
140        int targetStar=LinesCount[currentDim-1];//復(fù)制的起始邊
141        int targetEnd=LinesCount[currentDim-1]*2;//復(fù)制的結(jié)束邊下一條邊
142        for(int i=targetStar;i<targetEnd;++i)
143        {
144            Lines[i].points1=Lines[i-targetStar].points1+DimensionNum*(1<<(currentDim-1));//指針偏移
145            Lines[i].points2=Lines[i-targetStar].points2+DimensionNum*(1<<(currentDim-1));
146        }

147        //------------------------------------------復(fù)制部分完成,增加拉伸部分產(chǎn)生的邊
148        targetStar=targetEnd;//拉伸邊存儲(chǔ)起始
149        targetEnd=targetStar+(1<<(currentDim-1));//拉伸邊存儲(chǔ)結(jié)束的下一條邊
150        for(int i=targetStar;i<targetEnd;++i)
151        {
152            Lines[i].points1=&Points[(i-targetStar)*DimensionNum];
153            Lines[i].points2=&Points[(i-targetStar*2+targetEnd)*DimensionNum];
154        }

155    }

156}

157void CSuperCube::CaculateFHelp(int currentDim)
158{
159
160}

161void CSuperCube::CaculatePLF(int Dim)
162{
163    if(!MaxDim || Dim<2 || Dim>=MaxDim)return;
164
165    if(isDone)
166    {
167        delete []Points;
168        delete []Lines;
169        delete []Faces;
170    }

171    
172    //-------------------------------------分配好內(nèi)存空間
173    DimensionNum=Dim;
174    PointNum=PointsCount[DimensionNum];
175    LineNum=LinesCount[DimensionNum];
176    FaceNum=FaceCount[DimensionNum];
177
178    Points=new float[PointNum*DimensionNum];
179    for (int i=0;i<PointNum*DimensionNum;++i)
180    {
181        Points[i]=0;
182    }

183    
184    Lines=new SLine[LineNum];
185    Faces=new SFace[FaceNum];
186
187    //-------------------------------------計(jì)算值
188    int currentDim=0;
189    while (currentDim<=DimensionNum)
190    {
191        CaculatePHelp(currentDim);
192        CaculateLHelp(currentDim);
193        //CaculateFHelp(currentDim);
194        ++currentDim;
195    }

196    //-----------------------------------把n維體中心移到原點(diǎn)
197    for(int i=0;i<DimensionNum*PointNum;++i)
198    {
199        Points[i]-=(Length/2);
200    }

201}

202//---------------------------------------------------------------------------------------------------------------------------
203void CSuperCube::UpDate()
204{
205    currentTime=GetTickCount();
206    unsigned long dalta=currentTime-lastTime;
207    lastTime=currentTime;
208
209    int i=-1,j=-1;
210    for (i=0;i<DimensionNum;++i)
211    {
212        if(CY_KeyBoard[48+i])
213            break;
214    }

215    for (j=i+1;j<DimensionNum;++j)
216    {
217        if(CY_KeyBoard[48+j])
218            break;
219    }

220    if(i>=0 && j<DimensionNum)//開(kāi)始旋轉(zhuǎn)
221    {
222        float theta=dalta*0.0016f;
223        if(CY_KeyBoard[16])//反方向
224            Rotate(-theta,i,j);
225        else
226            Rotate(theta,i,j);
227    }

228}

229void CSuperCube::LineRender()
230{
231    if(!isDone)return;
232
233    glDisable(GL_CULL_FACE);
234    glDisable(GL_LIGHTING);
235    glLineWidth(2.0f);
236    glColor4f(1,1,1,1);
237    for (int i=0;i<LineNum;++i)
238    {
239        glBegin(GL_LINES);
240        glVertex3fv(Lines[i].points1);
241        glVertex3fv(Lines[i].points2);
242        //glVertex3f(30,30,-10);
243        //glVertex3f(-30,30,10);
244        //glVertex3f(30,-30,0);
245        glEnd();
246    }

247    
248}

249void CSuperCube::FaceRender()
250{
251
252}

253void CSuperCube::DrawScene()
254{
255    glLoadIdentity();
256    theCamera.ApplyCamera();
257
258    if(FaceLineRender->GetIsCheck())
259        LineRender();
260    else FaceRender();
261}

262//---------------------------------------------------------------------------------------------------------------------------------
263void CSuperCube::OnKeyDown()
264{
265    if(CY_KeyBoard[27])
266        PostMessage(hwnd,WM_CLOSE,0,0);
267}

268void CSuperCube::OnCreateBtnDown(CY_Controller *btn)
269{
270    const wchar_t *content=DimensionInput->GetText();
271    int Dim=_wtoi(content);
272    CaculatePLF(Dim);
273    isDone=true;
274}

然后是非常狂喜的截圖:




理論上是可以生成任意大于或等于3的任意維度超立方體的,但是int的有效長(zhǎng)度只有16,UINT也只有32,所以目前就限制輸入維度是15了。可執(zhí)行程序在完成面的分布算法后再給出。
posted on 2009-08-01 22:16 陳昱(CY) 閱讀(2354) 評(píng)論(9)  編輯 收藏 引用 所屬分類: 圖形學(xué)算法

FeedBack:
# re: 一個(gè)想法,實(shí)現(xiàn)n維超級(jí)立方體!!!初步成功!!!(第二章) 2009-08-02 10:10 Vincent
這個(gè)有意思..贊..容我收藏了 ^_^  回復(fù)  更多評(píng)論
  
# re: 一個(gè)想法,實(shí)現(xiàn)n維超級(jí)立方體!!!初步成功!!!(第二章) 2009-08-02 11:49 mybios
能弄個(gè)可執(zhí)行的程序上來(lái)玩玩么?  回復(fù)  更多評(píng)論
  
# re: 一個(gè)想法,實(shí)現(xiàn)n維超級(jí)立方體!!!初步成功!!!(第二章)[未登錄](méi) 2009-08-02 12:23 Bill Hsu
膜拜一下  回復(fù)  更多評(píng)論
  
# re: 一個(gè)想法,實(shí)現(xiàn)n維超級(jí)立方體!!!初步成功!!!(第二章) 2009-08-02 12:57 陳昱(CY)
@mybios
等我完成面的顯示吧,目前只是顯示線,效果有限  回復(fù)  更多評(píng)論
  
# re: 一個(gè)想法,實(shí)現(xiàn)n維超級(jí)立方體!!!初步成功!!!(第二章)[未登錄](méi) 2009-08-02 14:25 cc
膜拜,仰望樓主~~~
  回復(fù)  更多評(píng)論
  
# re: 一個(gè)想法,實(shí)現(xiàn)n維超級(jí)立方體!!!初步成功!!!(第二章) 2009-08-03 11:22 hyt
我以為是正n面體,例如正4面體,正六面體(正方體)。。。  回復(fù)  更多評(píng)論
  
# re: 一個(gè)想法,實(shí)現(xiàn)n維超級(jí)立方體!!!初步成功!!!(第二章)[未登錄](méi) 2009-08-03 14:40 欲三更
這個(gè)結(jié)果是動(dòng)畫(huà)還是靜止的?  回復(fù)  更多評(píng)論
  
# re: 一個(gè)想法,實(shí)現(xiàn)n維超級(jí)立方體!!!初步成功!!!(第二章) 2009-08-03 17:24 CY
@欲三更
可以鍵盤控制旋轉(zhuǎn)的,
昨天已經(jīng)實(shí)現(xiàn)面的存儲(chǔ)了,但是面渲染遇到一個(gè)游戲渲染引擎常見(jiàn)的問(wèn)題,就是透明物體的渲染順序問(wèn)題。
高維體在3維中的投影中,那些四邊形面經(jīng)常是互相嵌入的,所以很難做到很好的半透明效果,除非對(duì)每個(gè)面的每個(gè)像素級(jí)z緩沖排序,這個(gè)估計(jì)會(huì)很慢....并且...目前沒(méi)有編過(guò)shader,不會(huì)具體操作。  回復(fù)  更多評(píng)論
  
# re: 一個(gè)想法,實(shí)現(xiàn)n維超級(jí)立方體!!!初步成功!!!(第二章) 2009-08-03 20:24 mybios
@陳昱(CY)
期待觀摩大作  回復(fù)  更多評(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>
              欧美永久精品| 中日韩午夜理伦电影免费| 久久国产欧美精品| 欧美亚洲免费在线| 黑人极品videos精品欧美裸| 久久人91精品久久久久久不卡| 久久视频一区| 亚洲网站在线播放| 亚洲欧美综合国产精品一区| 激情成人亚洲| 亚洲精品资源| 国产亚洲成av人在线观看导航| 欧美激情第3页| 国产精品二区影院| 美女福利精品视频| 欧美日韩免费在线视频| 久久激情久久| 欧美激情精品久久久六区热门| 亚洲欧美区自拍先锋| 久久久久9999亚洲精品| 一区二区三区精品视频在线观看| 亚洲一区二区精品| 91久久精品国产91久久性色| 亚洲视频导航| 亚洲精品九九| 久久国产精品电影| 在线亚洲自拍| 美日韩精品免费| 欧美一进一出视频| 欧美久久成人| 美女脱光内衣内裤视频久久影院 | 一色屋精品亚洲香蕉网站| 亚洲精品国产系列| 国产偷自视频区视频一区二区| 亚洲电影观看| 韩国一区二区在线观看| 一本色道久久88综合亚洲精品ⅰ| 激情亚洲一区二区三区四区| 在线亚洲精品| 99这里有精品| 欧美激情中文字幕在线| 久久亚洲春色中文字幕| 国产精品一卡| 亚洲图中文字幕| 亚洲视频综合| 欧美日韩国产精品一区二区亚洲| 久热综合在线亚洲精品| 国产日韩欧美日韩| 亚洲欧美一区二区激情| 亚洲女女做受ⅹxx高潮| 欧美极品在线视频| 亚洲国产影院| 亚洲伦理在线| 欧美精品午夜视频| 亚洲国产精品久久久久婷婷884| 国产一区二区三区在线观看免费| 亚洲无限av看| 性色av一区二区三区在线观看| 欧美日韩性生活视频| 亚洲人成高清| 夜夜嗨av一区二区三区四区 | 欧美日韩国产在线播放| 亚洲精品久久久久久下一站 | 亚洲午夜激情免费视频| 亚洲一区视频在线| 国产精品亚洲综合色区韩国| 亚洲一区影院| 久久久久久9| 亚洲二区三区四区| 欧美激情综合色| 99在线热播精品免费99热| 亚洲无线观看| 国产日韩在线一区| 久久久999精品视频| 欧美成人在线网站| 99精品久久久| 国产乱人伦精品一区二区| 欧美一区二区日韩一区二区| 久久女同互慰一区二区三区| 亚洲国产精品一区二区三区| 欧美jjzz| 亚洲综合精品一区二区| 欧美在线视频二区| 亚洲黄色免费| 欧美亚男人的天堂| 欧美一区二区三区久久精品茉莉花 | 欧美激情综合色综合啪啪| av成人毛片| 久久亚洲一区二区三区四区| 亚洲福利视频网| 国产精品国产| 久久全球大尺度高清视频| 亚洲精品日韩综合观看成人91| 午夜免费日韩视频| 亚洲国产一区在线| 国产精品麻豆成人av电影艾秋| 久久精品国亚洲| 99综合视频| 欧美国产日产韩国视频| 亚洲综合二区| 亚洲黄色在线视频| 国产欧美精品一区| 欧美国产日本高清在线| 午夜精品久久久久久久99热浪潮| 你懂的网址国产 欧美| 亚洲一区日本| 日韩午夜在线电影| 激情五月婷婷综合| 国产精品每日更新| 欧美岛国激情| 久久久免费精品视频| 亚洲深夜福利视频| 亚洲欧洲一区| 免费不卡中文字幕视频| 欧美在线中文字幕| 亚洲先锋成人| 亚洲理论在线| 亚洲电影免费在线观看| 国产麻豆综合| 欧美三级在线视频| 欧美激情免费在线| 久久综合导航| 久久全国免费视频| 久久riav二区三区| 午夜精品理论片| 亚洲午夜在线观看视频在线| 亚洲黄色精品| 欧美国产视频在线| 欧美成人黄色小视频| 久久久久在线| 久久米奇亚洲| 久久精品噜噜噜成人av农村| 亚洲女同精品视频| 亚洲专区免费| 亚洲专区一区| 午夜精品久久久久久久久久久久| 亚洲午夜电影在线观看| 亚洲午夜激情| 亚洲欧美日本伦理| 午夜久久美女| 久久激情一区| 老司机午夜精品视频在线观看| 久久久噜噜噜久噜久久| 久久免费少妇高潮久久精品99| 久久精品亚洲一区| 久久蜜桃精品| 欧美二区不卡| 亚洲精品1区| 日韩视频在线播放| 亚洲性xxxx| 欧美一区二区三区精品| 久久理论片午夜琪琪电影网| 久久网站热最新地址| 欧美99久久| 欧美视频中文字幕在线| 国产精品区一区| 精品1区2区| 亚洲精品国久久99热| 亚洲天天影视| 久久精品日韩一区二区三区| 欧美aaaaaaaa牛牛影院| 亚洲精品国产精品乱码不99按摩| 夜夜爽夜夜爽精品视频| 午夜精品在线| 女女同性精品视频| 国产精品久久久久毛片软件| 国产日韩亚洲欧美精品| 亚洲国产高清在线观看视频| 亚洲私人影院在线观看| 久久久不卡网国产精品一区| 亚洲电影有码| 亚洲欧美日韩综合一区| 男男成人高潮片免费网站| 欧美性猛交xxxx乱大交退制版 | 欧美激情二区三区| 国产精品五区| 亚洲精品在线视频观看| 性视频1819p久久| 亚洲国产精品久久久久秋霞不卡| 亚洲午夜激情免费视频| 欧美a级一区| 国产亚洲一区在线播放| 99视频+国产日韩欧美| 久久九九99| 日韩一区二区精品在线观看| 久久riav二区三区| 欧美日韩免费观看一区=区三区| 国产手机视频精品| 亚洲色诱最新| 欧美不卡激情三级在线观看| 99精品欧美一区二区蜜桃免费| 久久嫩草精品久久久精品| 国产精品一卡二卡| 亚洲国产一区二区三区在线播| 午夜激情久久久| 亚洲第一区在线| 久久久久久一区| 国产日韩精品一区观看| 亚洲自拍偷拍福利| 亚洲精品免费看|