几何问题知识点积累
来源:互联网 发布:如何彻底删除手机数据 编辑:程序博客网 时间:2024/05/01 00:43
给定两点,让你求其Ax+By+C的形式,代码如下:
//Ax+By+C=0double getDist(Point a,Point b){ double A=a.y-b.y; double B=b.x-a.x; double C=a.x*b.y-a.y*b.x; return get(A,B,C);}
点到Ax+By+C的距离代码:
//点x,y到直线Ax+By+C的距离double get(double A,double B,double C){ double k=fabs(A*x+B*y+n*C); double v=sqrt(A*A+B*B); return k/v;}
直线p1p2和直线p3p4判断共线:由叉积的原理知道如果p1,p2,p3共线的话那么(p2-p1)X(p3-p1)=0。因此如果p1,p2,p3共线,p1,p2,p4共线,那么两条直线共线。
if(Cross(p2-p1,p3-p1)==0&&Cross(p2-p1,p4-p1)==0)
由向量可以判断出两直线是否平行。如果两直线平行,那么向量p1p2、p3p4也是平等的。即((p1.x-p2.x)*(p3.y-p4.y)-(p1.y-p2.y)*(p3.x-p4.x))==0说明向量平等。
if(Cross(p2-p1,p4-p3)==0)
求两直线(p1p2和p3p4)相交的交点。假设交点为p0(x0,y0)。则有:
(p1-p0)X(p2-p0)=0
(p3-p0)X(p2-p0)=0
展开后即是
(y1-y2)x0+(x2-x1)y0+x1y2-x2y1=0
(y3-y4)x0+(x4-x3)y0+x3y4-x4y3=0
将x0,y0作为变量求解二元一次方程组。
假设有二元一次方程组
a1x+b1y+c1=0;
a2x+b2y+c2=0
那么
x=(c1*b2-c2*b1)/(a2*b1-a1*b2);
y=(a2*c1-a1*c2)/(a1*b2-a2*b1);
因为此处两直线不会平行,所以分母不会为0。
//求解二元一次方程Point solve(double a1,double b1,double c1,double a2,double b2,double c2){ Point p; p.x=(c1*b2-c2*b1)/(a2*b1-a1*b2); p.y=(a2*c1-a1*c2)/(a1*b2-a2*b1); return p;}int main(){ double a1,a2,b1,b2,c1,c2; a1=p1.y-p2.y;b1=p2.x-p1.x;c1=p1.x*p2.y-p2.x*p1.y; a2=p3.y-p4.y;b2=p4.x-p3.x;c2=p3.x*p4.y-p4.x*p3.y; Point p0=solve(a1,b1,c1,a2,b2,c2); printf("POINT %.2f %.2f\n",p0.x,p0.y);}
- 几何问题知识点积累
- 知识点积累
- 知识点积累
- 知识点积累
- 知识点积累
- 知识点积累
- 几何知识点
- 几何视觉基础积累
- 字符串小知识点积累
- javascript常用知识点积累
- java知识点积累
- android知识点积累
- java基础知识点积累
- Android 知识点积累(一)
- Android知识点积累(二)
- 积累小知识点
- JS知识点积累
- python 知识点积累
- HDU1215 七夕节 解题报告
- 嵌入式环境搭建之NFS
- 编码风格不是编码规范
- sql多条件查询语句
- spring的事务管理,事务隔离级别(代码级别)
- 几何问题知识点积累
- maven-onejar生成可执行的独立jar
- 从一堆无序数中选出最大最小值
- 项目启动那些事儿
- c与c++函数名称问题
- Servlet 各个类之间的体系结构
- memcached与spring集成
- 流水账
- 亚信联创实习笔记