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

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

?? tcston2.cpp

?? 并行TIN生成算法, 基于DeWall算法理論實現(xiàn)
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
// TcsTon2.cpp
// 鄧雪清 2008/11/17

#include <math.h>
#include <assert.h>
#include "TcsTon2.h"

///////////////////////////////////////////////////////////////////
// 公共函數(shù)

// 散列函數(shù)
TCS_S32 SIDE_EQLH(void *s1, void *s2)
{
	TIN_S *m1 = (TIN_S *)s1;
	TIN_S *m2 = (TIN_S *)s2;
	return (m1->sid[0] == m2->sid[0] && m1->eid[0] == m2->eid[0]);
}

TCS_U32 SIDE_HASH(void *s1)
{
	TIN_S *m1 = (TIN_S *)s1;
	return (EQHASH(m1->sid[0]) ^ EQHASH(m1->eid[0]));
}

// 計算坐標邊界
inline TCS_V00 ComBnd2(TIN_G *G, TCS_F64 *P, TCS_S32 N)
{
	G->bnd[0] = G->bnd[2] = P[0];	P++;	// x
	G->bnd[1] = G->bnd[3] = P[0];	P++;	// y
	for (TCS_S32 i = 1; i < N; i++)
	{
		if		(G->bnd[0] > P[0])	G->bnd[0] = P[0];
		else if (G->bnd[2] < P[0])	G->bnd[2] = P[0];
		P++;
		if		(G->bnd[1] > P[0])	G->bnd[1] = P[0];
		else if (G->bnd[3] < P[0])	G->bnd[3] = P[0];
		P++;
	}
}

// 計算網(wǎng)格矩陣
inline TCS_V00 ComSan2(TIN_G *G, TCS_S32 N, TCS_S32 av)
{
	TCS_S32 *num = G->num;
	TCS_F64  dup = G->dup;
	TCS_F64 *bnd = G->bnd;
	TCS_F64 *spn = G->spn;

	TCS_F64 sum = (bnd[2] - bnd[0]) * (bnd[3] - bnd[1]);
	if (sum == 0.0)	// 至少存在1維共線
	{	num[0] = 0;	return;	}

	sum = sum / N * av;
	spn[0] = spn[1] = sqrt(sum);
	if (dup >= spn[0])	// 便于處理重合點
		spn[0] = spn[1] = 2 * dup;
	
	num[0] = TCS_S32((bnd[2] - bnd[0]) / spn[0]) + 1;
	num[1] = TCS_S32((bnd[3] - bnd[1]) / spn[1]) + 1;
	bnd[2] = bnd[0] + num[0] * spn[0];
	bnd[3] = bnd[1] + num[1] * spn[1];
}

// 計算網(wǎng)格單元
inline TCS_S32 ComIdx2(TIN_G *G, TCS_F64 *p)
{
	TCS_S32 c = TCS_S32((p[0] - G->bnd[0]) / G->spn[0]);
	TCS_S32 r = TCS_S32((p[1] - G->bnd[1]) / G->spn[1]);

	return (r * G->num[0] + c);
}

inline TCS_V00 ComIdx2(TIN_G *G, TCS_F64 *p, TCS_S32 *o)
{
	o[0] = TCS_S32((p[0] - G->bnd[0]) / G->spn[0]);
	o[1] = TCS_S32((p[1] - G->bnd[1]) / G->spn[1]);
}

// 單元增加點號
inline TCS_V00 AddPid(TIN_C *C, TCS_S32 pid)
{
	if (C->sum < C->num)
	{
		C->pid[C->sum] = pid;
		C->sum++;	C->ocn++;
	}
	else
	{
		TCS_S32  num = C->sum + 4;
		TCS_S32 *buf = new TCS_S32[num];
		::memcpy(buf, C->pid, sizeof(TCS_S32) * C->sum);

		buf[C->sum] = pid;	C->sum++;	C->ocn++;
		C->num = num;	delete []C->pid;	C->pid = buf;
	}
}

