求点到线段的垂足
来源:互联网 发布:淘宝店铺名字测试打分 编辑:程序博客网 时间:2024/04/29 07:36
第一种: 设直线方程为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))
第二种:计算点到线段的最近点
如果该线段平行于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;
然后再判断垂足是否在线段上,如果在线段上则返回垂足;如果不在则计算两端点
则垂足为((b*b*m-a*b*n-a*c)/(a*a+b*b),(a*a*n-a*b*m-b*c)/(a*a+b*b))
第二种:计算点到线段的最近点
如果该线段平行于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;
然后再判断垂足是否在线段上,如果在线段上则返回垂足;如果不在则计算两端点
到垂足的距离,选择距离垂足较近的端点返回。
From:http://blog.csdn.net/devilnov/article/details/9089937
0 0
- 求点到线段的垂足
- 求点到线段的垂足
- 点到线段的垂足距离
- 求点到线段的距离
- 求点到线段的近似算法
- 一种快速求点到线段距离的算法
- 一种快速求点到线段距离的算法
- java怎么求点到线段的距离
- 【C#】求点到线段的垂线距离
- 点和线段、线段和线段的关系
- 线段的智慧
- 用点乘求点到线段的距离
- 我的线段树标程
- 线段的拾取算法
- 线段树的知识
- 计算线段的交点
- 线段树的建立
- 线段的拾取
- Bitmap获取图片的高度与宽度
- 【学习笔记】C++高级程序设计:STL:函数对象
- Jersey中的基本权限认证及访问程序
- hadoop 分布式缓存
- linux SVN Server 环境搭建
- 求点到线段的垂足
- const 详解
- 无公网IP如何搭建openvpn配置及让外网连接访问
- 黑马程序员——集合(下)(Map及工具类)
- 轮椅配件给你的轮椅的外观,值得
- 简史乔丹10复古
- 数据类型
- NSEnumerator
- 安装 LaserJet 1020 时这个设备的驱动程序丢失了一个必需的项,这可能是由于 inf 是为 Windows 95 或更新版本而写的。联系您的硬件供应商。