<p>首先是我超的模版http://blog.csdn.net/crescent__moon/article/details/9564511</p><p>包括运算符重载,点积叉积等内容。</p><p>后面是补充。</p><p>#include <iostream>  </p>#include <math.h>
#include <iomanip>  #define eps 1e-8
#define zero(x) (((x)>0?(x):-(x))<eps)  #define pi acos(-1.0)  struct point
{  double x, y;
};  struct line
{  point a, b;
};
struct point3
{  double x, y, z;
};
struct line3
{  point3 a, b;
};
struct plane3
{  point3 a, b, c;
};  //计算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);
}
//计算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);
}
//计算cross product U . V
point3 xmult(point3 u, point3 v)
{  point3 ret;  ret.x = u.y*v.z - v.y*u.z;  ret.y = u.z*v.x - u.x*v.z;  ret.z = u.x*v.y - u.y*v.x;  return ret;
}
//计算dot product U . V
double dmult(point3 u, point3 v)
{  return u.x*v.x + u.y*v.y + u.z*v.z;
}  //两点距离
double distance(point p1, point p2)
{  return sqrt((p1.x - p2.x)*(p1.x - p2.x) + (p1.y - p2.y)*(p1.y - p2.y));
}  //判三点共线
bool dots_inline(point p1, point p2, point p3)
{  return zero(xmult(p1, p2, p3));
}  //判点是否在线段上,包括端点
bool 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;
}  //判点是否在线段上,不包括端点
bool 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));
}  //判两点在线段同侧,点在线段上返回0
bool same_side(point p1, point p2, line l)
{  return xmult(l.a, p1, l.b)*xmult(l.a, p2, l.b) > eps;
}  //判两点在线段异侧,点在线段上返回0
bool opposite_side(point p1, point p2, line l)
{  return xmult(l.a, p1, l.b)*xmult(l.a, p2, l.b) < -eps;
}  //判两直线平行
bool 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));
}  //判两直线垂直
bool 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));
}  //判两线段相交,包括端点和部分重合
bool 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);
}  //判两线段相交,不包括端点和部分重合
bool intersect_ex(line u, line v)
{  return opposite_side(u.a, u.b, v) && opposite_side(v.a, v.b, u);
}  //计算两直线交点,注意事先判断直线是否平行!
//线段交点请另外判线段相交(同时还是要判断是否平行!)
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);
}  //点到直线距离
double disptoline(point p, line l)
{  return fabs(xmult(p, l.a, l.b)) / distance(l.a, l.b);
}  //点到线段上的最近点
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);
}  //点到线段距离
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);
}  //矢量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;
}  //计算三角形面积,输入三顶点
double area_triangle(point p1, point p2, point p3)
{  return fabs(xmult(p1, p2, p3)) / 2;
}  //计算三角形面积,输入三边长
double area_triangle(double a, double b, double c)
{  double s = (a + b + c) / 2;  return sqrt(s*(s - a)*(s - b)*(s - c));
}  //计算多边形面积,顶点按顺时针或逆时针给出
double area_polygon(int n, point* p)
{  double s1 = 0, s2 = 0;  int i;  for (i = 0; i < n; i++)  s1 += p[(i + 1)%n].y*p[i].x, s2 += p[(i + 1)%n].y*p[(i + 2)%n].x;  return fabs(s1 - s2) / 2;
}  //计算圆心角lat 表示纬度,-90<=w<=90,lng 表示经度
//返回两点所在大圆劣弧对应圆心角,0<=angle<=pi
double angle(double lng1, double lat1, double lng2, double lat2)
{  double dlng = fabs(lng1 - lng2)*pi / 180;  while (dlng >= pi + pi)  dlng -= pi + pi;  if (dlng > pi)  dlng = pi + pi - dlng;  lat1 *= pi / 180, lat2 *= pi / 180;  return acos(cos(lat1)*cos(lat2)*cos(dlng) + sin(lat1)*sin(lat2));
}  //计算距离,r 为球半径
double line_dist(double r, double lng1, double lat1, double lng2, double lat2)
{  double dlng = fabs(lng1 - lng2)*pi / 180;  while (dlng >= pi + pi)  dlng -= pi + pi;  if (dlng > pi)  dlng = pi + pi - dlng;  lat1 *= pi / 180, lat2 *= pi / 180;  return r*sqrt(2 - 2 * (cos(lat1)*cos(lat2)*cos(dlng) + sin(lat1)*sin(lat2)));
}  //计算球面距离,r 为球半径
inline double sphere_dist(double r, double lng1, double lat1, double lng2, double lat2)
{  return r*angle(lng1, lat1, lng2, lat2);
}  //外心
point circumcenter(point a, point b, point c)
{  line u, v;  u.a.x = (a.x + b.x) / 2;  u.a.y = (a.y + b.y) / 2;  u.b.x = u.a.x - a.y + b.y;  u.b.y = u.a.y + a.x - b.x;  v.a.x = (a.x + c.x) / 2;  v.a.y = (a.y + c.y) / 2;  v.b.x = v.a.x - a.y + c.y;  v.b.y = v.a.y + a.x - c.x;  return intersection(u, v);
}  //内心
point incenter(point a, point b, point c)
{  line u, v;  double m, n;  u.a = a;  m = atan2(b.y - a.y, b.x - a.x);  n = atan2(c.y - a.y, c.x - a.x);  u.b.x = u.a.x + cos((m + n) / 2);  u.b.y = u.a.y + sin((m + n) / 2);  v.a = b;  m = atan2(a.y - b.y, a.x - b.x);  n = atan2(c.y - b.y, c.x - b.x);  v.b.x = v.a.x + cos((m + n) / 2);  v.b.y = v.a.y + sin((m + n) / 2);  return intersection(u, v);
}  //垂心
point perpencenter(point a, point b, point c)
{  line u, v;  u.a = c;  u.b.x = u.a.x - a.y + b.y;  u.b.y = u.a.y + a.x - b.x;  v.a = b;  v.b.x = v.a.x - a.y + c.y;  v.b.y = v.a.y + a.x - c.x;  return intersection(u, v);
}
//重心
//到三角形三顶点距离的平方和最小的点
//三角形内到三边距离之积最大的点
point barycenter(point a, point b, point c)
{  line u, v;  u.a.x = (a.x + b.x) / 2;  u.a.y = (a.y + b.y) / 2;  u.b = c;  v.a.x = (a.x + c.x) / 2;  v.a.y = (a.y + c.y) / 2;  v.b = b;  return intersection(u, v);
}  //费马点
//到三角形三顶点距离之和最小的点
point fermentpoint(point a, point b, point c)
{  point u, v;  double step = fabs(a.x) + fabs(a.y) + fabs(b.x) + fabs(b.y) + fabs(c.x) + fabs(c.y);  int i, j, k;  u.x = (a.x + b.x + c.x) / 3;  u.y = (a.y + b.y + c.y) / 3;  while (step > 1e-10)  {  for (k = 0; k < 10; step /= 2, k++)  {  for (i = -1; i <= 1; i++)  {  for (j = -1; j <= 1; j++)  {  v.x = u.x + step*i;  v.y = u.y + step*j;  if (distance(u, a) + distance(u, b) + distance(u, c) > distance(v, a) + distance(v, b) + distance(v, c))  {  u = v;  }  }  }  }  }  return u;
}  //矢量差 U - V
point3 subt(point3 u, point3 v)
{  point3 ret;  ret.x = u.x - v.x;  ret.y = u.y - v.y;  ret.z = u.z - v.z;  return ret;
}  ///三维///
//取平面法向量
point3 pvec(plane3 s)
{  return xmult(subt(s.a, s.b), subt(s.b, s.c));
}
point3 pvec(point3 s1, point3 s2, point3 s3)
{  return xmult(subt(s1, s2), subt(s2, s3));
}  //两点距离,单参数取向量大小
double distance(point3 p1, point3 p2)
{  return sqrt((p1.x - p2.x)*(p1.x - p2.x) + (p1.y - p2.y)*(p1.y - p2.y) + (p1.z - p2.z)*(p1.z - p2.z));
}  //向量大小
double vlen(point3 p)
{  return sqrt(p.x*p.x + p.y*p.y + p.z*p.z);
}  //判三点共线
bool dots_inline(point3 p1, point3 p2, point3 p3)
{  return vlen(xmult(subt(p1, p2), subt(p2, p3))) < eps;
}  //判四点共面
bool dots_onplane(point3 a, point3 b, point3 c, point3 d)
{  return zero(dmult(pvec(a, b, c), subt(d, a)));
}  //判点是否在线段上,包括端点和共线
bool dot_online_in(point3 p, line3 l)
{  return zero(vlen(xmult(subt(p, l.a), subt(p, l.b)))) && (l.a.x - p.x)*(l.b.x - p.x) < eps && (l.a.y - p.y)*(l.b.y - p.y) < eps && (l.a.z - p.z)*(l.b.z - p.z) < eps;
}  //判点是否在线段上,不包括端点
bool dot_online_ex(point3 p, line3 l)
{  return dot_online_in(p, l) && (!zero(p.x - l.a.x) || !zero(p.y - l.a.y) || !zero(p.z - l.a.z)) && (!zero(p.x - l.b.x) || !zero(p.y - l.b.y) || !zero(p.z - l.b.z));
}  //判点是否在空间三角形上,包括边界,三点共线无意义
bool dot_inplane_in(point3 p, plane3 s)
{  return zero(vlen(xmult(subt(s.a, s.b), subt(s.a, s.c))) - vlen(xmult(subt(p, s.a), subt(p, s.b))) - vlen(xmult(subt(p, s.b), subt(p, s.c))) - vlen(xmult(subt(p, s.c), subt(p, s.a))));
}  //判点是否在空间三角形上,不包括边界,三点共线无意义
bool dot_inplane_ex(point3 p, plane3 s)
{  return dot_inplane_in(p, s) && vlen(xmult(subt(p, s.a), subt(p, s.b))) > eps && vlen(xmult(subt(p, s.b), subt(p, s.c))) > eps && vlen(xmult(subt(p, s.c), subt(p, s.a))) > eps;
}  //判两点在线段同侧,点在线段上返回0,不共面无意义
bool same_side(point3 p1, point3 p2, line3 l)
{  return dmult(xmult(subt(l.a, l.b), subt(p1, l.b)), xmult(subt(l.a, l.b), subt(p2, l.b))) > eps;
}  //判两点在线段异侧,点在线段上返回0,不共面无意义
bool opposite_side(point3 p1, point3 p2, line3 l)
{  return dmult(xmult(subt(l.a, l.b), subt(p1, l.b)), xmult(subt(l.a, l.b), subt(p2, l.b))) < -eps;
}  //判两点在平面同侧,点在平面上返回0
bool same_side(point3 p1, point3 p2, plane3 s)
{  return dmult(pvec(s), subt(p1, s.a))*dmult(pvec(s), subt(p2, s.a)) > eps;
}
bool same_side(point3 p1, point3 p2, point3 s1, point3 s2, point3 s3)
{  return dmult(pvec(s1, s2, s3), subt(p1, s1))*dmult(pvec(s1, s2, s3), subt(p2, s1)) > eps;
}  //判两点在平面异侧,点在平面上返回0
bool opposite_side(point3 p1, point3 p2, plane3 s)
{  return dmult(pvec(s), subt(p1, s.a))*dmult(pvec(s), subt(p2, s.a)) < -eps;
}
bool opposite_side(point3 p1, point3 p2, point3 s1, point3 s2, point3 s3)
{  return dmult(pvec(s1, s2, s3), subt(p1, s1))*dmult(pvec(s1, s2, s3), subt(p2, s1)) < -eps;
}
//判两直线平行
bool parallel(line3 u, line3 v)
{  return vlen(xmult(subt(u.a, u.b), subt(v.a, v.b))) < eps;
}  //判两平面平行
bool parallel(plane3 u, plane3 v)
{  return vlen(xmult(pvec(u), pvec(v))) < eps;
}  //判直线与平面平行
bool parallel(line3 l, plane3 s)
{  return zero(dmult(subt(l.a, l.b), pvec(s)));
}
bool parallel(point3 l1, point3 l2, point3 s1, point3 s2, point3 s3)
{  return zero(dmult(subt(l1, l2), pvec(s1, s2, s3)));
}  //判两直线垂直
bool perpendicular(line3 u, line3 v)
{  return zero(dmult(subt(u.a, u.b), subt(v.a, v.b)));
}  //判两平面垂直
bool perpendicular(plane3 u, plane3 v)
{  return zero(dmult(pvec(u), pvec(v)));
}  //判直线与平面平行
bool perpendicular(line3 l, plane3 s)
{  return vlen(xmult(subt(l.a, l.b), pvec(s))) < eps;
}  //判两线段相交,包括端点和部分重合
bool intersect_in(line3 u, line3 v)
{  if (!dots_onplane(u.a, u.b, v.a, v.b))  return 0;  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);
}  //判两线段相交,不包括端点和部分重合
bool intersect_ex(line3 u, line3 v)
{  return dots_onplane(u.a, u.b, v.a, v.b) && opposite_side(u.a, u.b, v) && opposite_side(v.a, v.b, u);
}  //判线段与空间三角形相交,包括交于边界和(部分)包含
bool intersect_in(line3 l, plane3 s)
{  return !same_side(l.a, l.b, s) && !same_side(s.a, s.b, l.a, l.b, s.c) && !same_side(s.b, s.c, l.a, l.b, s.a) && !same_side(s.c, s.a, l.a, l.b, s.b);
}  //判线段与空间三角形相交,不包括交于边界和(部分)包含
bool intersect_ex(line3 l, plane3 s)
{  return opposite_side(l.a, l.b, s) && opposite_side(s.a, s.b, l.a, l.b, s.c) && opposite_side(s.b, s.c, l.a, l.b, s.a) && opposite_side(s.c, s.a, l.a, l.b, s.b);
}  //计算两直线交点,注意事先判断直线是否共面和平行!
//线段交点请另外判线段相交(同时还是要判断是否平行!)
point3 intersection(line3 u, line3 v)
{  point3 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;  ret.z += (u.b.z - u.a.z)*t;  return ret;
}  //计算直线与平面交点,注意事先判断是否平行,并保证三点不共线!
//线段和空间三角形交点请另外判断
point3 intersection(line3 l, plane3 s)
{  point3 ret = pvec(s);  double t = (ret.x*(s.a.x - l.a.x) + ret.y*(s.a.y - l.a.y) + ret.z*(s.a.z - l.a.z)) / (ret.x*(l.b.x - l.a.x) + ret.y*(l.b.y - l.a.y) + ret.z*(l.b.z - l.a.z));  ret.x = l.a.x + (l.b.x - l.a.x)*t;  ret.y = l.a.y + (l.b.y - l.a.y)*t;  ret.z = l.a.z + (l.b.z - l.a.z)*t;  return ret;
}
point3 intersection(point3 l1, point3 l2, point3 s1, point3 s2, point3 s3)
{  point3 ret = pvec(s1, s2, s3);  double t = (ret.x*(s1.x - l1.x) + ret.y*(s1.y - l1.y) + ret.z*(s1.z - l1.z)) /  (ret.x*(l2.x - l1.x) + ret.y*(l2.y - l1.y) + ret.z*(l2.z - l1.z));  ret.x = l1.x + (l2.x - l1.x)*t;  ret.y = l1.y + (l2.y - l1.y)*t;  ret.z = l1.z + (l2.z - l1.z)*t;  return ret;
}  //计算两平面交线,注意事先判断是否平行,并保证三点不共线!
line3 intersection(plane3 u, plane3 v)
{  line3 ret;  ret.a = parallel(v.a, v.b, u.a, u.b, u.c) ? intersection(v.b, v.c, u.a, u.b, u.c) : intersection(v.a, v.b, u.a, u.b, u.c);  ret.b = parallel(v.c, v.a, u.a, u.b, u.c) ? intersection(v.b, v.c, u.a, u.b, u.c) : intersection(v.c, v.a, u.a, u.b, u.c);  return ret;
}
line3 intersection(point3 u1, point3 u2, point3 u3, point3 v1, point3 v2, point3 v3)
{  line3 ret;  ret.a = parallel(v1, v2, u1, u2, u3) ? intersection(v2, v3, u1, u2, u3) : intersection(v1, v2, u1, u2, u3);  ret.b = parallel(v3, v1, u1, u2, u3) ? intersection(v2, v3, u1, u2, u3) : intersection(v3, v1, u1, u2, u3);  return ret;
}
//点到直线距离
double ptoline(point3 p, line3 l)
{  return vlen(xmult(subt(p, l.a), subt(l.b, l.a))) / distance(l.a, l.b);
}  //点到平面距离
double ptoplane(point3 p, plane3 s)
{  return fabs(dmult(pvec(s), subt(p, s.a))) / vlen(pvec(s));
}  //直线到直线距离
double linetoline(line3 u, line3 v)
{  point3 n = xmult(subt(u.a, u.b), subt(v.a, v.b));  return fabs(dmult(subt(u.a, v.a), n)) / vlen(n);
}  //两直线夹角cos 值
double angle_cos(line3 u, line3 v)
{  return dmult(subt(u.a, u.b), subt(v.a, v.b)) / vlen(subt(u.a, u.b)) / vlen(subt(v.a, v.b));
}  //两平面夹角cos 值
double angle_cos(plane3 u, plane3 v)
{  return dmult(pvec(u), pvec(v)) / vlen(pvec(u)) / vlen(pvec(v));
}  //直线平面夹角sin 值
double angle_sin(line3 l, plane3 s)
{  return dmult(subt(l.a, l.b), pvec(s)) / vlen(subt(l.a, l.b)) / vlen(pvec(s));
}  int main()
{  int t;  std::cin >> t;  std::cout << "INTERSECTING LINES OUTPUT" << std::endl;  while (t--)  {  line a, b;  std::cin >> a.a.x >> a.a.y >> a.b.x >> a.b.y >> b.a.x >> b.a.y >> b.b.x >> b.b.y;  if (xmult(a.a, a.b, b.a) == 0 && xmult(a.a, a.b, b.b) == 0)  {  std::cout << "LINE" << std::endl;  }  else if (parallel(a, b))  {  std::cout << "NONE" << std::endl;  }  else  {  point temp;  temp = intersection(a, b);  std::cout << std::fixed << std::setprecision(2) << "POINT" << ' ' << temp.x << ' ' << temp.y << std::endl;  }  }  std::cout << "END OF OUTPUT" << std::endl;
}  

