C++ 如何求点到直线的距离?(两点式)

这篇具有很好参考价值的文章主要介绍了C++ 如何求点到直线的距离?(两点式)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


点到直线的距离公式:
c++计算一个点到一条直线的距离,C/C++,c++,算法,开发语言

将两点式整理可得:

( y1 - y2 ) * x + ( x2 - x1 ) * y + ( x1 * y2 - x2 * y1 ) = 0

c++计算一个点到一条直线的距离,C/C++,c++,算法,开发语言

两者结合可得:
(其中:fabs是求绝对值,sqrt是开2次根号,pow是求一个数的n次方)

distance = fabs(((y1 - y2) * x0 - (x1 - x2) * y0 + (x1 * y2 - x2 * y1)) / sqrt(pow(y1 - y2, 2) + pow(x1 - x2, 2)));

代码

#pragma warning(disable : 4996)
#include<iostream>
#include <stdio.h>
#include <stdlib.h>
#include "math.h"
#include "memory.h"

using namespace std;

#define KY_MIN(x,y) (x < y ? x : y)
#define KY_MAX(x,y) (x > y ? x : y)

/**
* @brief 单坐标点描述
*/
typedef struct _OPDEVSDK_POS_POINT_ST_
{
    float       x;
    float       y;
}OPDEVSDK_POS_POINT_ST;

/**
* @brief 线段描述
*/
typedef struct _OPDEVSDK_POS_LINE_ST_
{
    OPDEVSDK_POS_POINT_ST       point1;
    OPDEVSDK_POS_POINT_ST       point2;
}OPDEVSDK_POS_LINE_ST;

double get_distance(OPDEVSDK_POS_LINE_ST& line, OPDEVSDK_POS_POINT_ST& point);


int main() {
    OPDEVSDK_POS_LINE_ST line = { {0,0}, {1,1} };
    OPDEVSDK_POS_POINT_ST point = { 1,0 };
    cout << get_distance(line, point) << endl;
    return 0;
}


double get_distance(OPDEVSDK_POS_LINE_ST& line, OPDEVSDK_POS_POINT_ST& point)
{
    double x1 = line.point1.x;
    double y1 = line.point1.y;
    double x2 = line.point2.x;
    double y2 = line.point2.y;
    double x0 = point.x;
    double y0 = point.y;
    double distance;
    distance = fabs(((y1 - y2) * x0 - (x1 - x2) * y0 + (x1 * y2 - x2 * y1)) / sqrt(pow(y1 - y2, 2) + pow(x1 - x2, 2)));    //点到直线公式

    return distance;
}

运行结果:

0.707107

参考文章:一点到另外两点所成直线的距离文章来源地址https://www.toymoban.com/news/detail-626060.html

