C++常用数学计算

  • 1. 一点到另外两点组成直线的距离
  • 2.获取平面两点间的距离
  • 3计算两个向量的夹角
  • 4. 判断三点共线

1. 一点到另外两点组成直线的距离

已知点p /p1/p2,求p到p1 p2的距离
根据点到直线的距离公式:d = (Ax0 + By0 + C) / sqrt(A * A + B * B)
A = y2 - y1
B = x1 - x2;
C = x2 * y1 - x1 * y2;

程序实现

//定义Point2f结构体
struct Point2f
{float x;float y;
};// 定义直线参数结构体
struct LinePara
{float k;float b;
}
//距离计算
float NavMath::PointToLineDis(Point2f p, Point2f p1, Point2f p2)
{float A = p2.y - p1.y;float B = p1.x - p2.x;float C = p2.x * p1.y - p1.x * p2.y;float dis = (A * p.x + B * p.y + C) / sqrt(A * A + B * B);return dis;
}

2.获取平面两点间的距离

两点组成向量的模即为两点间的距离

//使用Eigen库,两点组成向量的模即为距离
// 获取平面两点之间的距离
double GetTwoPointsDistance(const Eigen::Vector2d &p1,const Eigen::Vector2d &p2) {return (p1 - p2).norm();
}

3计算两个向量的夹角

由两个向量计算夹角

// 获取两个向量的夹角
double GetTwoVectorsAngle(const Eigen::Vector2d &v1,const Eigen::Vector2d &v2) {double cosine_value = v1.dot(v2) / (v1.norm() * v2.norm());// 归约到-1到1,防止出错
//  if (cosine_value > 1)// cosine_value = 1;//else if (cosine_value < -1)//cosine_value = -1;//弧度double value = acos(cosine_value);return value;
}

4. 判断三点共线

/检查三点是否共线,以p1为顶点的角度小于某个值来判断


bool IsThreePointsInLine(const Eigen::Vector2d &p1, const Eigen::Vector2d &p2,const Eigen::Vector2d &p3, double radian_deviation) {Eigen::Vector2d p1_p2 = p2 - p1;Eigen::Vector2d p1_p3 = p3 - p1;// 有重合点直接返回trueif (p1_p2.norm() == 0 || p1_p3.norm() == 0) {return true;}double radian_value_of_p1 = GetTwoVectorsAngle(p1_p2, p1_p3);Eigen::Vector2d p3_p1 = p1 - p3;Eigen::Vector2d p3_p2 = p2 - p3;// 有重合点直接返回trueif (p3_p1.norm() == 0 || p3_p2.norm() == 0) {return true;}double radian_value_of_p3 = GetTwoVectorsAngle(p3_p1, p3_p2);if (radian_value_of_p1 <= radian_deviation &&radian_value_of_p3 <= radian_deviation) {return true;} else {return false;}
}

TODO 数据类型多用eigen库