几何问题。点线向量面积等模版。相关推荐

  1. Java黑皮书课后题第8章:*8.33(几何:多边形的子面积)一个具有四个顶点的凸多边形被分为4个三角形,编写一个程序,提示用户输入4个顶点的坐标,然后以升序显示四个三角形的面积

    *8.33(几何:多边形的子面积)一个具有四个顶点的凸多边形被分为4个三角形,编写一个程序,提示用户输入4个顶点的坐标,然后以升序显示四个三角形的面积 题目 题目描述与运行示例 破题 代码 题目 题目 ...

  2. 计算梯形面积的程序html,如何利用几何画板计算梯形的面积

    作为一种几何绘图软件,不仅可以利用几何画板绘制很多图形,还可以计算图形的面积.本文就向大家介绍如何利用几何画板计算梯形的面积. 1.绘制上底.打开几何画板,使用线段工具绘制线段AB.使用点工具,在线段 ...

  3. 怎么用几何画板制作线段式控制杆

    很多的数学老师在制作课件的时候往往会用到几何画板.它的功能非常强大,不论是平面的还是立体的,或是静态的还是动态的都可以制作.但是一些老师对于怎么用几何画板制作有很多的困惑.因此,我们制作了一系列的教程 ...

  4. 为什么CAD多段线没有面积属性或数值不对?快看过来!

    有些设计师小伙伴在CAD制图过程中,会遇到这样的一个问题:在CAD图纸中直接选取线条后用工具标出来的面积是实际面积的两倍,而且用CAD面积查询命令直接选择对象查不出面积,这是为什么呢?本文就和小编来给 ...

  5. 高数下-空间几何(一)-向量

    文章目录 一.向量的基本内容 向量即矢量,既有方向又有大小,比如物理量位移.速度.力 向量a⃗=b⃗\vec{a}=\vec{b}a=b意味着: a⃗,b⃗\vec{a},\vec{b}a,b方向相同 ...

  6. 零基础学图形学(2) 几何知识——点,向量,法向量

    内容: 1. 点,向量,法向量 2. 坐标系统 3. 点和向量的数学操作 4. 矩阵 5. 矩阵介绍 6. 点和向量变换 7. 行向量和列向量 8. 矩阵操作 9. 球坐标系和三角函数 10. 创建矩 ...

  7. 简单几何(圆与多边形公共面积) UVALive 7072 Signal Interference (14广州D)

    题目传送门 题意:一个多边形,A点和B点,满足PB <= k * PA的P的范围与多边形的公共面积. 分析:这是个阿波罗尼斯圆.既然是圆,那么设圆的一般方程:(x + D/2) ^ 2 + (y ...

  8. 【几何】计算任意多边形面积

      给定一系列有序的线段(比如按顺序给定每个线段的左端点坐标),求这些线段围成的多边形的面积,公式为:   任意一个点与顺序相邻两点组成的三角形面积之和   分为凸多边形和凹多边形分别证明: 一.凸多 ...

  9. [几何] 计算任意多边形的面积、中心、重心

    最近项目用到:在不规则任意多边形的中心点加一个图标.(e.g: xx地区发生暴雪,暴雪区域是多边形,给多边形中心加一个暴雪的图标) 之前的设计是,计算不规则多边形范围矩形bounds的中心点.这个比较 ...

最新文章

  1. 数据库的概念以及MYSQL的安装和卸载
  2. 【OpenCV 4开发详解】轮廓面积与长度
  3. 使用express搭建第一个Web应用【Node.js初学】
  4. 执行多条SQL语句,执行数据库事务(可传入Sql参数)
  5. iOS如何查看静态库.a文件支持的cpu类型
  6. 在區塊鏈上建立可更新的智慧合約(一)
  7. win10专业版虚拟机配置服务器,虚拟机专用专业版win10 账号密码
  8. usb host控制devie进入suspend模式
  9. 建设“一流本科专业”?急啥,先看看哈佛数学系从三流到一流的150年
  10. Matrix 高斯消元Gaussian elimination 中的complete pivoting和partial pivoting
  11. 如何在服务器上安装虚拟机呢?服务器虚拟机安装教程
  12. JSP使用EL表达式实现if,else
  13. PMP-16项目整合管理-制定项目管理计划
  14. cup过高是什么意思_CPU占用过高怎么办? 每日一答
  15. 用DIV+CSS技术设计的鲜花网站(web前端网页制作课作业)
  16. 人生的最好状态,是从“满足别人”走向“活出自己”
  17. highcharts画线性图示例
  18. 做测试,你后悔过吗?
  19. Dew Lab Studio 2020 VCL软件包,很好的RAD(快速软件开发)工具
  20. Q2财报:联想的逆向“比较优势”

热门文章

  1. org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: org.apache.
  2. Java 常用基本类 剖析日期和时间(Java8以前)
  3. java图书信息添加代码_图书 - java代码库 - 云代码
  4. TCGA 概述及 Barcode 详解
  5. Matlab曲线拟合(1)(自用笔记)
  6. 越是好女人可能越缺人追
  7. win7系统快速打开命令提示符窗口的两种方法
  8. Dell戴尔外星人游匣G系列灵越Inspiron成就Vostro xps等笔记本电脑原厂系统 创建F12一键恢复功能SupportAssist OS Recovery
  9. 售前工程师适合女生吗?
  10. Anaconda3完全卸载+重新安装(2022.7)全网最新