日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

(转)计算几何模板 - kuangbin

發布時間:2024/4/11 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (转)计算几何模板 - kuangbin 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉自:https://kuangbin.github.io/2019/04/28/20190428/#more

二維幾何

// `計算幾何模板` const double eps = 1e-8; const double pi = acos(-1.0); const int maxp = 1010; //`Compares a double to zero` int sgn(double x){if(fabs(x) < eps)return 0;if(x < 0)return -1;else return 1; } //square of a double inline double sqr(double x){return x*x;} /** Point* Point() - Empty constructor* Point(double _x,double _y) - constructor* input() - double input* output() - %.2f output* operator == - compares x and y* operator < - compares first by x, then by y* operator - - return new Point after subtracting curresponging x and y* operator ^ - cross product of 2d points* operator * - dot product* len() - gives length from origin* len2() - gives square of length from origin* distance(Point p) - gives distance from p* operator + Point b - returns new Point after adding curresponging x and y* operator * double k - returns new Point after multiplieing x and y by k* operator / double k - returns new Point after divideing x and y by k* rad(Point a,Point b)- returns the angle of Point a and Point b from this Point* trunc(double r) - return Point that if truncated the distance from center to r* rotleft() - returns 90 degree ccw rotated point* rotright() - returns 90 degree cw rotated point* rotate(Point p,double angle) - returns Point after rotateing the Point centering at p by angle radian ccw*/ struct Point{double x,y;Point(){}Point(double _x,double _y){x = _x;y = _y;}void input(){scanf("%lf%lf",&x,&y);}void output(){printf("%.2f %.2f\n",x,y);}bool operator == (Point b)const{return sgn(x-b.x) == 0 && sgn(y-b.y) == 0;}bool operator < (Point b)const{return sgn(x-b.x)== 0?sgn(y-b.y)<0:x<b.x;}Point operator -(const Point &b)const{return Point(x-b.x,y-b.y);}//叉積double operator ^(const Point &b)const{return x*b.y - y*b.x;}//點積double operator *(const Point &b)const{return x*b.x + y*b.y;}//返回長度double len(){return hypot(x,y);//庫函數}//返回長度的平方double len2(){return x*x + y*y;}//返回兩點的距離double distance(Point p){return hypot(x-p.x,y-p.y);}Point operator +(const Point &b)const{return Point(x+b.x,y+b.y);}Point operator *(const double &k)const{return Point(x*k,y*k);}Point operator /(const double &k)const{return Point(x/k,y/k);}//`計算pa 和 pb 的夾角`//`就是求這個點看a,b 所成的夾角`//`測試 LightOJ1203`double rad(Point a,Point b){Point p = *this;return fabs(atan2( fabs((a-p)^(b-p)),(a-p)*(b-p) ));}//`化為長度為r的向量`Point trunc(double r){double l = len();if(!sgn(l))return *this;r /= l;return Point(x*r,y*r);}//`逆時針旋轉90度`Point rotleft(){return Point(-y,x);}//`順時針旋轉90度`Point rotright(){return Point(y,-x);}//`繞著p點逆時針旋轉angle`Point rotate(Point p,double angle){Point v = (*this) - p;double c = cos(angle), s = sin(angle);return Point(p.x + v.x*c - v.y*s,p.y + v.x*s + v.y*c);} }; /** Stores two points* Line() - Empty constructor* Line(Point _s,Point _e) - Line through _s and _e* operator == - checks if two points are same* Line(Point p,double angle) - one end p , another end at angle degree* Line(double a,double b,double c) - Line of equation ax + by + c = 0* input() - inputs s and e* adjust() - orders in such a way that s < e* length() - distance of se* angle() - return 0 <= angle < pi* relation(Point p) - 3 if point is on line* 1 if point on the left of line* 2 if point on the right of line* pointonseg(double p) - return true if point on segment* parallel(Line v) - return true if they are parallel* segcrossseg(Line v) - returns 0 if does not intersect* returns 1 if non-standard intersection* returns 2 if intersects* linecrossseg(Line v) - line and seg* linecrossline(Line v) - 0 if parallel* 1 if coincides* 2 if intersects* crosspoint(Line v) - returns intersection point* dispointtoline(Point p) - distance from point p to the line* dispointtoseg(Point p) - distance from p to the segment* dissegtoseg(Line v) - distance of two segment* lineprog(Point p) - returns projected point p on se line* symmetrypoint(Point p) - returns reflection point of p over se**/ struct Line{Point s,e;Line(){}Line(Point _s,Point _e){s = _s;e = _e;}bool operator ==(Line v){return (s == v.s)&&(e == v.e);}//`根據一個點和傾斜角angle確定直線,0<=angle<pi`Line(Point p,double angle){s = p;if(sgn(angle-pi/2) == 0){e = (s + Point(0,1));}else{e = (s + Point(1,tan(angle)));}}//ax+by+c=0Line(double a,double b,double c){if(sgn(a) == 0){s = Point(0,-c/b);e = Point(1,-c/b);}else if(sgn(b) == 0){s = Point(-c/a,0);e = Point(-c/a,1);}else{s = Point(0,-c/b);e = Point(1,(-c-a)/b);}}void input(){s.input();e.input();}void adjust(){if(e < s)swap(s,e);}//求線段長度double length(){return s.distance(e);}//`返回直線傾斜角 0<=angle<pi`double angle(){double k = atan2(e.y-s.y,e.x-s.x);if(sgn(k) < 0)k += pi;if(sgn(k-pi) == 0)k -= pi;return k;}//`點和直線關系`//`1 在左側`//`2 在右側`//`3 在直線上`int relation(Point p){int c = sgn((p-s)^(e-s));if(c < 0)return 1;else if(c > 0)return 2;else return 3;}// 點在線段上的判斷bool pointonseg(Point p){return sgn((p-s)^(e-s)) == 0 && sgn((p-s)*(p-e)) <= 0;}//`兩向量平行(對應直線平行或重合)`bool parallel(Line v){return sgn((e-s)^(v.e-v.s)) == 0;}//`兩線段相交判斷`//`2 規范相交`//`1 非規范相交`//`0 不相交`int segcrossseg(Line v){int d1 = sgn((e-s)^(v.s-s));int d2 = sgn((e-s)^(v.e-s));int d3 = sgn((v.e-v.s)^(s-v.s));int d4 = sgn((v.e-v.s)^(e-v.s));if( (d1^d2)==-2 && (d3^d4)==-2 )return 2;return (d1==0 && sgn((v.s-s)*(v.s-e))<=0) ||(d2==0 && sgn((v.e-s)*(v.e-e))<=0) ||(d3==0 && sgn((s-v.s)*(s-v.e))<=0) ||(d4==0 && sgn((e-v.s)*(e-v.e))<=0);}//`直線和線段相交判斷`//`-*this line -v seg`//`2 規范相交`//`1 非規范相交`//`0 不相交`int linecrossseg(Line v){int d1 = sgn((e-s)^(v.s-s));int d2 = sgn((e-s)^(v.e-s));if((d1^d2)==-2) return 2;return (d1==0||d2==0);}//`兩直線關系`//`0 平行`//`1 重合`//`2 相交`int linecrossline(Line v){if((*this).parallel(v))return v.relation(s)==3;return 2;}//`求兩直線的交點`//`要保證兩直線不平行或重合`Point crosspoint(Line v){double a1 = (v.e-v.s)^(s-v.s);double a2 = (v.e-v.s)^(e-v.s);return Point((s.x*a2-e.x*a1)/(a2-a1),(s.y*a2-e.y*a1)/(a2-a1));}//點到直線的距離double dispointtoline(Point p){return fabs((p-s)^(e-s))/length();}//點到線段的距離double dispointtoseg(Point p){if(sgn((p-s)*(e-s))<0 || sgn((p-e)*(s-e))<0)return min(p.distance(s),p.distance(e));return dispointtoline(p);}//`返回線段到線段的距離`//`前提是兩線段不相交,相交距離就是0了`double dissegtoseg(Line v){return min(min(dispointtoseg(v.s),dispointtoseg(v.e)),min(v.dispointtoseg(s),v.dispointtoseg(e)));}//`返回點p在直線上的投影`Point lineprog(Point p){return s + ( ((e-s)*((e-s)*(p-s)))/((e-s).len2()) );}//`返回點p關于直線的對稱點`Point symmetrypoint(Point p){Point q = lineprog(p);return Point(2*q.x-p.x,2*q.y-p.y);} }; //圓 struct circle{Point p;//圓心double r;//半徑circle(){}circle(Point _p,double _r){p = _p;r = _r;}circle(double x,double y,double _r){p = Point(x,y);r = _r;}//`三角形的外接圓`//`需要Point的+ / rotate() 以及Line的crosspoint()`//`利用兩條邊的中垂線得到圓心`//`測試:UVA12304`circle(Point a,Point b,Point c){Line u = Line((a+b)/2,((a+b)/2)+((b-a).rotleft()));Line v = Line((b+c)/2,((b+c)/2)+((c-b).rotleft()));p = u.crosspoint(v);r = p.distance(a);}//`三角形的內切圓`//`參數bool t沒有作用,只是為了和上面外接圓函數區別`//`測試:UVA12304`circle(Point a,Point b,Point c,bool t){Line u,v;double m = atan2(b.y-a.y,b.x-a.x), n = atan2(c.y-a.y,c.x-a.x);u.s = a;u.e = u.s + Point(cos((n+m)/2),sin((n+m)/2));v.s = b;m = atan2(a.y-b.y,a.x-b.x) , n = atan2(c.y-b.y,c.x-b.x);v.e = v.s + Point(cos((n+m)/2),sin((n+m)/2));p = u.crosspoint(v);r = Line(a,b).dispointtoseg(p);}//輸入void input(){p.input();scanf("%lf",&r);}//輸出void output(){printf("%.2lf %.2lf %.2lf\n",p.x,p.y,r);}bool operator == (circle v){return (p==v.p) && sgn(r-v.r)==0;}bool operator < (circle v)const{return ((p<v.p)||((p==v.p)&&sgn(r-v.r)<0));}//面積double area(){return pi*r*r;}//周長double circumference(){return 2*pi*r;}//`點和圓的關系`//`0 圓外`//`1 圓上`//`2 圓內`int relation(Point b){double dst = b.distance(p);if(sgn(dst-r) < 0)return 2;else if(sgn(dst-r)==0)return 1;return 0;}//`線段和圓的關系`//`比較的是圓心到線段的距離和半徑的關系`int relationseg(Line v){double dst = v.dispointtoseg(p);if(sgn(dst-r) < 0)return 2;else if(sgn(dst-r) == 0)return 1;return 0;}//`直線和圓的關系`//`比較的是圓心到直線的距離和半徑的關系`int relationline(Line v){double dst = v.dispointtoline(p);if(sgn(dst-r) < 0)return 2;else if(sgn(dst-r) == 0)return 1;return 0;}//`兩圓的關系`//`5 相離`//`4 外切`//`3 相交`//`2 內切`//`1 內含`//`需要Point的distance`//`測試:UVA12304`int relationcircle(circle v){double d = p.distance(v.p);if(sgn(d-r-v.r) > 0)return 5;if(sgn(d-r-v.r) == 0)return 4;double l = fabs(r-v.r);if(sgn(d-r-v.r)<0 && sgn(d-l)>0)return 3;if(sgn(d-l)==0)return 2;if(sgn(d-l)<0)return 1;}//`求兩個圓的交點,返回0表示沒有交點,返回1是一個交點,2是兩個交點`//`需要relationcircle`//`測試:UVA12304`int pointcrosscircle(circle v,Point &p1,Point &p2){int rel = relationcircle(v);if(rel == 1 || rel == 5)return 0;double d = p.distance(v.p);double l = (d*d+r*r-v.r*v.r)/(2*d);double h = sqrt(r*r-l*l);Point tmp = p + (v.p-p).trunc(l);p1 = tmp + ((v.p-p).rotleft().trunc(h));p2 = tmp + ((v.p-p).rotright().trunc(h));if(rel == 2 || rel == 4)return 1;return 2;}//`求直線和圓的交點,返回交點個數`int pointcrossline(Line v,Point &p1,Point &p2){if(!(*this).relationline(v))return 0;Point a = v.lineprog(p);double d = v.dispointtoline(p);d = sqrt(r*r-d*d);if(sgn(d) == 0){p1 = a;p2 = a;return 1;}p1 = a + (v.e-v.s).trunc(d);p2 = a - (v.e-v.s).trunc(d);return 2;}//`得到過a,b兩點,半徑為r1的兩個圓`int gercircle(Point a,Point b,double r1,circle &c1,circle &c2){circle x(a,r1),y(b,r1);int t = x.pointcrosscircle(y,c1.p,c2.p);if(!t)return 0;c1.r = c2.r = r1;return t;}//`得到與直線u相切,過點q,半徑為r1的圓`//`測試:UVA12304`int getcircle(Line u,Point q,double r1,circle &c1,circle &c2){double dis = u.dispointtoline(q);if(sgn(dis-r1*2)>0)return 0;if(sgn(dis) == 0){c1.p = q + ((u.e-u.s).rotleft().trunc(r1));c2.p = q + ((u.e-u.s).rotright().trunc(r1));c1.r = c2.r = r1;return 2;}Line u1 = Line((u.s + (u.e-u.s).rotleft().trunc(r1)),(u.e + (u.e-u.s).rotleft().trunc(r1)));Line u2 = Line((u.s + (u.e-u.s).rotright().trunc(r1)),(u.e + (u.e-u.s).rotright().trunc(r1)));circle cc = circle(q,r1);Point p1,p2;if(!cc.pointcrossline(u1,p1,p2))cc.pointcrossline(u2,p1,p2);c1 = circle(p1,r1);if(p1 == p2){c2 = c1;return 1;}c2 = circle(p2,r1);return 2;}//`同時與直線u,v相切,半徑為r1的圓`//`測試:UVA12304`int getcircle(Line u,Line v,double r1,circle &c1,circle &c2,circle &c3,circle &c4){if(u.parallel(v))return 0;//兩直線平行Line u1 = Line(u.s + (u.e-u.s).rotleft().trunc(r1),u.e + (u.e-u.s).rotleft().trunc(r1));Line u2 = Line(u.s + (u.e-u.s).rotright().trunc(r1),u.e + (u.e-u.s).rotright().trunc(r1));Line v1 = Line(v.s + (v.e-v.s).rotleft().trunc(r1),v.e + (v.e-v.s).rotleft().trunc(r1));Line v2 = Line(v.s + (v.e-v.s).rotright().trunc(r1),v.e + (v.e-v.s).rotright().trunc(r1));c1.r = c2.r = c3.r = c4.r = r1;c1.p = u1.crosspoint(v1);c2.p = u1.crosspoint(v2);c3.p = u2.crosspoint(v1);c4.p = u2.crosspoint(v2);return 4;}//`同時與不相交圓cx,cy相切,半徑為r1的圓`//`測試:UVA12304`int getcircle(circle cx,circle cy,double r1,circle &c1,circle &c2){circle x(cx.p,r1+cx.r),y(cy.p,r1+cy.r);int t = x.pointcrosscircle(y,c1.p,c2.p);if(!t)return 0;c1.r = c2.r = r1;return t;}//`過一點作圓的切線(先判斷點和圓的關系)`//`測試:UVA12304`int tangentline(Point q,Line &u,Line &v){int x = relation(q);if(x == 2)return 0;if(x == 1){u = Line(q,q + (q-p).rotleft());v = u;return 1;}double d = p.distance(q);double l = r*r/d;double h = sqrt(r*r-l*l);u = Line(q,p + ((q-p).trunc(l) + (q-p).rotleft().trunc(h)));v = Line(q,p + ((q-p).trunc(l) + (q-p).rotright().trunc(h)));return 2;}//`求兩圓相交的面積`double areacircle(circle v){int rel = relationcircle(v);if(rel >= 4)return 0.0;if(rel <= 2)return min(area(),v.area());double d = p.distance(v.p);double hf = (r+v.r+d)/2.0;double ss = 2*sqrt(hf*(hf-r)*(hf-v.r)*(hf-d));double a1 = acos((r*r+d*d-v.r*v.r)/(2.0*r*d));a1 = a1*r*r;double a2 = acos((v.r*v.r+d*d-r*r)/(2.0*v.r*d));a2 = a2*v.r*v.r;return a1+a2-ss;}//`求兩圓相交的面積(精度更高)(需要long double)`double areacircle2(circle v){double a=hypot(p.x-v.p.x,p.y-v.p.y),b=r,c=v.r;double s1=pi*r*r,s2=pi*v.r*v.r;if(sgn(a-b-c)>=0)return 0;if(sgn(a+min(b,c)-max(b,c))<=0)return min(s1,s2);else{double cta1=2*acos((a*a+b*b-c*c)/(2*a*b));double cta2=2*acos((a*a+c*c-b*b)/(2*a*c));return cta1/(2*pi)*s1-0.5*sin(cta1)*b*b+cta2/(2*pi)*s2-0.5*sin(cta2)*c*c;}}//`求圓和三角形pab的相交面積`//`測試:POJ3675 HDU3982 HDU2892`double areatriangle(Point a,Point b){if(sgn((p-a)^(p-b)) == 0)return 0.0;Point q[5];int len = 0;q[len++] = a;Line l(a,b);Point p1,p2;if(pointcrossline(l,q[1],q[2])==2){if(sgn((a-q[1])*(b-q[1]))<0)q[len++] = q[1];if(sgn((a-q[2])*(b-q[2]))<0)q[len++] = q[2];}q[len++] = b;if(len == 4 && sgn((q[0]-q[1])*(q[2]-q[1]))>0)swap(q[1],q[2]);double res = 0;for(int i = 0;i < len-1;i++){if(relation(q[i])==0||relation(q[i+1])==0){double arg = p.rad(q[i],q[i+1]);res += r*r*arg/2.0;}else{res += fabs((q[i]-p)^(q[i+1]-p))/2.0;}}return res;} };/** n,p Line l for each side* input(int _n) - inputs _n size polygon* add(Point q) - adds a point at end of the list* getline() - populates line array* cmp - comparision in convex_hull order* norm() - sorting in convex_hull order* getconvex(polygon &convex) - returns convex hull in convex* Graham(polygon &convex) - returns convex hull in convex* isconvex() - checks if convex* relationpoint(Point q) - returns 3 if q is a vertex* 2 if on a side* 1 if inside* 0 if outside* convexcut(Line u,polygon &po) - left side of u in po* gercircumference() - returns side length* getarea() - returns area* getdir() - returns 0 for cw, 1 for ccw* getbarycentre() - returns barycenter**/ struct polygon{int n;Point p[maxp];Line l[maxp];void input(int _n){n = _n;for(int i = 0;i < n;i++)p[i].input();}void add(Point q){p[n++] = q;}void getline(){for(int i = 0;i < n;i++){l[i] = Line(p[i],p[(i+1)%n]);}}struct cmp{Point p;cmp(const Point &p0){p = p0;}bool operator()(const Point &aa,const Point &bb){Point a = aa, b = bb;int d = sgn((a-p)^(b-p));if(d == 0){return sgn(a.distance(p)-b.distance(p)) < 0;}return d > 0;}};//`進行極角排序`//`首先需要找到最左下角的點`//`需要重載號好Point的 < 操作符(min函數要用) `void norm(){Point mi = p[0];for(int i = 1;i < n;i++)mi = min(mi,p[i]);sort(p,p+n,cmp(mi));}//`得到凸包`//`得到的凸包里面的點編號是0$\sim$n-1的`//`兩種凸包的方法`//`注意如果有影響,要特判下所有點共點,或者共線的特殊情況`//`測試 LightOJ1203 LightOJ1239`void getconvex(polygon &convex){sort(p,p+n);convex.n = n;for(int i = 0;i < min(n,2);i++){convex.p[i] = p[i];}if(convex.n == 2 && (convex.p[0] == convex.p[1]))convex.n--;//特判if(n <= 2)return;int &top = convex.n;top = 1;for(int i = 2;i < n;i++){while(top && sgn((convex.p[top]-p[i])^(convex.p[top-1]-p[i])) <= 0)top--;convex.p[++top] = p[i];}int temp = top;convex.p[++top] = p[n-2];for(int i = n-3;i >= 0;i--){while(top != temp && sgn((convex.p[top]-p[i])^(convex.p[top-1]-p[i])) <= 0)top--;convex.p[++top] = p[i];}if(convex.n == 2 && (convex.p[0] == convex.p[1]))convex.n--;//特判convex.norm();//`原來得到的是順時針的點,排序后逆時針`}//`得到凸包的另外一種方法`//`測試 LightOJ1203 LightOJ1239`void Graham(polygon &convex){norm();int &top = convex.n;top = 0;if(n == 1){top = 1;convex.p[0] = p[0];return;}if(n == 2){top = 2;convex.p[0] = p[0];convex.p[1] = p[1];if(convex.p[0] == convex.p[1])top--;return;}convex.p[0] = p[0];convex.p[1] = p[1];top = 2;for(int i = 2;i < n;i++){while( top > 1 && sgn((convex.p[top-1]-convex.p[top-2])^(p[i]-convex.p[top-2])) <= 0 )top--;convex.p[top++] = p[i];}if(convex.n == 2 && (convex.p[0] == convex.p[1]))convex.n--;//特判}//`判斷是不是凸的`bool isconvex(){bool s[3];memset(s,false,sizeof(s));for(int i = 0;i < n;i++){int j = (i+1)%n;int k = (j+1)%n;s[sgn((p[j]-p[i])^(p[k]-p[i]))+1] = true;if(s[0] && s[2])return false;}return true;}//`判斷點和任意多邊形的關系`//` 3 點上`//` 2 邊上`//` 1 內部`//` 0 外部`int relationpoint(Point q){for(int i = 0;i < n;i++){if(p[i] == q)return 3;}getline();for(int i = 0;i < n;i++){if(l[i].pointonseg(q))return 2;}int cnt = 0;for(int i = 0;i < n;i++){int j = (i+1)%n;int k = sgn((q-p[j])^(p[i]-p[j]));int u = sgn(p[i].y-q.y);int v = sgn(p[j].y-q.y);if(k > 0 && u < 0 && v >= 0)cnt++;if(k < 0 && v < 0 && u >= 0)cnt--;}return cnt != 0;}//`直線u切割凸多邊形左側`//`注意直線方向`//`測試:HDU3982`void convexcut(Line u,polygon &po){int &top = po.n;//注意引用top = 0;for(int i = 0;i < n;i++){int d1 = sgn((u.e-u.s)^(p[i]-u.s));int d2 = sgn((u.e-u.s)^(p[(i+1)%n]-u.s));if(d1 >= 0)po.p[top++] = p[i];if(d1*d2 < 0)po.p[top++] = u.crosspoint(Line(p[i],p[(i+1)%n]));}}//`得到周長`//`測試 LightOJ1239`double getcircumference(){double sum = 0;for(int i = 0;i < n;i++){sum += p[i].distance(p[(i+1)%n]);}return sum;}//`得到面積`double getarea(){double sum = 0;for(int i = 0;i < n;i++){sum += (p[i]^p[(i+1)%n]);}return fabs(sum)/2;}//`得到方向`//` 1 表示逆時針,0表示順時針`bool getdir(){double sum = 0;for(int i = 0;i < n;i++)sum += (p[i]^p[(i+1)%n]);if(sgn(sum) > 0)return 1;return 0;}//`得到重心`Point getbarycentre(){Point ret(0,0);double area = 0;for(int i = 1;i < n-1;i++){double tmp = (p[i]-p[0])^(p[i+1]-p[0]);if(sgn(tmp) == 0)continue;area += tmp;ret.x += (p[0].x+p[i].x+p[i+1].x)/3*tmp;ret.y += (p[0].y+p[i].y+p[i+1].y)/3*tmp;}if(sgn(area)) ret = ret/area;return ret;}//`多邊形和圓交的面積`//`測試:POJ3675 HDU3982 HDU2892`double areacircle(circle c){double ans = 0;for(int i = 0;i < n;i++){int j = (i+1)%n;if(sgn( (p[j]-c.p)^(p[i]-c.p) ) >= 0)ans += c.areatriangle(p[i],p[j]);else ans -= c.areatriangle(p[i],p[j]);}return fabs(ans);}//`多邊形和圓關系`//` 2 圓完全在多邊形內`//` 1 圓在多邊形里面,碰到了多邊形邊界`//` 0 其它`int relationcircle(circle c){getline();int x = 2;if(relationpoint(c.p) != 1)return 0;//圓心不在內部for(int i = 0;i < n;i++){if(c.relationseg(l[i])==2)return 0;if(c.relationseg(l[i])==1)x = 1;}return x;} }; //`AB X AC` double cross(Point A,Point B,Point C){return (B-A)^(C-A); } //`AB*AC` double dot(Point A,Point B,Point C){return (B-A)*(C-A); } //`最小矩形面積覆蓋` //` A 必須是凸包(而且是逆時針順序)` //` 測試 UVA 10173` double minRectangleCover(polygon A){//`要特判A.n < 3的情況`if(A.n < 3)return 0.0;A.p[A.n] = A.p[0];double ans = -1;int r = 1, p = 1, q;for(int i = 0;i < A.n;i++){//`卡出離邊A.p[i] - A.p[i+1]最遠的點`while( sgn( cross(A.p[i],A.p[i+1],A.p[r+1]) - cross(A.p[i],A.p[i+1],A.p[r]) ) >= 0 )r = (r+1)%A.n;//`卡出A.p[i] - A.p[i+1]方向上正向n最遠的點`while(sgn( dot(A.p[i],A.p[i+1],A.p[p+1]) - dot(A.p[i],A.p[i+1],A.p[p]) ) >= 0 )p = (p+1)%A.n;if(i == 0)q = p;//`卡出A.p[i] - A.p[i+1]方向上負向最遠的點`while(sgn(dot(A.p[i],A.p[i+1],A.p[q+1]) - dot(A.p[i],A.p[i+1],A.p[q])) <= 0)q = (q+1)%A.n;double d = (A.p[i] - A.p[i+1]).len2();double tmp = cross(A.p[i],A.p[i+1],A.p[r]) *(dot(A.p[i],A.p[i+1],A.p[p]) - dot(A.p[i],A.p[i+1],A.p[q]))/d;if(ans < 0 || ans > tmp)ans = tmp;}return ans; }//`直線切凸多邊形` //`多邊形是逆時針的,在q1q2的左側` //`測試:HDU3982` vector<Point> convexCut(const vector<Point> &ps,Point q1,Point q2){vector<Point>qs;int n = ps.size();for(int i = 0;i < n;i++){Point p1 = ps[i], p2 = ps[(i+1)%n];int d1 = sgn((q2-q1)^(p1-q1)), d2 = sgn((q2-q1)^(p2-q1));if(d1 >= 0)qs.push_back(p1);if(d1 * d2 < 0)qs.push_back(Line(p1,p2).crosspoint(Line(q1,q2)));}return qs; } //`半平面交` //`測試 POJ3335 POJ1474 POJ1279` //*************************** struct halfplane:public Line{double angle;halfplane(){}//`表示向量s->e逆時針(左側)的半平面`halfplane(Point _s,Point _e){s = _s;e = _e;}halfplane(Line v){s = v.s;e = v.e;}void calcangle(){angle = atan2(e.y-s.y,e.x-s.x);}bool operator <(const halfplane &b)const{return angle < b.angle;} }; struct halfplanes{int n;halfplane hp[maxp];Point p[maxp];int que[maxp];int st,ed;void push(halfplane tmp){hp[n++] = tmp;}//去重void unique(){int m = 1;for(int i = 1;i < n;i++){if(sgn(hp[i].angle-hp[i-1].angle) != 0)hp[m++] = hp[i];else if(sgn( (hp[m-1].e-hp[m-1].s)^(hp[i].s-hp[m-1].s) ) > 0)hp[m-1] = hp[i];}n = m;}bool halfplaneinsert(){for(int i = 0;i < n;i++)hp[i].calcangle();sort(hp,hp+n);unique();que[st=0] = 0;que[ed=1] = 1;p[1] = hp[0].crosspoint(hp[1]);for(int i = 2;i < n;i++){while(st<ed && sgn((hp[i].e-hp[i].s)^(p[ed]-hp[i].s))<0)ed--;while(st<ed && sgn((hp[i].e-hp[i].s)^(p[st+1]-hp[i].s))<0)st++;que[++ed] = i;if(hp[i].parallel(hp[que[ed-1]]))return false;p[ed]=hp[i].crosspoint(hp[que[ed-1]]);}while(st<ed && sgn((hp[que[st]].e-hp[que[st]].s)^(p[ed]-hp[que[st]].s))<0)ed--;while(st<ed && sgn((hp[que[ed]].e-hp[que[ed]].s)^(p[st+1]-hp[que[ed]].s))<0)st++;if(st+1>=ed)return false;return true;}//`得到最后半平面交得到的凸多邊形`//`需要先調用halfplaneinsert() 且返回true`void getconvex(polygon &con){p[st] = hp[que[st]].crosspoint(hp[que[ed]]);con.n = ed-st+1;for(int j = st,i = 0;j <= ed;i++,j++)con.p[i] = p[j];} }; //***************************const int maxn = 1010; struct circles{circle c[maxn];double ans[maxn];//`ans[i]表示被覆蓋了i次的面積`double pre[maxn];int n;circles(){}void add(circle cc){c[n++] = cc;}//`x包含在y中`bool inner(circle x,circle y){if(x.relationcircle(y) != 1)return 0;return sgn(x.r-y.r)<=0?1:0;}//圓的面積并去掉內含的圓void init_or(){bool mark[maxn] = {0};int i,j,k=0;for(i = 0;i < n;i++){for(j = 0;j < n;j++)if(i != j && !mark[j]){if( (c[i]==c[j])||inner(c[i],c[j]) )break;}if(j < n)mark[i] = 1;}for(i = 0;i < n;i++)if(!mark[i])c[k++] = c[i];n = k;}//`圓的面積交去掉內含的圓`void init_add(){int i,j,k;bool mark[maxn] = {0};for(i = 0;i < n;i++){for(j = 0;j < n;j++)if(i != j && !mark[j]){if( (c[i]==c[j])||inner(c[j],c[i]) )break;}if(j < n)mark[i] = 1;}for(i = 0;i < n;i++)if(!mark[i])c[k++] = c[i];n = k;}//`半徑為r的圓,弧度為th對應的弓形的面積`double areaarc(double th,double r){return 0.5*r*r*(th-sin(th));}//`測試SPOJVCIRCLES SPOJCIRUT`//`SPOJVCIRCLES求n個圓并的面積,需要加上init\_or()去掉重復圓(否則WA)`//`SPOJCIRUT 是求被覆蓋k次的面積,不能加init\_or()`//`對于求覆蓋多少次面積的問題,不能解決相同圓,而且不能init\_or()`//`求多圓面積并,需要init\_or,其中一個目的就是去掉相同圓`void getarea(){memset(ans,0,sizeof(ans));vector<pair<double,int> >v;for(int i = 0;i < n;i++){v.clear();v.push_back(make_pair(-pi,1));v.push_back(make_pair(pi,-1));for(int j = 0;j < n;j++)if(i != j){Point q = (c[j].p - c[i].p);double ab = q.len(),ac = c[i].r, bc = c[j].r;if(sgn(ab+ac-bc)<=0){v.push_back(make_pair(-pi,1));v.push_back(make_pair(pi,-1));continue;}if(sgn(ab+bc-ac)<=0)continue;if(sgn(ab-ac-bc)>0)continue;double th = atan2(q.y,q.x), fai = acos((ac*ac+ab*ab-bc*bc)/(2.0*ac*ab));double a0 = th-fai;if(sgn(a0+pi)<0)a0+=2*pi;double a1 = th+fai;if(sgn(a1-pi)>0)a1-=2*pi;if(sgn(a0-a1)>0){v.push_back(make_pair(a0,1));v.push_back(make_pair(pi,-1));v.push_back(make_pair(-pi,1));v.push_back(make_pair(a1,-1));}else{v.push_back(make_pair(a0,1));v.push_back(make_pair(a1,-1));}}sort(v.begin(),v.end());int cur = 0;for(int j = 0;j < v.size();j++){if(cur && sgn(v[j].first-pre[cur])){ans[cur] += areaarc(v[j].first-pre[cur],c[i].r);ans[cur] += 0.5*(Point(c[i].p.x+c[i].r*cos(pre[cur]),c[i].p.y+c[i].r*sin(pre[cur]))^Point(c[i].p.x+c[i].r*cos(v[j].first),c[i].p.y+c[i].r*sin(v[j].first)));}cur += v[j].second;pre[cur] = v[j].first;}}for(int i = 1;i < n;i++)ans[i] -= ans[i+1];} };

