ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

点到直线距离计算及g++编译

2021-01-09 16:32:27  阅读:158  来源: 互联网

标签:直线 ++ calPoint2LineDistance 编译 点到 include out


1、点到直线距离推导

 

已知两点,a(x1,y1),b(x2,y2),求点c(x3,y3)到a,b两点所在直线的距离。

a、b两点所在的直线:

  如果不垂直,根据直线上两点间斜率相等有:

  整理后有

 

  类比于: 

  那么,点到直线的距离:

  在三角形cMN中,根据面积相等有:

带入坐标点得:

 

2、代码

linux系统编写

在终端terminal中执行

 vim calPoint2LineDistance.cpp

在该cpp中写代码如下:

#include<iostream>
#include<stdlib.h>  //abs()
#include<math.h>    //sqrt()

using namespace std;

int main(int argc, char* argv[]){
    //argv: 0 is self, 1,2,3,4,5,6 are x1,y1,x2,y2,x3,y3
    cout<<"argc is:"<<argc<<endl;
    if(argc!=7){
        cout<<"need at least three points"<<endl;
        return 0;
    }
    float x1,y1,x2,y2,x3,y3;
    x1 = *argv[1], y1 = *argv[2], x2 = *argv[3], y2 = *argv[4], x3 = *argv[5], y3 = *argv[6];
    if(x1 == x2){
        cout<<"vertical,point2line distance is:"<<abs(x3-x1)<<endl;
        return abs(x3-x1);
    }
    else{
        float d = abs((y1-y2)*x3+(x2-x1)*y3+(x1*y2-y1*x2))/sqrt(pow(y1-y2,2)+pow(x2-x1,2));
        cout<<"point2line distance is:"<<d<<endl;
        return d;
    }
}

  

3、编译及使用

g++编译:

g++ calPoint2LineDistance.cpp -o calPoint2LineDistance.out

-o 编译选项为将产生的可执行文件用指定的文件名,此处指定的是calPoint2LineDistance.out,不指定的话,默认是a.out。

 

使用:

./calPoint2LineDistance.out  2 0 0 2 2 2

计算点(2,0)、(0,2)与点(2,2)之间的距离。

 

输出:

argc is:7

point2line distance is:1.41421
calPoint2LineDistance.out下载地址:https://pan.baidu.com/s/1LOoCcAwwXfF9MVFtEoQIaA 密码:24a9

 

标签:直线,++,calPoint2LineDistance,编译,点到,include,out
来源: https://www.cnblogs.com/xiaoheizi-12345/p/14255387.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有