计算几何相关知识清单
2017-03-17 20:37
274 查看
1 基础知识
1.两点间的距离公式:
已知:平面上的两点的直角坐标分别为P1(x1,y1),P2(x2,y2),则P1和P2两点间的距离为
d=sqrt((x1-x2)(x1-x2)+(y1-y2)(y1-y2))
2.线段的中点坐标公式:
已知:平面上的两点的直角坐标分别为P1(x1,y1),P2(x2,y2),则线段P1P2的中点坐标为(x,y)
x=(x1+x2)/2 y=(y1+y2)/2
3.角度与狐度与转换
的意义 以及一些三角函数。
4.直线的斜率公式:
已知:平面上的两点的直角坐标分别为P1(x1,y1),P2(x2,y2),则线段P1P2所在的直线的斜率为
k=(y2-y1)/(x2-x1)
陲线斜率以其推导
5.直线的点斜式方程:
已知:直线过点P0(x0,y0),斜率为k,则该直线所在的方程为
y=k(x-x0)+y0=kx+y0-kx0=kx+b(与y轴交点的纵坐标:纵截距)
已知两点求直线方程、已知一点余率救直线方程,已知余率以与Y轴次点求余线方程。
2.叉积
1.已知:平面上的两点的直角坐标分别为p1(x1,y1),p2(x2,y2)则
1)该两点相对坐标原点(0,0)的叉积为m=x1*y2-x2*y1
若m>0 则相对坐标原点,点p1在点p2的顺时针方向
若m<0 则相对坐标原点,点p1在点p2的逆时针方向
若m=0 则原点和p1、p2在一条直线上
(2)该两点相对点p0(x0,y0)的叉积为m=(x1-x0)(y2-y0)-(x2-x0)(y1-y0)
若m>0 则相对p0点,点p1在点p2的顺时针方向
若m<0 则相对p0点,点p1在点p2的逆时针方向
若m=0 则p0和p1、p2在一条直线上
2.确定两条连续的有向线段p0p1和p0p2在pl点是向左转还是向右转
(1)计算叉积m=(x1-x0)(y2-y0)-(x2-x0)(y1-y0)
(2)判断m
若m>0 则p1点向左拐
若m<0 则p1点向右拐
若m=0 则点p0、p1、p2在一条直线上
面积与叉积
平行四边形面积就是叉积的绝对值。
多边形面积:
我们都知道已知A(x1,y1)、B(x2,y2)、C(x3,y3)三点的面积公式为
S(A,B,C) = |y1 y2 y3| * 0.5 =[(x1-x3)(y2-y3) - (x2-x3)(y1-y3)]*0.5
(当三点为逆时针时为正,顺时针则为负的)
对多边形A1A2A3、、、An(顺或逆时针都可以),设平面上有任意的一点P,则有:
S(A1,A2,A3,、、、,An)
= abs(S(P,A1,A2) + S(P,A2,A3)+、、、+S(P,An,A1))
P是可以取任意的一点,用(0,0)时就是下面的了:
设点顺序 (x1 y1) (x2 y2) … (xn yn)
=0.5*abs(x1*y2-y1*x2+x2*y3-y2*x3+…+xn*y1-yn*x1)
另:若要判断凹凸多边形只需考虑所有PPi与PPi+1叉积(1<=i<=n-2)是否同号.
是则凸,否则凹.
3.判断点是否在线段上:
设点为Q,线段为P1P2 ,判断点Q在该线段上的依据是:( Q - P1 ) × ( P2 - P1 ) = 0 且 Q 在以 P1,P2为对角顶点的矩形内。前者保证Q点在直线P1P2上,后者是保证Q点不在线段P1P2的延长线或反向延长线上,对于这一步骤的判断可以用以下过程实现:
ON-SEGMENT(pi,pj,pk)
if min(xi,xj) <=xk <= max(xi,xj) and min(yi,yj) <= yk <= max(yi,yj)
then return true;
else return false;
特别要注意的是,由于需要考虑水平线段和垂直线段两种特殊情况,min(xi,xj)<=xk<=max(xi,xj)和min(yi,yj)<=yk<=max(yi,yj)两个条件必须同时满足才能返回真值。
1.两点间的距离公式:
已知:平面上的两点的直角坐标分别为P1(x1,y1),P2(x2,y2),则P1和P2两点间的距离为
d=sqrt((x1-x2)(x1-x2)+(y1-y2)(y1-y2))
2.线段的中点坐标公式:
已知:平面上的两点的直角坐标分别为P1(x1,y1),P2(x2,y2),则线段P1P2的中点坐标为(x,y)
x=(x1+x2)/2 y=(y1+y2)/2
3.角度与狐度与转换
的意义 以及一些三角函数。
4.直线的斜率公式:
已知:平面上的两点的直角坐标分别为P1(x1,y1),P2(x2,y2),则线段P1P2所在的直线的斜率为
k=(y2-y1)/(x2-x1)
陲线斜率以其推导
5.直线的点斜式方程:
已知:直线过点P0(x0,y0),斜率为k,则该直线所在的方程为
y=k(x-x0)+y0=kx+y0-kx0=kx+b(与y轴交点的纵坐标:纵截距)
已知两点求直线方程、已知一点余率救直线方程,已知余率以与Y轴次点求余线方程。
2.叉积
1.已知:平面上的两点的直角坐标分别为p1(x1,y1),p2(x2,y2)则
1)该两点相对坐标原点(0,0)的叉积为m=x1*y2-x2*y1
若m>0 则相对坐标原点,点p1在点p2的顺时针方向
若m<0 则相对坐标原点,点p1在点p2的逆时针方向
若m=0 则原点和p1、p2在一条直线上
(2)该两点相对点p0(x0,y0)的叉积为m=(x1-x0)(y2-y0)-(x2-x0)(y1-y0)
若m>0 则相对p0点,点p1在点p2的顺时针方向
若m<0 则相对p0点,点p1在点p2的逆时针方向
若m=0 则p0和p1、p2在一条直线上
2.确定两条连续的有向线段p0p1和p0p2在pl点是向左转还是向右转
(1)计算叉积m=(x1-x0)(y2-y0)-(x2-x0)(y1-y0)
(2)判断m
若m>0 则p1点向左拐
若m<0 则p1点向右拐
若m=0 则点p0、p1、p2在一条直线上
面积与叉积
平行四边形面积就是叉积的绝对值。
多边形面积:
我们都知道已知A(x1,y1)、B(x2,y2)、C(x3,y3)三点的面积公式为
S(A,B,C) = |y1 y2 y3| * 0.5 =[(x1-x3)(y2-y3) - (x2-x3)(y1-y3)]*0.5
(当三点为逆时针时为正,顺时针则为负的)
对多边形A1A2A3、、、An(顺或逆时针都可以),设平面上有任意的一点P,则有:
S(A1,A2,A3,、、、,An)
= abs(S(P,A1,A2) + S(P,A2,A3)+、、、+S(P,An,A1))
P是可以取任意的一点,用(0,0)时就是下面的了:
设点顺序 (x1 y1) (x2 y2) … (xn yn)
=0.5*abs(x1*y2-y1*x2+x2*y3-y2*x3+…+xn*y1-yn*x1)
另:若要判断凹凸多边形只需考虑所有PPi与PPi+1叉积(1<=i<=n-2)是否同号.
是则凸,否则凹.
3.判断点是否在线段上:
设点为Q,线段为P1P2 ,判断点Q在该线段上的依据是:( Q - P1 ) × ( P2 - P1 ) = 0 且 Q 在以 P1,P2为对角顶点的矩形内。前者保证Q点在直线P1P2上,后者是保证Q点不在线段P1P2的延长线或反向延长线上,对于这一步骤的判断可以用以下过程实现:
ON-SEGMENT(pi,pj,pk)
if min(xi,xj) <=xk <= max(xi,xj) and min(yi,yj) <= yk <= max(yi,yj)
then return true;
else return false;
特别要注意的是,由于需要考虑水平线段和垂直线段两种特殊情况,min(xi,xj)<=xk<=max(xi,xj)和min(yi,yj)<=yk<=max(yi,yj)两个条件必须同时满足才能返回真值。
相关文章推荐
- 计算几何相关知识和算法概论
- JAVA相关基础知识1
- 学习record相关知识
- c3p0 数据库连接池相关知识
- 证书,发布相关知识
- 内部类相关知识
- 前端打印控件lodop的相关使用问题和相关的知识领域
- Quartz 2D相关知识
- 频谱分析相关知识
- Python 数据分析(二 本实验将学习利用 Python 数据聚合与分组运算,时间序列,金融与经济数据应用等相关知识
- 一些硬盘相关知识
- iOS 时间 相关知识
- QT中的信号与槽的相关知识
- 反射相关知识
- 抓包工具 Fiddler 相关知识总结
- C语言相关基础知识整理
- 根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁?并简要说明理由。
- 发动机相关知识
- Google ptorobuf相关知识
- jquery 相关知识