// 單元移去點號
// 基于位置
inline TCS_V00 RmxPid(TIN_C *C, TCS_S32 pos)
{
	C->ocn--;	C->sum--;
	C->pid[pos] = C->pid[C->ocn];
}
// 基于點號
inline TCS_V00 RmvPid(TIN_C *C, TCS_S32 pid)
{
	TCS_S32 *P = C->pid, ocn = C->ocn;
	for (TCS_S32 n = 0; n < ocn; n++)
	{
		if (P[n] == pid)
		{
			ocn--;	P[n] = P[ocn];	P[ocn] = pid;
			C->ocn = ocn;	return;
		}
	}
}

// 建立網(wǎng)格索引
inline TCS_V00 CnsIdx2(TIN_G *G, TCS_F64 *P, TCS_S32 N, TCS_S32 av)
{
	G->idx = 0;
	ComSan2(G, N, av);

	TCS_S32 n = G->num[0];
	if (n == 0)	return;

	n *= G->num[1];
	G->idx = new TIN_C[n];
	if (!G->idx)	return;
	::memset(G->idx, 0, sizeof(TIN_C) * n);

	for (TCS_S32 k, i = 0; i < N; i++)
	{
		k = ComIdx2(G, P); P += 2;
		AddPid(G->idx + k, i);
	}
}

// 計算外接圓心
inline TCS_V00 ComCen2(TCS_F64 *p1, TCS_F64 *p2, TCS_F64 *p3, TCS_F64 *ce)
{
	// 11(+|-), 12(*), 2(/)
	TCS_F64 dx21 = p2[0] - p1[0];
	TCS_F64 dy21 = p2[1] - p1[1];
	TCS_F64 xy21 = dx21 * dx21 + dy21 * dy21;

	TCS_F64 dx31 = p3[0] - p1[0];
	TCS_F64 dy31 = p3[1] - p1[1];
	TCS_F64 xy31 = dx31 * dx31 + dy31 * dy31;

	TCS_F64 top1 =   dy21 * xy31 - dy31 * xy21;
	TCS_F64 top2 = - dx21 * xy31 + dx31 * xy21;
	TCS_F64 deno =   dy21 * dx31 - dy31 * dx21;

	ce[0] = p1[0] + 0.5 * top1 / deno;
	ce[1] = p1[1] + 0.5 * top2 / deno;
}

// 判斷是否共線
// 要求點互不重合
inline TCS_S32 IsLine2(TCS_F64 *p1, TCS_F64 *p2, TCS_F64 *p3)
{
	// 快速精確處理p2 == p3問題
	if (p2 == p3)	// 如果沒有該步, 由于計算誤差可能不能精確處理p2 == p3問題
		return 1;
	// 利用三角形面積是否等于0判斷
	// (p1[0] * (p2[1] - p3[1]) + p2[0] * (p3[1] - p1[1]) + p3[0] * (p1[1] - p2[1]) : 3(*), 5(+|-)
	// (p1[0] - p2[0]) * (p1[1] - p3[1]) - (p1[0] - p3[0]) * (p1[1] - p2[1])		: 2(*), 5(-)
	// 下面可以精確處理p1 == p3問題
	if ((p1[0] - p2[0]) * (p1[1] - p3[1]) - (p1[0] - p3[0]) * (p1[1] - p2[1]) == 0.0)
		return 1;
	else
		return 0;
}

// 計算同側符號
// 要求點互不重合
inline TCS_S32 IsSide2(TCS_F64 *p1, TCS_F64 *p2, TCS_F64 *p3)
{
	// 快速精確處理p2 == p3問題
	if (p2 == p3)	// 如果沒有該步, 由于計算誤差可能不能精確處理p2 == p3問題
		return 0;
	// 根據(jù)三點共線條件設計
	// 三點共線條件: (p1[0] - p2[0]) * (p1[1] - p3[1]) - (p1[0] - p3[0]) * (p1[1] - p2[1]) = 0
	TCS_F64 side = (p1[0] - p2[0]) * (p1[1] - p3[1]) - (p1[0] - p3[0]) * (p1[1] - p2[1]);
	if		(side > 0)
		return  1;
	else if (side < 0)
		return -1;

	return 0;
}

