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

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

?? 浮點函數.txt

?? 對參加ACM競賽非常有用的幾個ACM答題模板(數論
?? TXT
字號:
//浮點幾何函數庫
#include <math.h>
#define eps 1e-8
#define zero(x) (((x)>0?(x):-(x))<eps)
struct point{double x,y;};
struct line{point a,b;};

//計算cross product (P1-P0)x(P2-P0)
double xmult(point p1,point p2,point p0){
	return (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y);
}
double xmult(double x1,double y1,double x2,double y2,double x0,double y0){
	return (x1-x0)*(y2-y0)-(x2-x0)*(y1-y0);
}

//計算dot product (P1-P0).(P2-P0)
double dmult(point p1,point p2,point p0){
	return (p1.x-p0.x)*(p2.x-p0.x)+(p1.y-p0.y)*(p2.y-p0.y);
}
double dmult(double x1,double y1,double x2,double y2,double x0,double y0){
	return (x1-x0)*(x2-x0)+(y1-y0)*(y2-y0);
}

//兩點距離
double distance(point p1,point p2){
	return sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
}
double distance(double x1,double y1,double x2,double y2){
	return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}

//判三點共線
int dots_inline(point p1,point p2,point p3){
	return zero(xmult(p1,p2,p3));
}
int dots_inline(double x1,double y1,double x2,double y2,double x3,double y3){
	return zero(xmult(x1,y1,x2,y2,x3,y3));
}

//判點是否在線段上,包括端點
int dot_online_in(point p,line l){
	return zero(xmult(p,l.a,l.b))&&(l.a.x-p.x)*(l.b.x-p.x)<eps&&(l.a.y-p.y)*(l.b.y-p.y)<eps;
}
int dot_online_in(point p,point l1,point l2){
	return zero(xmult(p,l1,l2))&&(l1.x-p.x)*(l2.x-p.x)<eps&&(l1.y-p.y)*(l2.y-p.y)<eps;
}
int dot_online_in(double x,double y,double x1,double y1,double x2,double y2){
	return zero(xmult(x,y,x1,y1,x2,y2))&&(x1-x)*(x2-x)<eps&&(y1-y)*(y2-y)<eps;
}

//判點是否在線段上,不包括端點
int dot_online_ex(point p,line l){
	return dot_online_in(p,l)&&(!zero(p.x-l.a.x)||!zero(p.y-l.a.y))&&(!zero(p.x-l.b.x)||!zero(p.y-l.b.y));
}
int dot_online_ex(point p,point l1,point l2){
	return dot_online_in(p,l1,l2)&&(!zero(p.x-l1.x)||!zero(p.y-l1.y))&&(!zero(p.x-l2.x)||!zero(p.y-l2.y));
}
int dot_online_ex(double x,double y,double x1,double y1,double x2,double y2){
	return dot_online_in(x,y,x1,y1,x2,y2)&&(!zero(x-x1)||!zero(y-y1))&&(!zero(x-x2)||!zero(y-y2));
}

//判兩點在線段同側,點在線段上返回0
int same_side(point p1,point p2,line l){
	return xmult(l.a,p1,l.b)*xmult(l.a,p2,l.b)>eps;
}
int same_side(point p1,point p2,point l1,point l2){
	return xmult(l1,p1,l2)*xmult(l1,p2,l2)>eps;
}

//判兩點在線段異側,點在線段上返回0
int opposite_side(point p1,point p2,line l){
	return xmult(l.a,p1,l.b)*xmult(l.a,p2,l.b)<-eps;
}
int opposite_side(point p1,point p2,point l1,point l2){
	return xmult(l1,p1,l2)*xmult(l1,p2,l2)<-eps;
}

// 點關于直線的對稱點 // by lyt
// 缺點:用了斜率
// 也可以利用"點到直線上的最近點"來做,避免使用斜率。
point symmetric_point(point p1, point l1, point l2) {
  point ret;  
  if (l1.x > l2.x - eps && l1.x < l2.x + eps) {
    ret.x = (2 * l1.x - p1.x);
	ret.y = p1.y;
  } else {
    double k = (l1.y - l2.y ) / (l1.x - l2.x);
    ret.x = (2*k*k*l1.x + 2*k*p1.y - 2*k*l1.y - k*k*p1.x + p1.x) / (1 + k*k);
    ret.y = p1.y - (ret.x - p1.x ) / k;
  }
  return ret;
}

//判兩直線平行
int parallel(line u,line v){
	return zero((u.a.x-u.b.x)*(v.a.y-v.b.y)-(v.a.x-v.b.x)*(u.a.y-u.b.y));
}
int parallel(point u1,point u2,point v1,point v2){
	return zero((u1.x-u2.x)*(v1.y-v2.y)-(v1.x-v2.x)*(u1.y-u2.y));
}

//判兩直線垂直
int perpendicular(line u,line v){
	return zero((u.a.x-u.b.x)*(v.a.x-v.b.x)+(u.a.y-u.b.y)*(v.a.y-v.b.y));
}
int perpendicular(point u1,point u2,point v1,point v2){
	return zero((u1.x-u2.x)*(v1.x-v2.x)+(u1.y-u2.y)*(v1.y-v2.y));
}

//判兩線段相交,包括端點和部分重合
int intersect_in(line u,line v){
	if (!dots_inline(u.a,u.b,v.a)||!dots_inline(u.a,u.b,v.b))
		return !same_side(u.a,u.b,v)&&!same_side(v.a,v.b,u);
	return dot_online_in(u.a,v)||dot_online_in(u.b,v)||dot_online_in(v.a,u)||dot_online_in(v.b,u);
}
int intersect_in(point u1,point u2,point v1,point v2){
	if (!dots_inline(u1,u2,v1)||!dots_inline(u1,u2,v2))
		return !same_side(u1,u2,v1,v2)&&!same_side(v1,v2,u1,u2);
	return dot_online_in(u1,v1,v2)||dot_online_in(u2,v1,v2)||dot_online_in(v1,u1,u2)||dot_online_in(v2,u1,u2);
}

//判兩線段相交,不包括端點和部分重合
int intersect_ex(line u,line v){
	return opposite_side(u.a,u.b,v)&&opposite_side(v.a,v.b,u);
}
int intersect_ex(point u1,point u2,point v1,point v2){
	return opposite_side(u1,u2,v1,v2)&&opposite_side(v1,v2,u1,u2);
}

//計算兩直線交點,注意事先判斷直線是否平行!
//線段交點請另外判線段相交(同時還是要判斷是否平行!)
point intersection(line u,line v){
	point ret=u.a;
	double t=((u.a.x-v.a.x)*(v.a.y-v.b.y)-(u.a.y-v.a.y)*(v.a.x-v.b.x))
			/((u.a.x-u.b.x)*(v.a.y-v.b.y)-(u.a.y-u.b.y)*(v.a.x-v.b.x));
	ret.x+=(u.b.x-u.a.x)*t;
	ret.y+=(u.b.y-u.a.y)*t;
	return ret;
}
point intersection(point u1,point u2,point v1,point v2){
	point ret=u1;
	double t=((u1.x-v1.x)*(v1.y-v2.y)-(u1.y-v1.y)*(v1.x-v2.x))
			/((u1.x-u2.x)*(v1.y-v2.y)-(u1.y-u2.y)*(v1.x-v2.x));
	ret.x+=(u2.x-u1.x)*t;
	ret.y+=(u2.y-u1.y)*t;
	return ret;
}

//點到直線上的最近點
point ptoline(point p,line l){
	point t=p;
	t.x+=l.a.y-l.b.y,t.y+=l.b.x-l.a.x;
	return intersection(p,t,l.a,l.b);
}
point ptoline(point p,point l1,point l2){
	point t=p;
	t.x+=l1.y-l2.y,t.y+=l2.x-l1.x;
	return intersection(p,t,l1,l2);
}

//點到直線距離
double disptoline(point p,line l){
	return fabs(xmult(p,l.a,l.b))/distance(l.a,l.b);
}
double disptoline(point p,point l1,point l2){
	return fabs(xmult(p,l1,l2))/distance(l1,l2);
}
double disptoline(double x,double y,double x1,double y1,double x2,double y2){
	return fabs(xmult(x,y,x1,y1,x2,y2))/distance(x1,y1,x2,y2);
}

//點到線段上的最近點
point ptoseg(point p,line l){
	point t=p;
	t.x+=l.a.y-l.b.y,t.y+=l.b.x-l.a.x;
	if (xmult(l.a,t,p)*xmult(l.b,t,p)>eps)
		return distance(p,l.a)<distance(p,l.b)?l.a:l.b;
	return intersection(p,t,l.a,l.b);
}
point ptoseg(point p,point l1,point l2){
	point t=p;
	t.x+=l1.y-l2.y,t.y+=l2.x-l1.x;
	if (xmult(l1,t,p)*xmult(l2,t,p)>eps)
		return distance(p,l1)<distance(p,l2)?l1:l2;
	return intersection(p,t,l1,l2);
}

//點到線段距離
double disptoseg(point p,line l){
	point t=p;
	t.x+=l.a.y-l.b.y,t.y+=l.b.x-l.a.x;
	if (xmult(l.a,t,p)*xmult(l.b,t,p)>eps)
		return distance(p,l.a)<distance(p,l.b)?distance(p,l.a):distance(p,l.b);
	return fabs(xmult(p,l.a,l.b))/distance(l.a,l.b);
}
double disptoseg(point p,point l1,point l2){
	point t=p;
	t.x+=l1.y-l2.y,t.y+=l2.x-l1.x;
	if (xmult(l1,t,p)*xmult(l2,t,p)>eps)
		return distance(p,l1)<distance(p,l2)?distance(p,l1):distance(p,l2);
	return fabs(xmult(p,l1,l2))/distance(l1,l2);
}

//矢量V以P為頂點逆時針旋轉angle并放大scale倍
point rotate(point v,point p,double angle,double scale){
	point ret=p;
	v.x-=p.x,v.y-=p.y;
	p.x=scale*cos(angle);
	p.y=scale*sin(angle);
	ret.x+=v.x*p.x-v.y*p.y;
	ret.y+=v.x*p.y+v.y*p.x;
	return ret;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品国产久精国产爱| 亚洲欧洲中文日韩久久av乱码| 亚洲小说欧美激情另类| 91福利在线导航| 亚洲五码中文字幕| 日韩天堂在线观看| 国产电影一区二区三区| 亚洲欧洲日产国产综合网| 91亚洲精品一区二区乱码| 一二三区精品视频| 日韩欧美精品三级| 成人精品国产一区二区4080| 中文字幕中文在线不卡住| 欧美性一级生活| 捆绑紧缚一区二区三区视频| 国产精品乱码一区二区三区软件| 91免费视频大全| 蜜臀99久久精品久久久久久软件| 久久久久久久免费视频了| 99久久精品国产毛片| 性欧美大战久久久久久久久| ww亚洲ww在线观看国产| 色婷婷综合久色| 麻豆精品久久精品色综合| 国产日韩欧美电影| 欧美日韩成人综合天天影院 | 国产三区在线成人av| www.亚洲免费av| 日本欧美一区二区在线观看| 久久久亚洲精品一区二区三区 | 午夜激情久久久| 欧美电影精品一区二区| 91啦中文在线观看| 久久99蜜桃精品| 亚洲码国产岛国毛片在线| 精品国产伦理网| 欧美在线观看一区| 亚洲444eee在线观看| 欧美刺激午夜性久久久久久久| jlzzjlzz国产精品久久| 九九**精品视频免费播放| 一区二区三区高清| 中文字幕av资源一区| 日韩一区二区在线看| 一本大道久久精品懂色aⅴ| 国产尤物一区二区在线| 午夜精品福利一区二区蜜股av| 国产精品每日更新| 日韩免费一区二区三区在线播放| 色噜噜久久综合| 成人理论电影网| 国产麻豆91精品| 日韩**一区毛片| 亚洲午夜精品在线| 亚洲男人的天堂一区二区| 国产女主播一区| 337p日本欧洲亚洲大胆色噜噜| 欧美系列日韩一区| 91福利国产成人精品照片| www.亚洲精品| 国产一区二区美女诱惑| 亚洲国产一区视频| 亚洲视频免费在线观看| 久久久久久亚洲综合影院红桃| 欧美精三区欧美精三区| 欧美最猛性xxxxx直播| 91亚洲国产成人精品一区二三| 国产精品99久久久久久似苏梦涵| 精品一区二区三区影院在线午夜 | 成人激情综合网站| 国产精品一区免费视频| 国产一区欧美一区| 韩国成人精品a∨在线观看| 美国毛片一区二区| 免费观看日韩电影| 精品一区二区三区免费观看| 精品一区二区三区在线视频| 日本视频一区二区| 日韩二区三区在线观看| 欧美aaa在线| 麻豆精品在线观看| 国产精品性做久久久久久| 国产精品综合在线视频| 国产成人精品午夜视频免费| 国产69精品久久777的优势| 波多野结衣中文字幕一区二区三区| 成人做爰69片免费看网站| av一区二区久久| 色拍拍在线精品视频8848| 欧美午夜精品一区二区蜜桃| 欧美肥妇bbw| 久久亚洲精精品中文字幕早川悠里 | 色综合久久天天| proumb性欧美在线观看| 91丨九色丨国产丨porny| 91蜜桃网址入口| 欧洲激情一区二区| 欧美肥妇free| www成人在线观看| 国产精品网站在线播放| 亚洲人亚洲人成电影网站色| 亚洲一区影音先锋| 奇米888四色在线精品| 国产综合久久久久久鬼色| 成人美女在线视频| 91精彩视频在线| 日韩一卡二卡三卡四卡| 国产性天天综合网| 一区二区三区色| 免费成人在线网站| 成人福利视频在线| 精品视频1区2区| 精品国产一区a| 亚洲欧美日韩国产手机在线| 视频一区欧美日韩| 国产高清一区日本| 欧美日韩亚洲综合一区| 精品美女被调教视频大全网站| 欧美国产激情二区三区| 亚洲午夜在线观看视频在线| 国内精品不卡在线| 色香蕉成人二区免费| 欧美sm美女调教| 亚洲欧美一区二区三区国产精品| 日韩av电影一区| 成人h动漫精品| 日韩欧美中文字幕公布| 中文字幕五月欧美| 毛片一区二区三区| 色综合久久天天| 久久久久久久久99精品| 亚洲一区二区欧美| 福利一区二区在线观看| 911国产精品| 亚洲免费观看视频| 国产一区在线看| 欧美午夜在线一二页| 欧美国产激情二区三区| 视频一区欧美日韩| 日本韩国欧美三级| 欧美激情一区不卡| 激情综合网av| 欧美精品v国产精品v日韩精品| 国产精品免费人成网站| 久久99日本精品| 欧美日本韩国一区| 一区二区日韩电影| 成人va在线观看| 国产色爱av资源综合区| 久久91精品国产91久久小草| 欧美熟乱第一页| 亚洲欧美区自拍先锋| 国产91在线观看丝袜| 精品乱码亚洲一区二区不卡| 五月天精品一区二区三区| 在线免费观看日本欧美| 一区精品在线播放| 成人av在线一区二区三区| 国产亚洲一区二区三区| 国产综合久久久久影院| 日韩欧美一区二区免费| 青青草97国产精品免费观看无弹窗版| 在线影院国内精品| 亚洲三级在线看| 92国产精品观看| 亚洲欧美日本在线| 色婷婷激情综合| 亚洲精品福利视频网站| 91激情五月电影| 一区二区三区四区国产精品| 91视频一区二区三区| 亚洲欧美一区二区三区国产精品 | 成人精品视频网站| 久久天堂av综合合色蜜桃网| 精品一区二区三区的国产在线播放| 这里只有精品免费| 奇米影视7777精品一区二区| 日韩一区二区麻豆国产| 美女www一区二区| 久久天天做天天爱综合色| 国产成人精品午夜视频免费| 欧美激情综合五月色丁香 | 日韩电影免费在线观看网站| 91精品国产91久久综合桃花| 麻豆国产精品一区二区三区| 久久先锋影音av鲁色资源| 成人性生交大片| 亚洲同性同志一二三专区| 在线区一区二视频| 日本不卡高清视频| 久久久久久久性| 99久久国产综合精品麻豆| 亚洲国产一区二区a毛片| 日韩欧美国产综合在线一区二区三区| 麻豆国产精品一区二区三区| 欧美极品xxx| 在线观看免费视频综合| 另类小说图片综合网| 中文字幕av一区二区三区免费看 | 欧美成人精品二区三区99精品|