三維幾何

const double eps = 1e-8; int sgn(double x){if(fabs(x) < eps)return 0;if(x < 0)return -1;else return 1; } struct Point3{double x,y,z;Point3(double _x = 0,double _y = 0,double _z = 0){x = _x;y = _y;z = _z;}void input(){scanf("%lf%lf%lf",&x,&y,&z);}void output(){printf("%.2lf %.2lf %.2lf\n",x,y,z);}bool operator ==(const Point3 &b)const{return sgn(x-b.x) == 0 && sgn(y-b.y) == 0 && sgn(z-b.z) == 0;}bool operator <(const Point3 &b)const{return sgn(x-b.x)==0?(sgn(y-b.y)==0?sgn(z-b.z)<0:y<b.y):x<b.x;}double len(){return sqrt(x*x+y*y+z*z);}double len2(){return x*x+y*y+z*z;}double distance(const Point3 &b)const{return sqrt((x-b.x)*(x-b.x)+(y-b.y)*(y-b.y)+(z-b.z)*(z-b.z));}Point3 operator -(const Point3 &b)const{return Point3(x-b.x,y-b.y,z-b.z);}Point3 operator +(const Point3 &b)const{return Point3(x+b.x,y+b.y,z+b.z);}Point3 operator *(const double &k)const{return Point3(x*k,y*k,z*k);}Point3 operator /(const double &k)const{return Point3(x/k,y/k,z/k);}//點乘double operator *(const Point3 &b)const{return x*b.x+y*b.y+z*b.z;}//叉乘Point3 operator ^(const Point3 &b)const{return Point3(y*b.z-z*b.y,z*b.x-x*b.z,x*b.y-y*b.x);}double rad(Point3 a,Point3 b){Point3 p = (*this);return acos( ( (a-p)*(b-p) )/ (a.distance(p)*b.distance(p)) );}//變換長度Point3 trunc(double r){double l = len();if(!sgn(l))return *this;r /= l;return Point3(x*r,y*r,z*r);} }; struct Line3 {Point3 s,e;Line3(){}Line3(Point3 _s,Point3 _e){s = _s;e = _e;}bool operator ==(const Line3 v){return (s==v.s)&&(e==v.e);}void input(){s.input();e.input();}double length(){return s.distance(e);}//點到直線距離double dispointtoline(Point3 p){return ((e-s)^(p-s)).len()/s.distance(e);}//點到線段距離double dispointtoseg(Point3 p){if(sgn((p-s)*(e-s)) < 0 || sgn((p-e)*(s-e)) < 0)return min(p.distance(s),e.distance(p));return dispointtoline(p);}//`返回點p在直線上的投影`Point3 lineprog(Point3 p){return s + ( ((e-s)*((e-s)*(p-s)))/((e-s).len2()) );}//`p繞此向量逆時針arg角度`Point3 rotate(Point3 p,double ang){if(sgn(((s-p)^(e-p)).len()) == 0)return p;Point3 f1 = (e-s)^(p-s);Point3 f2 = (e-s)^(f1);double len = ((s-p)^(e-p)).len()/s.distance(e);f1 = f1.trunc(len); f2 = f2.trunc(len);Point3 h = p+f2;Point3 pp = h+f1;return h + ((p-h)*cos(ang)) + ((pp-h)*sin(ang));}//`點在直線上`bool pointonseg(Point3 p){return sgn( ((s-p)^(e-p)).len() ) == 0 && sgn((s-p)*(e-p)) == 0;} }; struct Plane {Point3 a,b,c,o;//`平面上的三個點,以及法向量`Plane(){}Plane(Point3 _a,Point3 _b,Point3 _c){a = _a;b = _b;c = _c;o = pvec();}Point3 pvec(){return (b-a)^(c-a);}//`ax+by+cz+d = 0`Plane(double _a,double _b,double _c,double _d){o = Point3(_a,_b,_c);if(sgn(_a) != 0)a = Point3((-_d-_c-_b)/_a,1,1);else if(sgn(_b) != 0)a = Point3(1,(-_d-_c-_a)/_b,1);else if(sgn(_c) != 0)a = Point3(1,1,(-_d-_a-_b)/_c);}//`點在平面上的判斷`bool pointonplane(Point3 p){return sgn((p-a)*o) == 0;}//`兩平面夾角`double angleplane(Plane f){return acos(o*f.o)/(o.len()*f.o.len());}//`平面和直線的交點,返回值是交點個數`int crossline(Line3 u,Point3 &p){double x = o*(u.e-a);double y = o*(u.s-a);double d = x-y;if(sgn(d) == 0)return 0;p = ((u.s*x)-(u.e*y))/d;return 1;}//`點到平面最近點(也就是投影)`Point3 pointtoplane(Point3 p){Line3 u = Line3(p,p+o);crossline(u,p);return p;}//`平面和平面的交線`int crossplane(Plane f,Line3 &u){Point3 oo = o^f.o;Point3 v = o^oo;double d = fabs(f.o*v);if(sgn(d) == 0)return 0;Point3 q = a + (v*(f.o*(f.a-a))/d);u = Line3(q,q+oo);return 1;} };

?平面最近點對

const int MAXN = 100010; const double eps = 1e-8; const double INF = 1e20; struct Point{double x,y;void input(){scanf("%lf%lf",&x,&y);} }; double dist(Point a,Point b){return sqrt((a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y)); } Point p[MAXN]; Point tmpt[MAXN]; bool cmpx(Point a,Point b){return a.x < b.x || (a.x == b.x && a.y < b.y); } bool cmpy(Point a,Point b){return a.y < b.y || (a.y == b.y && a.x < b.x); } double Closest_Pair(int left,int right){double d = INF;if(left == right)return d;if(left+1 == right)return dist(p[left],p[right]);int mid = (left+right)/2;double d1 = Closest_Pair(left,mid);double d2 = Closest_Pair(mid+1,right);d = min(d1,d2);int cnt = 0;for(int i = left;i <= right;i++){if(fabs(p[mid].x - p[i].x) <= d)tmpt[cnt++] = p[i];}sort(tmpt,tmpt+cnt,cmpy);for(int i = 0;i < cnt;i++){for(int j = i+1;j < cnt && tmpt[j].y - tmpt[i].y < d;j++)d = min(d,dist(tmpt[i],tmpt[j]));}return d; } int main(){int n;while(scanf("%d",&n) == 1 && n){for(int i = 0;i < n;i++)p[i].input();sort(p,p+n,cmpx);printf("%.2lf\n",Closest_Pair(0,n-1));}return 0; }

三維凸包:HDU4273

const double eps = 1e-8; const int MAXN = 550; int sgn(double x){if(fabs(x) < eps)return 0;if(x < 0)return -1;else return 1; } struct Point3{double x,y,z;Point3(double _x = 0, double _y = 0, double _z = 0){x = _x;y = _y;z = _z;}void input(){scanf("%lf%lf%lf",&x,&y,&z);}bool operator ==(const Point3 &b)const{return sgn(x-b.x) == 0 && sgn(y-b.y) == 0 && sgn(z-b.z) == 0;}double len(){return sqrt(x*x+y*y+z*z);}double len2(){return x*x+y*y+z*z;}double distance(const Point3 &b)const{return sqrt((x-b.x)*(x-b.x)+(y-b.y)*(y-b.y)+(z-b.z)*(z-b.z));}Point3 operator -(const Point3 &b)const{return Point3(x-b.x,y-b.y,z-b.z);}Point3 operator +(const Point3 &b)const{return Point3(x+b.x,y+b.y,z+b.z);}Point3 operator *(const double &k)const{return Point3(x*k,y*k,z*k);}Point3 operator /(const double &k)const{return Point3(x/k,y/k,z/k);}//點乘double operator *(const Point3 &b)const{return x*b.x + y*b.y + z*b.z;}//叉乘Point3 operator ^(const Point3 &b)const{return Point3(y*b.z-z*b.y,z*b.x-x*b.z,x*b.y-y*b.x);} }; struct CH3D{struct face{//表示凸包一個面上的三個點的編號int a,b,c;//表示該面是否屬于最終的凸包上的面bool ok;};//初始頂點數int n;Point3 P[MAXN];//凸包表面的三角形數int num;//凸包表面的三角形face F[8*MAXN];int g[MAXN][MAXN];//叉乘Point3 cross(const Point3 &a,const Point3 &b,const Point3 &c){return (b-a)^(c-a);}//`三角形面積*2`double area(Point3 a,Point3 b,Point3 c){return ((b-a)^(c-a)).len();}//`四面體有向面積*6`double volume(Point3 a,Point3 b,Point3 c,Point3 d){return ((b-a)^(c-a))*(d-a);}//`正:點在面同向`double dblcmp(Point3 &p,face &f){Point3 p1 = P[f.b] - P[f.a];Point3 p2 = P[f.c] - P[f.a];Point3 p3 = p - P[f.a];return (p1^p2)*p3;}void deal(int p,int a,int b){int f = g[a][b];face add;if(F[f].ok){if(dblcmp(P[p],F[f]) > eps)dfs(p,f);else {add.a = b;add.b = a;add.c = p;add.ok = true;g[p][b] = g[a][p] = g[b][a] = num;F[num++] = add;}}}//遞歸搜索所有應該從凸包內刪除的面void dfs(int p,int now){F[now].ok = false;deal(p,F[now].b,F[now].a);deal(p,F[now].c,F[now].b);deal(p,F[now].a,F[now].c);}bool same(int s,int t){Point3 &a = P[F[s].a];Point3 &b = P[F[s].b];Point3 &c = P[F[s].c];return fabs(volume(a,b,c,P[F[t].a])) < eps &&fabs(volume(a,b,c,P[F[t].b])) < eps &&fabs(volume(a,b,c,P[F[t].c])) < eps;}//構建三維凸包void create(){num = 0;face add;//***********************************//此段是為了保證前四個點不共面bool flag = true;for(int i = 1;i < n;i++){if(!(P[0] == P[i])){swap(P[1],P[i]);flag = false;break;}}if(flag)return;flag = true;for(int i = 2;i < n;i++){if( ((P[1]-P[0])^(P[i]-P[0])).len() > eps ){swap(P[2],P[i]);flag = false;break;}}if(flag)return;flag = true;for(int i = 3;i < n;i++){if(fabs( ((P[1]-P[0])^(P[2]-P[0]))*(P[i]-P[0]) ) > eps){swap(P[3],P[i]);flag = false;break;}}if(flag)return;//**********************************for(int i = 0;i < 4;i++){add.a = (i+1)%4;add.b = (i+2)%4;add.c = (i+3)%4;add.ok = true;if(dblcmp(P[i],add) > 0)swap(add.b,add.c);g[add.a][add.b] = g[add.b][add.c] = g[add.c][add.a] = num;F[num++] = add;}for(int i = 4;i < n;i++)for(int j = 0;j < num;j++)if(F[j].ok && dblcmp(P[i],F[j]) > eps){dfs(i,j);break;}int tmp = num;num = 0;for(int i = 0;i < tmp;i++)if(F[i].ok)F[num++] = F[i];}//表面積//`測試:HDU3528`double area(){double res = 0;if(n == 3){Point3 p = cross(P[0],P[1],P[2]);return p.len()/2;}for(int i = 0;i < num;i++)res += area(P[F[i].a],P[F[i].b],P[F[i].c]);return res/2.0;}double volume(){double res = 0;Point3 tmp = Point3(0,0,0);for(int i = 0;i < num;i++)res += volume(tmp,P[F[i].a],P[F[i].b],P[F[i].c]);return fabs(res/6);}//表面三角形個數int triangle(){return num;}//表面多邊形個數//`測試:HDU3662`int polygon(){int res = 0;for(int i = 0;i < num;i++){bool flag = true;for(int j = 0;j < i;j++)if(same(i,j)){flag = 0;break;}res += flag;}return res;}//重心//`測試:HDU4273`Point3 barycenter(){Point3 ans = Point3(0,0,0);Point3 o = Point3(0,0,0);double all = 0;for(int i = 0;i < num;i++){double vol = volume(o,P[F[i].a],P[F[i].b],P[F[i].c]);ans = ans + (((o+P[F[i].a]+P[F[i].b]+P[F[i].c])/4.0)*vol);all += vol;}ans = ans/all;return ans;}//點到面的距離//`測試:HDU4273`double ptoface(Point3 p,int i){double tmp1 = fabs(volume(P[F[i].a],P[F[i].b],P[F[i].c],p));double tmp2 = ((P[F[i].b]-P[F[i].a])^(P[F[i].c]-P[F[i].a])).len();return tmp1/tmp2;} }; CH3D hull; int main() {while(scanf("%d",&hull.n) == 1){for(int i = 0;i < hull.n;i++)hull.P[i].input();hull.create();Point3 p = hull.barycenter();double ans = 1e20;for(int i = 0;i < hull.num;i++)ans = min(ans,hull.ptoface(p,i));printf("%.3lf\n",ans);}return 0; }

叉乘性質:

總結

以上是生活随笔為你收集整理的(转)计算几何模板 - kuangbin的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

www.xxxx变态.com | 在线观看亚洲免费视频 | www.久久色| 婷婷综合影院 | aaa黄色毛片 | 免费a网址 | 狠狠操狠狠干天天操 | 久久av免费电影 | 91精品国产欧美一区二区 | 国产精品视频999 | 91成人欧美 | 四虎国产精品永久在线国在线 | 97超视频在线观看 | 3d黄动漫免费看 | 国产色区 | 激情欧美丁香 | 日本爱爱片| www.com操| 亚洲精品国产精品国自产在线 | 成人日韩av| 日日夜精品 | 在线观看视频免费大全 | 99c视频高清免费观看 | 成人午夜精品久久久久久久3d | 伊人国产在线观看 | 免费亚洲精品 | 青青啪 | 久久免费公开视频 | 色综合色综合色综合 | 欧美日韩在线视频免费 | 国产伦理久久精品久久久久_ | 天天干天天弄 | 少妇高潮冒白浆 | 91超碰免费在线 | 国产精品久久久久久久99 | 欧美日一级片 | 国产精品丝袜久久久久久久不卡 | 国产一区影院 | 日韩视频一区二区在线观看 | 久久久久久久久久久久久久电影 | av免费在线播放 | 日本精品在线视频 | 国产黑丝一区二区三区 | 欧美色综合久久 | 深夜福利视频一区二区 | 国产香蕉97碰碰碰视频在线观看 | 欧美无极色 | 激情五月***国产精品 | 在线免费观看的av | 免费看三级黄色片 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 色综合久久88色综合天天免费 | 亚洲综合五月天 | 国产亚洲精品久久久久久移动网络 | 深爱激情站 | 国产精品毛片久久久 | 五月天婷婷丁香花 | 久久久午夜精品理论片中文字幕 | 伊人狠狠操 | 尤物97国产精品久久精品国产 | 国产视频二区三区 | 欧美激情视频三区 | 狠狠干网站 | 在线观看视频一区二区三区 | 91自拍视频在线 | 国产一区在线不卡 | 成人三级网址 | 五月婷av | 国产精品乱码久久久 | 国产在线不卡 | 毛片.com | 色视频在线 | 久久成人精品电影 | 国产美女在线精品免费观看 | 亚洲中字幕 | 欧美 日韩精品 | 免费久久久久久久 | 成人影视免费看 | 国产精品一区二区三区在线免费观看 | 在线观看免费黄色 | 久久99久国产精品黄毛片入口 | 亚洲一级在线观看 | 欧美在线资源 | 中文字幕在线观看一区 | 亚洲精品tv久久久久久久久久 | 国产精品99久久久久久人免费 | 国产理论一区二区三区 | 精品网站999www | 午夜在线看 | 天天综合天天做天天综合 | 综合久久网站 | 中文字幕av免费观看 | 天天色天天爱天天射综合 | av高清不卡 | 国产精品久久嫩一区二区免费 | 日本巨乳在线 | 国产精品入口66mio女同 | a级成人毛片 | 99视频国产在线 | 欧美日韩在线视频一区 | 亚洲一区二区三区miaa149 | 成人片在线播放 | 天天插狠狠干 | 亚洲影视九九影院在线观看 | 欧美视屏一区二区 | 精品久久久久久亚洲综合网站 | 丝袜+亚洲+另类+欧美+变态 | 亚洲精品视频免费 | 国产精品激情 | 国产一级在线观看 | www.xxx.性狂虐| av在线播放中文字幕 | 久久精品国产亚洲精品2020 | 亚洲视频六区 | 久久新 | 久久国产精品视频观看 | 亚洲人天堂 | 三级黄在线 | 99久久婷婷国产 | 国产麻豆视频免费观看 | 国产精品久久久久久久午夜片 | 成人国产精品av | 三级av片| 日韩免费大片 | 69国产盗摄一区二区三区五区 | 久章草在线 | 国产一区二区精品久久 | 开心婷婷色 | 欧美大片大全 | 丁香六月婷婷激情 | 国产免费又粗又猛又爽 | 日本久久精品视频 | 久久精品男人的天堂 | 一级精品视频在线观看宜春院 | 国产日韩精品久久 | 伊人精品在线 | 曰韩在线| 午夜av电影院 | 91在线视频免费91 | 18久久久 | 探花视频在线版播放免费观看 | 国产视频精品免费播放 | 免费在线国产视频 | 免费a级大片 | 黄色av电影 | 国产精品一区二区在线免费观看 | 久久久久高清毛片一级 | 国产免费久久久久 | av日韩在线网站 | 国产色综合 | 国产一区二区中文字幕 | 五月天丁香亚洲 | 波多野结衣在线播放视频 | 天天草夜夜 | 亚洲人人爱| 狠狠色婷婷丁香六月 | 午夜精品成人一区二区三区 | 精品人妖videos欧美人妖 | 成年人在线免费视频观看 | 欧美一级乱黄 | 综合伊人av | 91亚洲精品在线观看 | 国产天天综合 | 1区2区视频 | 国产二区电影 | 亚洲成人精品影院 | 婷婷色亚洲| 成人a在线观看高清电影 | 久久精品5 | 久久久久久久免费观看 | 日韩免费三区 | 九九热只有精品 | 波多野结衣在线播放一区 | 亚洲自拍自偷 | 一区二区欧美在线观看 | caobi视频| 亚洲欧美精品一区 | 国产亚洲精品免费 | 亚洲日本国产精品 | 亚洲精品在线免费观看视频 | 胖bbbb搡bbbb擦bbbb | 伊人五月 | 国产精品免费不 | 黄色小说视频在线 | 国产精品久久久久久久久久东京 | 四虎影视久久久 | 欧美色就是色 | 天天干天天射天天插 | 国产亚洲精品久久久久久大师 | 国产精品成人aaaaa网站 | 日韩二区在线观看 | 国产精品色| 最近中文字幕在线中文高清版 | 国产精品专区在线观看 | 99久久精品国产系列 | 一本一本久久a久久精品综合小说 | 欧美日韩在线精品 | 亚洲精品免费在线视频 | 免费观看一级视频 | 国产小视频在线免费观看视频 | 午夜av片 | 怡红院av| 日韩欧美在线影院 | 中文字幕精品三级久久久 | 亚洲精品国产精品乱码在线观看 | 成年人av在线播放 | www.久久免费| 免费成人av在线看 | 亚洲.www | 性色xxxxhd | 91成年人视频 | 狠狠躁日日躁夜夜躁av | 久在线观看视频 | 四虎影视成人永久免费观看视频 | 久久精美视频 | 久久伊人国产精品 | 免费日韩一区二区三区 | 日韩有码中文字幕在线 | 美女黄色网在线播放 | 亚洲欧美经典 | 黄色在线免费观看网址 | 国内精品久久久久影院日本资源 | 欧美久久久一区二区三区 | 欧美激情va永久在线播放 | 亚洲激精日韩激精欧美精品 | av直接看| 九九热re | 久久综合九色综合久久久精品综合 | 国产精品九色 | 国产在线不卡视频 | av电影不卡在线 | 久久久久欠精品国产毛片国产毛生 | 国产视频精品久久 | 国产视频91在线 | 色欧美88888久久久久久影院 | 日韩欧美综合视频 | 久久久蜜桃 | 99亚洲精品视频 | 天天操天天是 | 精品久久久久国产 | www.久久久 | 成年人黄色在线观看 | 国产精品一区二区久久国产 | 亚洲情感电影大片 | 亚洲闷骚少妇在线观看网站 | 97超在线 | 亚洲免费婷婷 | 日本中文字幕影院 | 久久国产精品免费一区二区三区 | 国产精品久久久久久久久久久杏吧 | 欧美一区二区在线看 | 久久久久一区二区三区 | 国产在线观看免费 | 国产一及片 | 综合黄色网| 亚洲一区日韩 | 国产又黄又猛又粗 | 伊人色**天天综合婷婷 | 国内精品亚洲 | 久久免费视屏 | 久久久在线视频 | 91九色网站| 在线之家免费在线观看电影 | 亚洲欧美999| 国产一线二线三线在线观看 | 欧美日韩在线视频一区二区 | 久久 亚洲视频 | 成人黄色小说视频 | 天堂v中文 | 奇米四色影狠狠爱7777 | 国产一区二区高清不卡 | 99视频在线观看视频 | 亚洲视频久久 | 一区二区三区四区免费视频 | 人人玩人人添人人澡97 | 激情五月***国产精品 | 91在线中文字幕 | 91中文字幕网 | 国产成人香蕉 | 婷婷在线五月 | 精品免费视频123区 午夜久久成人 | 涩涩色亚洲一区 | 久久九九精品 | 欧美激情视频一二区 | 中文字幕永久免费 | 九色91福利 | 二区在线播放 | 啪啪av在线 | 免费日韩一级片 | 在线观看岛国 | 久久久久久福利 | 色婷久久 | 射久久 | 91看片在线看片 | 久久综合精品国产一区二区三区 | 欧美精品久久久久久久久久丰满 | 亚洲日日夜夜 | 精品国产精品国产偷麻豆 | 在线观看日韩视频 | 日韩在线观看中文字幕 | 日韩免费b| 91福利专区| 99久久久国产精品免费99 | 日韩av免费观看网站 | 久久久久久久久久久久久久电影 | 亚洲动漫在线观看 | 国产啊v在线观看 | 丁香婷婷久久久综合精品国产 | 国产精品a级 | 天天干天天干天天色 | 中文字幕一区二区三区视频 | 99久久这里只有精品 | 婷婷日韩 | 2024av| 免费成人在线网站 | 日本最新中文字幕 | 亚洲精品美女久久久 | 国产又粗又猛又黄又爽 | 日韩在线播放av | 91在线网址 | 成人免费91 | 婷婷中文字幕 | 福利电影一区二区 | 97国产一区二区 | 免费在线中文字幕 | 亚洲天堂网在线观看视频 | 国产高清无线码2021 | 久久久久久久久久免费视频 | av不卡免费在线观看 | www.伊人网 | 天天干夜夜想 | 蜜臀一区二区三区精品免费视频 | 国产高清视频网 | 高潮毛片无遮挡高清免费 | 黄色91免费观看 | 99精品视频在线观看 | 超碰av在线播放 | 99精品电影 | 91视频免费看网站 | 91九色精品女同系列 | 中文字幕在线观看完整版 | 99夜色| 久久不射电影院 | 男女精品久久 | 欧美高清视频不卡网 | 五月婷婷色播 | 五月色综合 | 色瓜| 久久精品福利 | 日韩亚洲在线视频 | 五月天六月丁香 | 免费福利在线播放 | 免费三级a | 亚洲精品乱码久久久一二三 | 一区二区精品国产 | 亚洲精品综合久久 | 久久久久久久久久久免费视频 | 色吊丝在线永久观看最新版本 | 99久久久久久 | av成人在线观看 | 92精品国产成人观看免费 | 人人爽夜夜爽 | 6080yy精品一区二区三区 | 99久久精品国产毛片 | 欧美另类sm图片 | 99中文字幕在线观看 | 免费看片成年人 | 国产一区免费视频 | 久久国产精品99久久人人澡 | 久草久草在线观看 | 久久少妇 | 99热精品免费观看 | 1024手机基地在线观看 | 久久伦理网 | 久久视频一区 | 日韩精品在线看 | 免费十分钟 | 国产精品乱码久久久久久1区2区 | 日产乱码一二三区别免费 | 免费视频在线观看网站 | 日韩免费观看高清 | 蜜臀久久99精品久久久久久网站 | 日韩免费在线视频观看 | 亚洲91视频 | 久久久午夜影院 | 国产精品乱看 | 在线观看av的网站 | 成人午夜久久 | 成人在线观看影院 | 色综合天天综合在线视频 | 水蜜桃亚洲一二三四在线 | 在线之家免费在线观看电影 | 91免费网站在线观看 | 国产精品网红直播 | 五月天亚洲综合小说网 | 久久av高清 | 久久久福利 | 在线观看视频免费播放 | 久久97久久 | 日日添夜夜添 | 久久综合久色欧美综合狠狠 | 精品一区二区在线观看 | 在线日韩中文 | 久久免费a | 91成人破解版 | 五月婷婷电影网 | 人人插人人草 | 国产又粗又硬又爽视频 | 久久久久久久久久久久亚洲 | 中文字幕成人网 | 欧美日韩国产二区三区 | 色视频在线免费观看 | 天天爱天天插 | 日本狠狠干 | 99热手机在线观看 | www.xxx.性狂虐| 久热这里有精品 | 99久久99久久精品免费 | 国产在线看 | 亚洲欧美日韩精品久久久 | 久久不见久久见免费影院 | 日韩欧美视频免费在线观看 | 97超碰人 | 九九九电影免费看 | 波多野结衣久久精品 | 亚洲国产99 | 天天拍天天色 | 操操碰 | 精品视频亚洲 | 久久免费视频国产 | 最近中文字幕大全 | 久久国产精品99国产精 | www.婷婷色 | 激情av在线播放 | 日韩超碰 | 欧美性超爽 | 亚洲一二视频 | 亚洲午夜av久久乱码 | 伊人成人激情 | 一区二区三区高清不卡 | 国产精品欧美一区二区三区不卡 | 久热色超碰 | www.香蕉视频在线观看 | 精品视频www | 最近中文字幕完整视频高清1 | 久久综合狠狠综合久久激情 | 黄色在线免费观看网址 | 国产成人久久久77777 | www.888av | 国产一区二区在线视频观看 | 亚洲国产一二三 | 国产一区二区高清视频 | 日韩一区二区在线免费观看 | 91av观看| 久草综合在线观看 | 免费观看黄| 色综合天天做天天爱 | 黄色免费观看网址 | 97色噜噜 | 亚洲国产精品va在线看黑人 | 国产视频在 | 992tv在线观看 | 96精品视频 | 97av在线| 国产成人精品一区二三区 | 国产精品久久久久久久久久久久 | 美女一级毛片视频 | 国产色久| 天天干天天玩天天操 | 久久精精品 | 亚洲精品国偷拍自产在线观看蜜桃 | 精品久久一级片 | 婷婷在线观看视频 | 欧美激情综合色综合啪啪五月 | 免费黄色a网站 | 国产精品久久久久久久免费 | 久久久蜜桃一区二区 | 亚洲欧美在线视频免费 | 最近中文字幕视频完整版 | 久久一区二区免费视频 | 超碰在线99 | 一区二区三区中文字幕在线 | www.夜色.com | 成人一级视频在线观看 | 亚洲精品无 | 日日日日干 | 欧美激情片在线观看 | 在线观看免费一级片 | av电影免费在线 | 91mv.cool在线观看 | 青草视频免费观看 | 九九热在线精品视频 | 欧美日韩在线观看一区二区三区 | 欧美成年网站 | 国产青春久久久国产毛片 | 97视频人人澡人人爽 | 日韩最新中文字幕 | 亚洲精品久久久久中文字幕二区 | 天天射天天操天天 | 国产另类av | 久久香蕉影视 | a久久免费视频 | 久久久久久久久久久久久国产精品 | 日本黄色大片免费 | 在线观看国产www | 久久久国产电影 | 久久这里精品视频 | 一区二区三区电影在线播 | 天天插日日射 | 国产精品一区二区吃奶在线观看 | 久久久免费视频播放 | 亚洲四虎在线 | 草久久久久久久 | 夜夜干夜夜 | 香蕉视频最新网址 | 中文字幕国语官网在线视频 | 亚洲91精品| 99激情网| 91精品网站 | 久久久久久久久久久影视 | 国产成人精品免费在线观看 | 国产精品嫩草影视久久久 | 日韩二三区| 日本动漫做毛片一区二区 | 黄色片视频免费 | 日本三级久久久 | 久久艹欧美 | 午夜精品久久久久久久久久久 | 欧美日韩一区二区三区不卡 | 国产精品美女久久久久久久久 | 97视频网站 | 国产精品女人久久久久久 | 91亚洲精品乱码久久久久久蜜桃 | 天堂av免费看| 国产精品不卡一区 | www久久精品 | 中文字幕国产一区二区 | 午夜国产一区 | 在线观看91精品视频 | 日韩综合在线观看 | 亚洲精品视频偷拍 | 日韩欧美在线中文字幕 | 在线天堂亚洲 | 丰满少妇一级 | 国产一级片免费播放 | 亚洲高清久久久 | 69人人| 国产免费久久av | 91av在线看| 狠狠狠干| 久草在线费播放视频 | 热九九精品 | 在线观看国产91 | 午夜av片| 激情综合五月天 | 久久精品欧美一区二区三区麻豆 | 天天干天天拍天天操天天拍 | 久久69精品 | 日韩av中文字幕在线 | 手机成人在线电影 | 免费在线观看日韩欧美 | 欧美精品免费一区二区 | 91一区二区在线 | 亚洲成人黄色 | 久久亚洲精品电影 | 国产日韩欧美在线看 | 一区二区三区四区五区在线 | 日p视频 | 麻豆影视网站 | 四虎永久精品在线 | 美女久久网站 | 国产视频一区在线免费观看 | 2019中文字幕第一页 | 国产一区二区在线免费观看 | 正在播放 久久 | 国产精品午夜免费福利视频 | av在线8 | 欧美国产日韩在线视频 | 亚洲精品456在线播放第一页 | 亚洲最大成人网4388xx | 久草久热| 国产高清视频网 | 久久国产三级 | 日操干| 97日日碰人人模人人澡分享吧 | 伊人春色电影网 | 亚洲经典视频 | 久草9视频 | 色成人亚洲 | 色激情五月 | 国产玖玖在线 | 涩涩色亚洲一区 | 午夜精品视频免费在线观看 | 婷婷网站天天婷婷网站 | 99久久精品国产免费看不卡 | 国产视频精品免费 | 欧美国产日韩一区二区三区 | 国产成人精品综合 | 精品久久久免费视频 | 免费福利在线观看 | 麻豆91视频 | 亚洲精品国偷拍自产在线观看 | 日日精品 | 97人人精品| 久久综合给合久久狠狠色 | 久久久91精品国产一区二区精品 | 五月婷婷久久丁香 | 国产精品96久久久久久吹潮 | 亚洲第一色 | 丁香久久综合 | 国产一区二区三区 在线 | 免费视频你懂的 | 欧美激情视频在线免费观看 | 毛片基地黄久久久久久天堂 | 国产专区在线播放 | 久久精品欧美 | 男女拍拍免费视频 | 久久久国产精品成人免费 | 天堂麻豆 | 日日干美女 | 激情综合久久 | 日韩av片免费在线观看 | 国产一区二区在线观看视频 | 99性视频| 久久社区视频 | 国产亚洲精品久久久久久久久久 | 中文字幕乱码亚洲精品一区 | 成人免费91 | av电影av在线 | 99r在线视频 | 亚洲综合色丁香婷婷六月图片 | 成人国产精品av | 国产a级精品 | 久久专区 | 久久天堂亚洲 | 久久精品男人的天堂 | 97色在线观看 | 97人人视频| 四川bbb搡bbb爽爽视频 | 中文字幕在线电影 | 国产精品国产三级国产aⅴ入口 | 天天插天天操天天干 | 伊人资源视频在线 | 亚洲激情p | 日韩精品不卡 | 免费三级a | 在线观看av免费 | 亚洲美女免费精品视频在线观看 | 亚洲国产日韩欧美 | 中文字幕日本在线观看 | 久色婷婷 | 中文字幕二区三区 | 日本三级不卡 | 亚州av免费 | 国产精品入口传媒 | 欧美午夜视频在线 | 182午夜在线观看 | 国产伦精品一区二区三区在线 | 色六月婷婷 | 欧美日韩一区二区三区视频 | 午夜av免费看 | 大型av综合网站 | 国产精品毛片久久久久久 | 久久精品免费看 | 狠狠狠狠狠干 | 成人国产精品一区二区 | 亚洲精品欧美成人 | 中文字幕免费高 | 国产精品一区二区久久国产 | 久久成年人 | 天天拍天天干 | 欧美日韩在线观看一区二区 | ,久久福利影视 | 国产午夜在线观看视频 | 久久96国产精品久久99漫画 | a级黄色片视频 | 国内精品在线观看视频 | 日本高清dvd | 婷婷在线视频观看 | 最近中文字幕免费av | 99精品在线视频观看 | 亚洲乱码精品久久久久 | 免费三级在线 | 狠狠操天天操 | 日本性xxxxx 亚洲精品午夜久久久 | 九九九九九九精品 | 精品一区免费 | 激情视频在线观看网址 | 久久视频免费看 | 中文字幕观看视频 | 超级碰碰碰视频 | 欧美日韩国产亚洲乱码字幕 | 国产精品 日本 | 国产精品一区在线播放 | 中文字幕a∨在线乱码免费看 | 欧美国产高清 | 一区二区三区国产欧美 | 精品婷婷 | 久久色网站 | 丁香九月激情 | 中文字幕亚洲精品在线观看 | 天天做日日做天天爽视频免费 | 亚洲欧美日韩国产一区二区 | 97色在线观看 | 欧美另类交在线观看 | 91黄色免费看 | 成人久久久精品国产乱码一区二区 | 国产黄色网 | 91精品在线观看视频 | 国产精品久久久视频 | a成人v | 国产成人精品在线 | 成人福利av| 国产一区高清在线观看 | 日韩一级黄色av | 欧美日韩另类视频 | 欧美日韩亚洲在线观看 | 国产福利久久 | 色香蕉在线视频 | 欧美成人xxxxx| 久久在线观看 | 欧美日韩国产在线观看 | 免费色av| 欧美激情视频久久 | 欧美作爱视频 | 97超碰免费 | 日本午夜在线观看 | 国产精品嫩草在线 | 日韩免费小视频 | 国产精品99久久久精品 | www.伊人色.com | 夜夜看av| 九九热精品在线 | 在线 欧美 日韩 | 成人一区影院 | 中文字幕在线观看一区二区三区 | 国产成人在线免费观看 | 久久午夜精品视频 | 免费男女羞羞的视频网站中文字幕 | 欧美黄色成人 | 99亚洲视频 | 欧美激情视频免费看 | 国产传媒一区在线 | 精品国产乱码久久久久久三级人 | 久久综合久久综合这里只有精品 | 日日天天干 | 免费观看一区 | 欧美日韩国产区 | 粉嫩av一区二区三区免费 | 国产精品久久久久久久久久白浆 | av免费播放| 亚洲视频久久久 | 国产中文自拍 | 国产精品日韩高清 | 西西444www高清大胆 | 不卡中文字幕av | 香蕉视频免费在线播放 | 精品国产一区二 | 99国产精品免费网站 | 日本黄色免费电影网站 | 97成人精品视频在线播放 | 伊人久久影视 | av成人在线网站 | 免费观看黄色12片一级视频 | 草在线视频 | 欧洲黄色片 | 色视频网站在线 | 国产精品视频免费在线观看 | 亚洲人成影院在线 | 91中文字幕在线播放 | 美女免费网站 | avlulu久久精品 | 国产小视频国产精品 | 99视频在线精品 | 久久午夜精品影院一区 | 欧美 亚洲 另类 激情 另类 | 中文字幕在线第一页 | 久久久午夜视频 | 狠狠色丁香久久婷婷综合_中 | 国产一二三在线视频 | 国产成人三级在线 | 在线观看黄网 | 日韩欧美精品在线观看视频 | 亚洲综合视频网 | 天天综合五月天 | 亚洲欧美国产精品18p | 麻豆视频在线播放 | 久久精品这里精品 | 日韩国产精品一区 | 日韩欧美高清在线观看 | 视频国产精品 | 久久91久久久久麻豆精品 | 成人黄大片 | 中文字幕免费不卡视频 | 人人爱夜夜操 | 国产精品国产三级国产aⅴ入口 | 久草青青在线观看 | 亚洲春色综合另类校园电影 | 丁香婷婷激情 | 久艹在线免费观看 | 一区二区久久久久 | 久久高清免费视频 | 天天操天天操天天操天天 | 亚洲欧美国内爽妇网 | 亚洲电影一区二区 | 欧美日韩免费一区二区 | 黄色av一级片 | 国产伦精品一区二区三区四区视频 | 久久大片网站 | 夜夜骑首页 | 天天爽人人爽夜夜爽 | 高清不卡一区二区在线 | 久久免费视频一区 | 亚洲国产精品电影在线观看 | 三级大片网站 | 成人在线免费av | 婷婷色中文字幕 | 国产精品白浆视频 | 亚洲精品一区中文字幕乱码 | 碰碰影院 | 亚洲国产精品小视频 | 精品日韩在线一区 | 97超碰人人干 | 国产日韩一区在线 | 色www免费视频 | 欧美一区三区四区 | 日韩在线视频观看 | 成人在线免费视频观看 | 成人h在线 | 91av超碰 | 成人av亚洲 | 狠狠地日 | 成年人免费av | 国产精品成人一区二区 | 欧美中文字幕久久 | 园产精品久久久久久久7电影 | 在线播放 亚洲 | 日本性生活一级片 | 久久精视频 | 亚洲精品国精品久久99热一 | 激情网在线视频 | 中文免费在线观看 | 久久午夜精品视频 | 欧美成年人在线视频 | 日日夜夜狠狠 | 在线视频18在线视频4k | 婷婷草| 超碰免费97| 欧美日韩中文另类 | 欧美日韩性 | 日韩字幕在线 | 国产日产高清dvd碟片 | 国产亚洲精品久久久久久网站 | www色综合 | 狠狠色狠狠色终合网 | 欧美成人按摩 | 成人av电影免费在线观看 | 爱射综合 | 狠狠做深爱婷婷综合一区 | 波多野结衣在线视频一区 | 日韩欧美一区二区三区视频 | 日本成址在线观看 | 丁香五婷| 亚洲成人av在线电影 | 亚洲国产三级在线观看 | 夜夜骑日日操 | 天天操操操操操 | 黄色av影院 | 欧美久久成人 | 亚洲精品在线观看免费 | 99免费在线视频 | 久久夜靖品 | 久久久精品久久 | 欧美国产视频在线 | 涩涩网站免费 | 在线观看免费观看在线91 | 美女福利视频网 | 99看视频在线观看 | 成人一级视频在线观看 | 青春草免费视频 | 欧美日韩国产一区二区在线观看 | 免费高清在线一区 | 女人高潮特级毛片 | 99精品黄色片免费大全 | 国产亚洲免费观看 | 亚洲精品国产第一综合99久久 | 在线精品亚洲 | 婷婷色六月天 | 最新久久免费视频 | 最近日本韩国中文字幕 | 亚洲视频456 | 在线亚洲人成电影网站色www | 97视频亚洲 | 国产精品婷婷午夜在线观看 | 久久夜色精品国产欧美一区麻豆 | 美女网站在线看 | 亚洲精品乱码久久 | 国产黄色精品在线 | 久久久久久久久黄色 | 91av播放| 中文在线免费一区三区 | 欧美日韩激情网 | 日韩r级电影在线观看 | 99色网站| 日韩欧美综合视频 | 中文字幕国产一区二区 | 在线电影中文字幕 | 亚洲高清视频在线 | 成人四虎 | 九九免费在线观看 | 碰超在线97人人 | 91福利视频在线 | 国产黄在线 | 国产中文自拍 | 免费h漫在线观看 | 国产黄a三级 | 色播99| 中文字幕一区二区三区乱码不卡 | 亚洲国产成人精品久久 | 久久99久久99精品中文字幕 | 国产成人精品一区二区三区免费 | 免费在线观看日韩 | 五月婷婷在线观看视频 | 在线免费观看视频一区 | 久久综合九色综合久久久精品综合 | 日韩av电影国产 | 国产香蕉视频在线播放 | 国产精品二区在线 | 五月天激情综合 | 欧美午夜精品久久久久久浪潮 | 国产一区二区在线观看免费 | 蜜臀久久99静品久久久久久 | 久久综合久久综合九色 | 天天操天天操天天干 | 久久伦理网 | 四虎国产精品成人免费影视 | 一区二区三区在线观看免费视频 | 中文字幕在线播放第一页 | 久久久久二区 | 女人高潮一级片 | 日韩欧美在线不卡 | av免费观看在线 | 久久精品—区二区三区 | 天天干视频在线 | 精品一二三四五区 | 国产在线观看av | 久久午夜鲁丝片 | 欧美在线18 | 久久夜色电影 | 欧美粗又大 | 欧美成年黄网站色视频 | 成人午夜精品福利免费 | 中文字幕在线看视频国产中文版 | 91在线免费观看网站 | 日本精品一区二区三区在线播放视频 | 色视频在线 | 一二三区av| 看片网站黄 | 黄色精品一区二区 | 成年人免费在线播放 | 日日夜夜免费精品视频 | 亚洲影院色 | 特黄特色特刺激视频免费播放 | 成人性生交大片免费看中文网站 | 四虎影视成人永久免费观看视频 | 国产r级在线观看 | 国产在线中文 | 国产精品久久久久久久99 | 缴情综合网五月天 | 九九久久久久99精品 | 亚洲精品国产欧美在线观看 | 欧美精品在线一区二区 | 久久在线免费观看 | 精品免费久久久久 | 久久理论影院 | 蜜臀久久99静品久久久久久 | 日韩色综合 | 婷婷亚洲综合五月天小说 | 日韩欧美视频二区 | 日韩黄色软件 | 日本 在线 视频 中文 有码 | av高清不卡 | 91日韩精品视频 | 特级黄色片免费看 | 最近中文字幕免费av | 欧美日韩精品二区第二页 | 中文字幕在线不卡国产视频 | 婷婷综合| 2020天天干夜夜爽 | 视频1区2区| 久久久免费看视频 | 九九九电影免费看 | 亚洲精选视频在线 | 亚洲资源在线 | 中文字幕一区av | 蜜桃视频精品 | 亚洲国产影院av久久久久 | www最近高清中文国语在线观看 |