// 歐拉距離平方
inline TCS_F64 EuLen2D(TCS_F64 *p1, TCS_F64 *p2)
{
	TCS_F64 dx = p1[0] - p2[0];
	TCS_F64 dy = p1[1] - p2[1];
	return (dx * dx + dy * dy);
}

// 共圓點弧位排序
inline TCS_V00 ArcPos2(CTcsBL *L, TCS_F64 *P, TCS_F64 *ce, TCS_F64 d2)
{
	d2 = sqrt(d2);
	TCS_F64 dx, dy, *pt;
	TCS_S32 n = L->GetSize();
	TCS_F64 *s = new TCS_F64[n];

	// 計算與圓心坐標差
	TCS_S32 m, k, i = 0;
	TIN_X *X = (TIN_X*)L->GetHead();
	while (X)
	{
		pt = P + 2 * X->pid;
		dx = pt[0] - ce[0];	dy = pt[1] - ce[1];
		// 第一象限
		if		(dx >= 0 && dy >= 0)	s[i] = dx / d2;
		// 第二象限
		else if (dx >= 0 && dy <  0)	s[i] = 1 - dy / d2;
		// 第三象限
		else if (dx <  0 && dy <= 0)	s[i] = 2 - dx / d2;
		// 第四象限
		else							s[i] = 3 - dy / d2;
		
		i++;	X = (TIN_X*)L->GetNext();
	}
	// 排序
	m = n - 1;
	TCS_V00 *I, *K;
	for (i = 0; i < m; i++)
	{
		for (k = i + 1; k < n; k++)
		{
			if (s[i] > s[k])
			{
				// 交換
				dx = s[i];	s[i] = s[k];	s[k] = dx;
				I = L->GetAt(i);	K = L->GetAt(k);
				L->SetAt(k, I);	L->SetAt(i, K);
			}
		}
	}

	delete []s;
}

// 賦值邊
inline TCS_V00 IniSide(TIN_S *S, TCS_S32 sip, TCS_S32 eip, TCS_S32 sic, TCS_S32 eic, TCS_S32 pid)
{
	if (sip > eip)
	{
		S->sid[0] = sip;	S->eid[0] = eip;	S->sid[1] = sic;	S->eid[1] = eic;
	}
	else
	{
		S->sid[0] = eip;	S->eid[0] = sip;	S->sid[1] = eic;	S->eid[1] = sic;
	}
	S->pid[0] = pid;
}
// 插入邊
inline TCS_S32 InsSide(CTcsHL *ASL, CTcsHL *BSL, TIN_G *G, TIN_S *S)
{
	TIN_S *T = (TIN_S*)(ASL->DetData(S));
	if (T)	// 已存在
	{
		assert(T->sid[0] == S->sid[0] && T->eid[0] == S->eid[0]);
		// 減少計數(shù)器
		G->pid[S->sid[0]]--;	G->pid[S->eid[0]]--;
		T->pid[1] = S->pid[0];
		// 收集邊對象
		BSL->PutData(T, T);
		return 0;
	}

	// 增加計數(shù)器
	G->pid[S->sid[0]]++;	G->pid[S->eid[0]]++;
	// 增加邊對象
	ASL->PutData(S, S);

	return 1;
}

