returnfabs(xmult(p,l.a,l.b))/distance(l.a,l.b);
}
double disptoseg(point p,point l1,pointl2){
pointt=p;
t.x=l1.y-l2.y,t.y=l2.x-l1.x;
if(xmult(l1,t,p)*xmult(l2,t,p)>eps)
returndistance(p,l1)<distance(p,l2)?distance(p,l1):distance(p,l2);
returnfabs(xmult(p,l1,l2))/distance(l1,l2);
}
point rotate(point v,point p,doubleangle,double scale){
pointret=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.yv.y*p.x;
returnret;
}
#include <math.h>
struct point{double x,y;};
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,doublex2,double y2,double x0,double y0){
return(x1-x0)*(y2-y0)-(x2-x0)*(y1-y0);
}
double area_(point p1,pointp2,point p3){
returnfabs(xmult(p1,p2,p3))/2;
}
double area_(double x1,doubley1,double x2,double y2,double x3,double y3){
returnfabs(xmult(x1,y1,x2,y2,x3,y3))/2;
}
double area_(double a,doubleb,double c){
doubles=(abc)/2;
returnsqrt(s*(s-a)*(s-b)*(s-c));
}
double area_polygon(int n,point* p){
doubles1=0,s2=0;
inti;
for(i=0;i<n;i)
s1=p[(i1)%n].y*p[i].x,s2=p[(i1)%n].y*p[(i2)%n].x;
returnfabs(s1-s2)/2;
}
#include <math.h>
const double pi=acos(-1);
//返回两点所在大圆劣弧对应圆心角,0<=angle<=pi
double angle(double lng1,double lat1,doublelng2,double lat2){
doubledlng=fabs(lng1-lng2)*pi/180;
while(dlng>=pipi)
dlng-=pipi;
if(dlng>pi)
dlng=pipi-dlng;
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-34960-29.html
把市值抬上天
才是最明智者