到了这里,关于C++ 如何求点到直线的距离?(两点式)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • mysql 计算两点之间距离

    先说一下我们可能会用到的一些场景,这样同学们可以先评估,该篇文章是否对你有帮助! 场景: 假设 美团,我点外卖时,系统会让我先进行定位,比如我定位在了 A 点,系统就会给我推荐,离 A 点最近的商家们,我们先排除评分等等条件,只看距离,优先距离(最近的商家

    2024年02月11日
    浏览(37)
  • 根据经纬度计算两点之间的距离

    前言 在我们平时使用美团,饿了么等app进行订餐,或者使用猫眼进行订电影票的时候,都有一个距离的排序,表明该家店距离我们当前的位置,这种基于地理位置的服务,统一被称为LBS(Location Based Service),而LBS的实现则是借助于GIS,WC(无线通信)等信息技术来实现。而今

    2024年02月05日
    浏览(87)
  • 根据经纬度计算地球上两点之间的距离——Haversine公式介绍及计算步骤

    目录 摘要 1.半正矢公式(Haversine Formula)介绍 2.半正矢公式应用 3.半正矢公式计算 3.1 主要思路 3.2 计算步骤 3.2.1 平面向量计算方法 3.2.2 空间向量计算方法 写本文的出发点是需要在Qlik中根据经纬度计算地球上两点间的距离。我在社区上搜到了相关公式的分享,这个公式叫做

    2023年04月10日
    浏览(47)
  • 使用opencv计算图片上任意一点到图片中心点距离为半径绘制圆形,计算FOV

    一、计算公式 图片坐标:Point(x,y) 半径 :r = ( x − i m a g e . c o l s / 2 ) 2 + ( y − i m a g e . r o w s / 2 ) 2 sqrt {(x - image.cols/2)^2 + (y - image.rows/2)^2} ( x − ima g e . co l s /2 ) 2 + ( y − ima g e . ro w s /2 ) 2 ​ 二、以 R R R 为半径在图像上绘制圆形,如下图所示: 三、实现代码

    2024年01月16日
    浏览(45)
  • Java根据坐标经纬度计算两点距离(5种方法)、校验经纬度是否在圆/多边形区域内的算法推荐

    目录 前言 一、根据坐标经纬度计算两点距离(5种方法) 1.方法一 2.方法二 3.方法三 4.方法四 5.方法五 5.1 POM引入第三方依赖 5.2 代码 6.测试结果对比 二、校验经纬度是否在制定区域内 1.判断一个坐标是否在圆形区域内 2.判断一个坐标是否在一个多边形区域内 3.结果 总结   

    2024年02月10日
    浏览(83)
  • 实验五 C语言函数程序设计习题 (使用函数计算两点间的距离,请编写函数fun,使用函数输出字符矩阵,使用函数求最大公约数和最小公倍数)

    1. 使用函数计算两点间的距离:给定平面任意两点坐标(x1,y1)和(x2,y2),求这两点之间的距离(保留2位)小数。要求定义和调用dist(x1,y1,x2,y2)计算两点间的距离。坐标中两点坐标之间的距离公式如下: 2. 请编写函数fun,它的功能是计算并输出给定整数n的所有因子(不包括1与自身)

    2024年02月04日
    浏览(52)
  • PCL 点到三角形的距离(3D)

    给定三角形ABC和点P,设Q为描述ABC上离P最近的点。求Q的一个方法:如果P在ABC内,那么P的正交投影点就是离P最近的点Q。如果P投影在ABC之外,最近的点则必须位于它的一条边上。在这种情况下,Q可以通过计算线段AB、BC和CA中离P最近的点,并返回离P最近的计算点来获得。虽然

    2024年04月11日
    浏览(44)
  • 椭球面上两点最短距离的算法思考

    椭球面上两点最短距离的三种算法思路    我们不妨以一个具体的情境去进行代码分析 下列程序绘制椭球面及两点的程序.  问题分析 1.1.1球体上最短距离 (1)方式:计算两个点和球心所表示的向量的夹角,即球心角,然后使用弧长计算公式来求解; 若采用经纬度求解则用

    2024年01月16日
    浏览(52)
  • 空间分析实战指南:点到多边形的最短距离

    在我们最近的项目中,出现了一个新的需求:需要验证现场拍摄的照片的经纬度与实际地块之间的最短距离,以确保业务员在地块的一公里范围内进行拍照。 实现这个功能有两种方式,一种是在前台APP中校验,一种是在后台进行校验,接下来我会分别介绍这两种方式。 在我

    2024年02月13日
    浏览(37)
  • 直线方程y=kx+b 已知两点a,b。求ab中间任一点坐标x,y

    参考文章 斜率怎么求 已知斜率及另一点坐标,求另一点坐标方法 三角形斜率 DirectX C++ 3D编程基础 5 [三角形光栅化] 自制中字 直线方程公式y=kx+b k斜率,b截距 已知点a(1,2) b(4,3) 绿色线段 求斜率k=(by-ay)/(bx-ax)或(ay-by)/(ax-bx) k=(3-2)/(4-1)=三分之一 将k以及点a或点b任意一点

    2024年02月09日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包