// 構造三角形:最大最小角原則
inline TCS_V00 ConTen2(TIN_G *G, TCS_F64 *P, TCS_S32 sid[2], TCS_S32 eid[2], CTcsBL *APL, CTcsBL *ATL, CTcsHL *ASL, CTcsHL *BSL)
{
	TIN_T *T;	TIN_S *S;
	TIN_X *X1 = (TIN_X*)APL->RemoveHead();
	TIN_X *X2 = (TIN_X*)APL->RemoveHead();
	if (!X2) // 只有1點
	{
		// 增加三角形
		T = new TIN_T;
		T->pid[0] = sid[0], T->pid[1] = eid[0], T->pid[2] = X1->pid;
		ATL->AddTail(T);
		// 檢測活動邊
		S = new TIN_S;
		IniSide(S, sid[0], eid[0], sid[1], eid[1], X1->pid);
		if (!InsSide(ASL, BSL, G, S))
			delete S;
		S = new TIN_S;
		IniSide(S, sid[0], X1->pid, sid[1], X1->cid, eid[0]);
		if (!InsSide(ASL, BSL, G, S))
			delete S;
		S = new TIN_S;
		IniSide(S, eid[0], X1->pid, eid[1], X1->cid, sid[0]);
		if (!InsSide(ASL, BSL, G, S))
			delete S;
		// 刪除歸零點
		if (G->pid[sid[0]] == 0)	{	RmvPid(G->idx + sid[1], sid[0]);	G->vpn++;	}
		if (G->pid[eid[0]] == 0)	{	RmvPid(G->idx + eid[1], eid[0]);	G->vpn++;	}
		if (G->pid[X1->pid] == 0)	{	RmvPid(G->idx + X1->cid, X1->pid);	G->vpn++;	}

		delete X1;
		return;
	}

	// 首先調(diào)整sid與eid的順序
	TCS_F64 *sp = P + 2 * sid[0];
	TCS_F64 *ep = P + 2 * eid[0];
	TCS_F64 *p1 = P + 2 * X1->pid;
	TCS_F64 *p2 = P + 2 * X2->pid;
	if (IsSide2(sp, p1, ep) != IsSide2(sp, p1, p2))
	{
		// 不同側, 交換sid與eid
		TCS_S32 pi = sid[0];	sid[0] = eid[0];	eid[0] = pi;
		TCS_S32 ci = sid[1];	sid[1] = eid[1];	eid[1] = ci;
		sp = P + 2 * sid[0];	ep = P + 2 * eid[0];
	}

	// 循環(huán)構網(wǎng)
	while (X2)
	{
		// ep---------sp
		//
		//            p1
		//
		//      p2
		// 暫不局部優(yōu)化
		// 增加三角形
		T = new TIN_T;
		T->pid[0] = sid[0], T->pid[1] = eid[0], T->pid[2] = X1->pid;
		ATL->AddTail(T);
		// 檢測活動邊
		S = new TIN_S;
		IniSide(S, sid[0], eid[0], sid[1], eid[1], X1->pid);
		if (!InsSide(ASL, BSL, G, S))
			delete S;
		S = new TIN_S;
		IniSide(S, sid[0], X1->pid, sid[1], X1->cid, eid[0]);
		if (!InsSide(ASL, BSL, G, S))
			delete S;
		// 增加三角形
		T = new TIN_T;
		T->pid[0] = eid[0], T->pid[1] = X1->pid, T->pid[2] = X2->pid;
		ATL->AddTail(T);
		// 檢測活動邊
		S = new TIN_S;
		IniSide(S, X1->pid, X2->pid, X1->cid, X2->cid, eid[0]);
		if (!InsSide(ASL, BSL, G, S))
			delete S;
		S = new TIN_S;
		IniSide(S, X2->pid, eid[0], X2->cid, eid[1], X1->pid);
		if (!InsSide(ASL, BSL, G, S))
			delete S;
		// 搜集公共邊
		S = new TIN_S;
		IniSide(S, X1->pid, eid[0], X1->cid, eid[1], sid[0]);
		S->pid[1] = X2->pid;	BSL->PutData(S, S);
		// 刪除歸零點
		if (G->pid[sid[0]] == 0)	{	RmvPid(G->idx + sid[1], sid[0]);	G->vpn++;	}
		if (G->pid[eid[0]] == 0)	{	RmvPid(G->idx + eid[1], eid[0]);	G->vpn++;	}
		if (G->pid[X1->pid] == 0)	{	RmvPid(G->idx + X1->cid, X1->pid);	G->vpn++;	}
		if (G->pid[X2->pid] == 0)	{	RmvPid(G->idx + X2->cid, X2->pid);	G->vpn++;	}
		// X2變sid
		sid[0] = X2->pid, sid[1] = X2->cid;

		delete X1;	delete X2;
		X1 = (TIN_X*)APL->RemoveHead();
		X2 = (TIN_X*)APL->RemoveHead();
	}
	// 最多剩1點
	if (X1)
	{
		// 增加三角形
		T = new TIN_T;
		T->pid[0] = sid[0], T->pid[1] = eid[0], T->pid[2] = X1->pid;
		ATL->AddTail(T);
		// 檢測活動邊
		S = new TIN_S;
		IniSide(S, sid[0], eid[0], sid[1], eid[1], X1->pid);
		if (!InsSide(ASL, BSL, G, S))
			delete S;
		S = new TIN_S;
		IniSide(S, sid[0], X1->pid, sid[1], X1->cid, eid[0]);
		if (!InsSide(ASL, BSL, G, S))
			delete S;
		S = new TIN_S;
		IniSide(S, eid[0], X1->pid, eid[1], X1->cid, sid[0]);
		if (!InsSide(ASL, BSL, G, S))
			delete S;
		// 刪除歸零點
		if (G->pid[sid[0]] == 0)	{	RmvPid(G->idx + sid[1], sid[0]);	G->vpn++;	}
		if (G->pid[eid[0]] == 0)	{	RmvPid(G->idx + eid[1], eid[0]);	G->vpn++;	}
		if (G->pid[X1->pid] == 0)	{	RmvPid(G->idx + X1->cid, X1->pid);	G->vpn++;	}

		delete X1;
	}
}
// 計算搜索邊界
inline TCS_V00 ComBnd2(TIN_G *G, TCS_F64 *p, TCS_F64 d, TCS_S32 &c1, TCS_S32 &c2, TCS_S32 &r1, TCS_S32 &r2)
{
	TCS_F64 *bnd = G->bnd, *spn = G->spn;
	TCS_S32 co = G->num[0], ro = G->num[1];
	// 計算向左擴展量
	c1 = TCS_S32((p[0] - d - bnd[0]) / spn[0]);	if (c1 < 0)			c1 = 0;
	// 計算向右擴展量
	c2 = TCS_S32((p[0] + d - bnd[0]) / spn[0]);	if (c2 > co - 1)	c2 = co - 1;
	// 計算向下擴展量
	r1 = TCS_S32((p[1] - d - bnd[1]) / spn[1]);	if (r1 < 0)			r1 = 0;
	// 計算向上擴展量
	r2 = TCS_S32((p[1] + d - bnd[1]) / spn[1]);	if (r2 > ro - 1)	r2 = ro - 1;
}
// 空圓檢測:有異側判斷
// 2:包含點;1:有緊縮;0:無緊縮
inline TCS_S32 RevEmp2(TIN_G *G, TCS_F64 *P, TCS_F64 *p1, TCS_F64 *p2, TCS_S32 on, TCS_F64 **p3, TCS_F64 *ce, TCS_F64 &d2, TCS_S32 ci, CTcsBL *L)
{
	TCS_S32 n, pi;
	TCS_F64 *p4, dn;
	TIN_C *C = G->idx + ci;

	// 判斷是否包含已閉合點
	for (n = C->ocn; n < C->sum; n++)
	{
		pi = C->pid[n];
		p4 = P + 2 * pi;
		// 異側判斷
		if (on == IsSide2(p1, p2, p4))
		{
			dn = EuLen2D(p4, ce);
			// 精確處理浮點數(shù)相等問題
			if (dn < d2)
			{
				TIN_X *X = (TIN_X*)L->RemoveHead();
				while (X)
				{
					delete X;
					X = (TIN_X*)L->RemoveHead();
				}

				return 2;
			}
		}
	}

	// 判斷是否包含共圓點或緊縮
	for (n = 0; n < C->ocn; n++)
	{
		pi = C->pid[n];
		p4 = P + 2 * pi;
		// 異側判斷
		// 下面可以精確處理p1 == p4、p2 == p4和共線問題
		if (on == IsSide2(p1, p2, p4))
		{
			dn = EuLen2D(p4, ce);
			// 精確處理浮點數(shù)相等問題
			if		(dn == d2)	// 共圓
			{
				if (p4 == *p3)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色哟哟一区二区| 亚洲欧洲精品一区二区三区| 国产欧美日韩中文久久| 亚洲乱码国产乱码精品精可以看 | eeuss鲁一区二区三区| 69堂精品视频| 亚洲精品中文在线| 成人中文字幕在线| 精品国产伦一区二区三区免费| 一区二区三区在线免费| 成人av一区二区三区| 国产亚洲一二三区| 蜜桃一区二区三区在线| 欧美亚洲高清一区| 中文字幕一区二区三区在线不卡| 韩国一区二区在线观看| 日韩欧美激情四射| 久久精品久久精品| 欧美mv日韩mv| 久久99久久99精品免视看婷婷 | 久久精品99久久久| 欧美疯狂做受xxxx富婆| 亚洲r级在线视频| 91官网在线免费观看| 自拍偷拍欧美精品| 91麻豆.com| 亚洲欧美韩国综合色| 91丝袜美腿高跟国产极品老师| 国产精品美女一区二区三区| 成人av在线影院| 亚洲欧洲国产日本综合| 色综合激情五月| 亚洲国产中文字幕在线视频综合| 欧洲一区二区三区在线| 一区二区三区加勒比av| 欧美日韩一二三区| 日韩不卡免费视频| 精品国产一区久久| 成人网男人的天堂| 亚洲欧美日韩国产综合在线| 欧美影院午夜播放| 日本在线不卡一区| 精品免费国产二区三区| 国产精品白丝jk黑袜喷水| 国产精品看片你懂得 | 经典三级在线一区| 国产亚洲综合色| 91蜜桃网址入口| 午夜精品福利视频网站 | 欧美色精品天天在线观看视频| 亚洲最大成人网4388xx| 欧美日韩专区在线| 韩国女主播成人在线观看| 中日韩免费视频中文字幕| 色一区在线观看| 玖玖九九国产精品| 亚洲色图20p| 制服丝袜亚洲播放| 成人av电影在线观看| 亚洲国产精品久久久男人的天堂| 欧美一级二级三级乱码| 国产成人在线电影| 亚洲最色的网站| 久久综合狠狠综合久久综合88| av电影在线不卡| 丝袜亚洲另类欧美综合| 国产天堂亚洲国产碰碰| 色国产精品一区在线观看| 免费观看日韩av| 亚洲免费在线电影| 欧美xxxxx牲另类人与| 91亚洲精华国产精华精华液| 蜜桃久久精品一区二区| 亚洲欧美在线观看| 欧美tk—视频vk| 欧美日韩一区二区三区四区五区 | 2021国产精品久久精品| 91在线视频播放| 精品一区二区免费| 亚洲成人精品在线观看| 国产免费观看久久| 日韩精品一区二区三区中文不卡 | 成人精品免费视频| 久久99国产乱子伦精品免费| 亚洲精品美腿丝袜| 国产嫩草影院久久久久| 日韩午夜精品视频| 欧美日韩国产片| 日本韩国一区二区三区视频| 国产盗摄一区二区| 久久爱www久久做| 天堂久久久久va久久久久| 一区二区三区欧美日韩| 中文字幕精品一区二区精品绿巨人 | 麻豆免费看一区二区三区| 亚洲麻豆国产自偷在线| 国产精品污污网站在线观看| 亚洲精品在线免费播放| 欧美一级理论片| 欧美日韩免费高清一区色橹橹| 一本久道久久综合中文字幕| 99在线精品观看| 成人黄色a**站在线观看| 国产一区亚洲一区| 精久久久久久久久久久| 久久精品999| 韩国三级中文字幕hd久久精品| 麻豆精品一区二区三区| 美女高潮久久久| 捆绑调教美女网站视频一区| 日韩电影在线一区| 青青青爽久久午夜综合久久午夜| 亚洲成av人片观看| 天天操天天色综合| 日韩福利视频网| 久久99九九99精品| 日韩国产高清在线| 男人的天堂久久精品| 蜜臀av一区二区在线观看| 另类小说欧美激情| 国产做a爰片久久毛片| 国产精品99久久久久久似苏梦涵| 国产麻豆精品在线观看| 成人深夜在线观看| 色综合天天天天做夜夜夜夜做| 91电影在线观看| 欧美一区二区三区视频在线| 日韩欧美在线一区二区三区| 国产性色一区二区| 国产精品免费人成网站| 亚洲综合一区二区精品导航| 天堂久久一区二区三区| 极品瑜伽女神91| 成人高清视频在线| 欧美日韩国产精选| 精品国产欧美一区二区| 国产精品久久一级| 亚洲高清免费一级二级三级| 秋霞影院一区二区| 国产.欧美.日韩| 一本色道久久加勒比精品| 这里只有精品电影| 国产欧美日产一区| 亚洲国产乱码最新视频| 韩国三级电影一区二区| 色猫猫国产区一区二在线视频| 欧美一区日韩一区| 中文无字幕一区二区三区| 一区二区三区四区在线免费观看| 久久国产婷婷国产香蕉| 91亚洲精品乱码久久久久久蜜桃| 制服丝袜成人动漫| 国产精品久久午夜夜伦鲁鲁| 亚洲第一会所有码转帖| 国产suv精品一区二区三区| 在线观看日韩精品| 日本一区二区三级电影在线观看| 亚洲成人av一区| 白白色 亚洲乱淫| 日韩精品一区二区三区中文不卡 | 国产精品嫩草影院av蜜臀| 天天av天天翘天天综合网 | 成人av午夜电影| 日韩欧美成人激情| 亚洲伊人伊色伊影伊综合网| 国产精品一级在线| 在线播放视频一区| 亚洲视频 欧洲视频| 国产精品一区二区三区网站| 欧美欧美欧美欧美首页| 亚洲欧洲成人av每日更新| 国产美女精品在线| 91精品国产品国语在线不卡| 亚洲一区二区三区四区在线观看 | 国产在线看一区| 欧美日韩精品一区二区三区 | 一本久道中文字幕精品亚洲嫩| www国产成人免费观看视频 深夜成人网| 亚洲一区在线播放| 色偷偷成人一区二区三区91| 中文字幕免费不卡| 国产91精品精华液一区二区三区 | 蜜臀久久99精品久久久画质超高清 | 久久综合九色综合欧美98| 天天综合日日夜夜精品| 91黄色小视频| 亚洲婷婷综合久久一本伊一区| 黄一区二区三区| 欧美大胆人体bbbb| 免费观看日韩av| 欧美大白屁股肥臀xxxxxx| 日韩国产一二三区| 91精品一区二区三区在线观看| 亚洲一区欧美一区| 欧美三区在线视频| 亚洲电影你懂得| 精品视频一区 二区 三区| 亚洲国产日韩精品| 国产日韩欧美精品电影三级在线| 激情综合网天天干|