汇总篇:计算几何汇总


点到直线的距离

cos(x)=BA*BC/(|BA|*|BC|)

求AD有很多种方法,可以用勾股定理

这里用的三角函数

x=acos(cos(x))

|AD|=|BA|*sin(x)

如果x是钝角,|AD|=|BA|*sin(pi-x)=|BA|*sin(x)

如果是直角,sin(x) = 1,|AD|=|BA|

点A到直线BC的投影点

方法一

设D(dx,dy)

AD=(dx-ax,dy-ay)

BC=(C.x-B.x,C.y-B.y)

|BA|=sqrt((bx-ax)^2+(by-ay)^2)

AD*BC=0,(dx-ax)*(cx-bx)+(dy-ay)*(cy-by)=0

|AD|=sqrt((dx-ax)^2+(dy-ay)^2)= |BA|*sin(x)

解上述方程组可解得dx,dy

方法二

BABC上的投影等于BA乘以BC的方向向量

D = B +BD

#include<iostream>class point{public:double x;double y;point(double x_=0,double y_=0):x(x_),y(y_){} friend const point operator+(const point& p1,const point& p2){return point(p1.x+p2.x,p1.y+p2.y);};friend const point operator-(const point& p1,const point& p2){return point(p1.x-p2.x,p1.y-p2.y);};friend const point operator*(const point& p,const double& m){return point(p.x*m,p.y*m);};friend const point operator*(const double& m,const point& p){return point(p.x*m,p.y*m);};friend const point operator/(const point& p,const double& m){return point(p.x/m,p.y/m);};friend ostream& operator <<(ostream& out,point& a){printf("(%lf,%lf)",a.x,a.y);return out;};
};
typedef point vect2;//重命名,向量也是用坐标表示 class line{public:point start;point end; line(point s=point(0,0),point e=point(0,0)):start(s),end(e){}
};double dot(point O,point A,point B){//点乘 double oa_x=A.x-O.x;double oa_y=A.y-O.y;double ob_x=B.x-O.x;double ob_y=B.y-O.y;return oa_x*ob_x+oa_y*ob_y;
}
double dis(const point &p1,const point &p2){//求两点之间距离double ans=(p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y);return sqrt(ans);
}
double dis2(const point &p1,const point &p2){//求两点之间距离的平方return(p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y);
}
//点到直线的距离
double disOfPointToLine(point O,line l){double cos0=dot(l.start,O,l.end)/(dis(O,l.start)*dis(l.start,l.end));return dis(O,l.start)*sin(acos(cos0));
}
//点在直线上的投影
point shadowPointOfPointToLine(point A,line l){//投影点出了问题 point B = l.start;point C = l.end;point D;vect2 BC = C - B;vect2 BA = B - A;vect2 BD = BC * BA /dis2(B,C) * BC; D = B + BD;return D;
} 

