Introduction
相比前两节这一节的内容较少设计到算法知识,不过多边形与圆是集合中十分基础的研究对象,ACM竞赛中也经常涉及,所以在这里将常见的相关知识总结一下。
三角形
三角形的面积
直接使用公式:
S△ABC=|12AB→×AC→|
// 三角形面积
double TriangleArea(Point a, Point b, Point c) {
return Det(b - a, c - a) / 2.0;
}
判断点在三角形内
判断点 P 是否在三角形
- 用求凸包时运用过的叉积法
- 面积法
第一种不在赘述,只要顺次求一遍叉积看结果是否为同一符号即可。第二种的话若点 P 在三角形
三角形的心
三角形的四心总结如下:
名称 | 定义 | 图示 | 备注 |
---|---|---|---|
内心 | 三内角角平分线交点 | 三角形内切圆圆心 | |
外心 | 三边垂直平分线交点 | 三角形外接圆圆心 | |
垂心 | 三条高线交点 | ||
重心 | 三条中线交点 | 中线被重心以1:2的比例划分(靠近角的一端较长) |
三角形的四心有一首打油诗:
内心全靠角平分,
外心中点垂线伸,
垂心垂直画三高,
形心角连线中心。
求重心
求重心坐标十分简单,即为三角形三顶点坐标的平均值。
设三角形三顶点为 A,B,C ,重心坐标公式为:
G=13(∑xi,∑yi)
// 三角形重心
Point Centroid(Point a, Point b, Point) {
return (a + b + c) / 3.0;
}
求内心
求内心稍为麻烦。先来引入一个引理:
引理:
E为AB上一点,F为AC上一点,若AE:EB=m:l,AF:FC=n:l,则BF与CE的交点I的坐标为 (l