C++-点到点、点到线、共线等常用计算相关推荐

  1. 利用数学公式计算点到线的距离

    作者:RayChiu_Labloy 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 目录 场景: 数学原理和公式详解: 已知直线上两点求直线的一般式方程: 点到线的距离公 ...

  2. [原创]物探小宽线坐标快速生成(平行线坐标互算 、点到线距离计算、两线交点计算等)...

    界面如下: 下载地址:CSDN 功能简介: 主要是解决并简化各项目中坐标(特别是是斜测线坐标方程组)的重复脑残计算问题,降低脑残机率,为懒而生 1.对于斜线.规则线坐标理论快速生成等 2.两线交点的标 ...

  3. Android 高德地图计算 Circle 计算上下左右四个点经纬度,Circle和Polygon是否全部包含,计算地图中点到线的最短距离

    /*** 假设地球为一半径为R的表面光滑圆球体,* 表面上同一经线圈上相差1"两点间的距离为 2πR/360/3600* 表面上同一纬线圈上相差1"两点间的距离为 2πR×cos( ...

  4. matlab计算macd_[转载]4.K线图以及常用技术指标的Matlab实现-基于Matlab的量化投资...

    本次主要讲解用Matlab来实现K线图以及常用的技术指标. 相关前导帖子浏览: 系列帖子目录 Matlab的Bar图中Bar颜色灵活设置的一点总结[by faruto] [原创]坐标轴刻度标签旋转升级 ...

  5. java点到直线的投影点到经纬度_12分高考答题必刷题型,“空间向量分析点到线的距离问题”...

    12分高考答题必刷题型,"空间向量分析点到线的距离问题" 立体几何大题 立体几何在各地高考中,基本都占据20分以上的比例,在解答方法上,小题技巧相对比较丰富,但大题解答上有明显的规 ...

  6. 点到直线的投影公式_12分高考答题必刷题型,“空间向量分析点到线的距离问题”...

    12分高考答题必刷题型,"空间向量分析点到线的距离问题" 立体几何大题 立体几何在各地高考中,基本都占据20分以上的比例,在解答方法上,小题技巧相对比较丰富,但大题解答上有明显的规 ...

  7. hdu 1174:爆头(计算几何,三维叉积求点到线的距离)

    爆头 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submiss ...

  8. matlab的技术指标,[转载]4.K线图以及常用技术指标的Matlab实现-基于Matl

    本次主要讲解用Matlab来实现K线图以及常用的技术指标. 相关前导帖子浏览: 系列帖子目录 Matlab的Bar图中Bar颜色灵活设置的一点总结[by faruto] [原创]坐标轴刻度标签旋转升级 ...

  9. 案例一:JTS-计算点到线的垂线

    案例:计算点到线的垂线 示例代码库 使用场景 计算点在线上的垂足;点的垂线 示例 DistanceToPoint.computeDistance 示例图例 计算P点到L的垂线 示例代码 import ...

  10. java 点与线的距离_计算地图上点与线段距离

    将地球看做一个标准球体,计算点到线段的距离. 计算两点间的球面距离 /** * * a点经度,a点纬度,b点经度,b点纬度 * */ public static double calcP2P(doub ...

最新文章

  1. 2022-2028年中国汽车用胶管行业市场深度分析及投资前景趋势报告
  2. python多页网站目录_python 爬取页面所有的url
  3. java做日历怎么对齐日期_如何使用Java日历从日期中减去X天?
  4. Response_案例4_验证码_点击切换
  5. 空间数据引擎oracle_GIS 与Oracle 数据库空间数据格式的转换
  6. 重磅!腾讯云首次披露自研业务上云历程
  7. Java技术学习笔记:C/S 与B/S 区别
  8. 企业如何采用机器学习
  9. phantomjs linux java_PhantomJS 在linux上使用
  10. 程序员的算法课(8)-贪心算法:理解霍夫曼编码
  11. vue 和react
  12. [Tools 之]online bookmark 在线书签
  13. 杜月笙的六句忠告,学会了不吃亏
  14. E60的存储空间不足? NO
  15. 爬虫之 单线程+多任务异步协程
  16. 性能测试--jmeter结合charles,以及charles的基本使用【11】
  17. 最高100,000美元大奖,2021腾讯广告算法大赛开启
  18. Odoo隐藏应用模块
  19. HC-05 蓝牙 AT指令详解
  20. Debian 下安装中文语言包和中文输入法

热门文章

  1. 立创开源 | 恒温加热台
  2. mysql 内连接、左连接会出现笛卡尔积?
  3. manjaro KDE 安装微信
  4. matlab gazebo,ROS与Matlab语言入门教程-从Gazebo读取模型和仿真性能
  5. 三阶魔方7步还原法详解 简单
  6. 分享一个微信公众号id转换为biz的接口
  7. 稚晖君的HoloCubic 透明棱镜小电视
  8. @vuecomposition-apidistvue-composition-api.mjs in .node_modulesvue-demilibindex.mjs 报错
  9. MATLAB计算二阶系统单位阶跃响应及在for循环中在图像加图例
  10. 微信小程序引入组件以及catchtouchmove实现拖动效果