计算几何——点到直线的距离、投影点相关推荐

  1. 点到直线的距离c语言程序,计算几何算法2. 关于线和点到线的距离(二维和三维)...

    关于直线 直线方程 点到直线的距离 用两点表示的直线 2d隐式表示的直线的情形 参数方程表示的直线 一个点到射线或线段的距离 代码实现 距离计算是计算机图形学和计算几何的基本问题,而且有很多关于这方面 ...

  2. 点到曲线的距离公式_推导点到直线的距离公式到底有多少种方法?

    [总结]方程思想,这也是解析几何的主题思想,几何问题代数化,转化为代数计算. 优点:思路简单清晰易于理解. 缺点:计算量较大. [总结]此方法优点:计算量大幅度减小,紧扣问题入手,切入点准确. 缺点: ...

  3. 使用向量的方法来计算点到直线的距离

    使用向量的方法效率更高,更简单. 首先要了解什么是向量,什么是向量的模 主要用到了解析几何里的几个公式 a * b = | a | * | b | * cos(x),其中x为向量a,b的夹角 | a ...

  4. 使用向量的方法计算点到直线的距离

    基础: 单位向量:模等于1的向量,一个非零向量除以它的模,可得所需单位向量. 向量的加减法: 向量的投影:设两个非零向量a与b的夹角为θ,则将|b|·cosθ 叫做向量b在向量a方向上的投影 向量的点 ...

  5. 叉积求点到平面距离_OpenCV计算点到直线的距离 数学法

    我们在检测图像的边缘图时,有时需要检测出直线目标,hough变换检测出直线后怎么能更进一步的缩小区域呢?其中,可以根据距离来再做一判断,就涉及到了点与直线的距离问题. 点到直线距离代码如下: //== ...

  6. 过直线上一点画垂线图_苏教版四年级数学上册8.5认识垂直、点到直线的距离微课视频 | 练习...

    微课视频第一课时 微课视频第二课时 同步练习 参考答案 教学设计 垂直 教材第89~91页的内容. 1.结合实际情境和操作活动,认识垂直. 2.能借助直尺.三角尺.量角器等工具画出已知直线的垂线,并理 ...

  7. 点到线段的距离_直线垂直,垂线的性质,点到直线的距离

    欢迎关注公z号:沈阳奥数 两条直线相交所成的四个角中,有一个角是直角时,就说这两条直线互相垂直,其中一条直线叫做另一条直线的垂线,它们的交点叫垂足. 如图,直线AB与CD垂直于点E,记作:AB⊥CD于 ...

  8. 点到直线的距离c语言程序,点到线段的距离 题解(C++)

    初步分析 这道题之前有<点到直线的距离>一题. 如图,我们不妨来下个定义(名字是乱起的,如果有雷同就以以下定义为准): 对于任意线段l,在其两个端点上分别作垂直于l的直线,若点在两直线之间 ...

  9. 【JAVA 第四章 流程控制语句】课后习题 直线斜率 以及判断坐标是否在直线上点到直线的距离

    不知道对不对,请教大神帮忙找下.公式是否有错 import java.util.Scanner;public class Test {/*设计并实现一个MyLine 类,它表示直线.构造方法中使用两个 ...

  10. 点到直线的距离公式和平行线的距离公式

    点到直线的距离公式 已知一个点 P ( x 0 , y 0 ) P(x_0,y_0) P(x0​,y0​)和直线 l : A x + B y + C = 0 l:Ax+By+C=0 l:Ax+By+C ...

最新文章

  1. 廉洁修身论文2000字_自主招生论文发表要求【期刊论文】自主招生论文发表要求...
  2. 汇编实验注意点(待补充和更新)
  3. thinkphp5中资源文件路径的使用
  4. 这年头,胡萝卜也靠不住了
  5. 数据结构练习(08)链表中倒数第k个结点
  6. java中访问权限的设置
  7. python爬小说收费章节_python 多线程爬小说返回章节乱套。求解
  8. 翻译专业资格(水平)考试介绍
  9. 闲谈IPv6-组播和广播
  10. 【Unity3D日常开发】Unity3D中设置Image中的Color的值
  11. 单位冲激信号 matlab,matlab单位冲激序列
  12. java event sourcing_深入浅出Event Sourcing和CQRS
  13. 如何彻底禁用 werfalut.exe
  14. Android——单元测试
  15. Java @Data注解
  16. 想剑网三妹子最多服务器,每当谈论起哪款端游女生玩家多,为什么我们总是会想起剑网3?...
  17. excel制作动态数据分析报表
  18. 如何应对高并发问题?
  19. 单词长度c语言pta,PTA7-26 单词长度(15 分)通俗解法
  20. 使用CSS 中伪元素:before 和:after 做简单的动画(以小米商城非首页 logo 动画为例)

热门文章

  1. 2018年,Windows Phone 8.1还能做什么
  2. Egret和LayaBox
  3. python 正则匹配指定号段手机号
  4. php微信卡券创建、生成二维码等
  5. 计算机软件行业新三板企业,2017福布斯值得关注的新三板企业榜:软件行业、互联网服务占据大半...
  6. 爱心的数学函数方程_数学里有哪些可以示爱的图像?它们的函数方程又是什么?...
  7. 如何部署局域网即时通讯软件
  8. IP地址定位之IP画像——如何形成IP用户画像?
  9. Android:获取并制作矢量图动画
  10. “飞思卡尔”杯全国大学生智能车竞赛