求点到直线的垂足和最近点
1.公式(比较稳啊)
设直线方程为ax+by+c=0,点坐标为(m,n)
则垂足为((b*b*m-a*b*n-a*c)/(a*a+b*b),(a*a*n-a*b*m-b*c)/(a*a+b*b))
2.计算点到线段的最近点
如果该线段平行于X轴(Y轴),则过点point作该线段所在直线的垂线,垂足很容
易求得,然后计算出垂足,如果垂足在线段上则返回垂足,否则返回离垂足近的端
点;
如果该线段不平行于X轴也不平行于Y轴,则斜率存在且不为0。设线段的两端点为
pt1和pt2,斜率为:
k = ( pt2.y - pt1. y ) / (pt2.x - pt1.x );
该直线方程为:
y = k* ( x - pt1.x) + pt1.y
其垂线的斜率为 - 1 / k,
垂线方程为:
y = (-1/k) * (x - point.x) + point.y
联立两直线方程解得:
x = ( k^2 * pt1.x + k * (point.y - pt1.y ) + point.x ) / ( k^2 + 1)
y = k * ( x - pt1.x) + pt1.y;
然后再判断垂足是否在线段上,如果在线段上则返回垂足;如果不在则计算两端点
到垂足的距离,选择距离垂足较近的端点返回。
求点到直线的垂足和最近点相关推荐
- 牛客小白月赛2-B小马过河(求点到直线的垂足)
题目链接 求点到直线的垂足分为 空间 .平面 原理: 空间: #include<iostream> #include<cmath> using namespace std; c ...
- 图像中求点到直线的垂足
已知图像中线段的两个点,求另外一个点到这个点的垂足. 一.垂足公式 已知直线一般式方程时: 设已知直线外一点坐标为 ( x 0 , y 0 ) (x0,y0) (x0,y0),垂足坐标为 ( x , ...
- Opencv-python 计算点到直线的垂足点
Opencv-python 计算点到直线的垂足点 代码 import numpy as np import cv2 as cv# 获取直线起始,结束点 def get_line_se(img, lin ...
- 利用matlab求点到直线距离和垂足坐标(开源,易使用修改)
利用matlab求点C到向量AB的垂直距离以及垂足E点坐标 A.B两点构成向量AB:C为任一点.求C点到向量AB的垂直距离与C点到AB的垂足坐标. 结果说明:C2ABJvLi--C点到向量AB的垂直距 ...
- c 空间点到直线的垂足及距离计算
已知条件: 已知空间一个点的坐标a(x0,y0,z0),已知空间的另外两个点的坐标b(x1,y1,z1),c(x2,y2,z2),求a点到 b,c两点所在直线的 距离最近的点的坐标 可以说是a点到 过 ...
- python输入两点坐标求距离_大一Python课的习题,输入两点,建立起直线方程y=kx+b。输入第3点,求点到直线的距离。这怎...
展开全部 # -*- coding:utf-8 -*- import math point_a=raw_input('please input point A coordinates: For Exa ...
- 关于知道两点求直线方程 求点到直线的距离
已知直线上的两点P1(X1,Y1) P2(X2,Y2), P1 P2两点不重合.则直线的一般式方程AX+BY+C=0中,A B C分别等于: A = Y2 - Y1 B = X1 - X2 C = X ...
- 【学习笔记】Matlab中求点到直线的距离
点到直线 假设直线L1: A x + B y + C = 0 Ax+By+C=0 Ax+By+C=0,直线外一点 ( x 0 , y 0 ) (x_0,y_0) (x0,y0),点到直线的垂直距离 ...
- 求点到直线的最短距离及垂足
一.根据两点求直线方程 已知直线上两点为:(x1,x2),(y1,y2); 设方程为:Ax+By+C=0; 1. 求斜率:k=(y2-y1)/(x2-x1): 2. 直线方程为: y-y1=k(x-x ...
最新文章
- SLAM算法&技术之Gauss-Newton非线性最小二乘算法
- 极限脱出 量子计算机,《极限脱出3:零时困境》50条指向zero身份线索
- 阿德:我在去哪儿干了些什么,3个月业绩400%提升
- 详解Windows内存分页机制
- ajax面试技术回答模板
- java实现迷你计算机,用JAVA写一个迷你编辑器.doc
- JavaScript 运行机制详解:再谈Event Loop
- 如何实现A星寻路算法 Cocos2d-x 3.0 beta2
- BAT警示:没试过这个方法就别说会数据分析!!
- 小网站服务器空间,小型网站空间服务器
- mysql更新一条语句_讲讲一条MySQL更新语句是怎么执行的?
- IDEA中配置OpenJDK8并查看native方法源码
- python金融基础知识_python金融实务从入门到精通(23节课)
- Python迭代器是什么?
- Apriori算法及例题
- 基于java的在线考试系统设计(含源文件)
- linux shell脚本中打开另一个终端并在新终端中执行shell脚本
- adb cat delay 2 second
- 物联网工程 | CAN(Controller Area Network)控制器局域网络详解
- java程序员必知的 8大排序
热门文章
- java入门教学书,Java面试技巧合集
- 利用Python将WEBVTT格式的视频字幕文件转为SRT格式
- 前端小白配置mac下node+vue开发环境的各种姿势
- PAT 7-8 超速判断 (10 分)c++
- python的点号“.“都能用来做什么
- 在Modelsim中添加Vivado仿真库
- QEMU guest与host通过网络通信——bridge/hostfwd/guestfwd
- Ubuntu18.04 下图像处理开源软件库Opencv3.4.16的安装及使用
- 4.5k star,一款开源的数据可视化分析平台,提供多种大屏模板,非常炫酷
- 如何将m3u8网络视频转码保存到本地