博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
点到线段的距离
阅读量:4129 次
发布时间:2019-05-25

本文共 1124 字,大约阅读时间需要 3 分钟。

double xmult(double x1,double y1,double x2,double y2,double x0,double y0)

是算叉乘的
double area_triangle(double x1,double y1,double x2,double y2,double x3,double y3)
是算面积的
double dis_ptoline(double x1,double y1,double x2,double y2,double ex,double ey,double *px,double *py)
自己编的 算点到线段距离的

double xmult(double x1,double y1,double x2,double y2,double x0,double y0){    return (x1-x0)*(y2-y0)-(x2-x0)*(y1-y0);}double area_triangle(double x1,double y1,double x2,double y2,double x3,double y3){    return fabs(xmult(x1,y1,x2,y2,x3,y3))/2;}double dis_ptoline(double x1,double y1,double x2,double y2,double ex,double ey,double *px,double *py){ //第一个点,第二个点,目标点  ax ay为答案点  返回距离    double k,b,dis,tem1,tem2,t1,t2,yd=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));    t2=sqrt((x2-ex)*(x2-ex)+(y2-ey)*(y2-ey));    t1=sqrt((x1-ex)*(x1-ex)+(y1-ey)*(y1-ey));    dis=area_triangle(x1,y1,x2,y2,ex,ey)*2/yd;    tem1=sqrt(t1*t1-dis*dis);    tem2=sqrt(t2*t2-dis*dis);        if (tem1>yd||tem2>yd) {        if (t1>t2) {*px=x2;*py=y2;return t2;}        else {*px=x1;*py=y1;return t1;}    }    *px=x1+(x2-x1)*tem1/yd;    *py=y1+(y2-y1)*tem1/yd;    return dis;}

转载地址:http://ghuvi.baihongyu.com/

你可能感兴趣的文章
小程序获取access_token
查看>>
navicat远程连接mysql数据库
查看>>
tp5令牌数据无效 解决方法
查看>>
自己的网站与UCenter整合(大致流程)
查看>>
laravel 制作通用的curd 后台操作
查看>>
【小红书2017年笔试】求一个数组中平均数最大的子数组
查看>>
Linux基础系列-定时器与时间管理
查看>>
Linux基础系列-可执行程序的产生过程
查看>>
Linux基础系列-Kernel 初始化宏
查看>>
Linux子系统系列-I2C
查看>>
<iOS>关于自定义description的一点用法
查看>>
Unix 命令,常用到的
查看>>
DLL中建立进程共享数据段需要注意的语法问题
查看>>
服务器端技术----Http请求的处理过程
查看>>
C语言-预处理指令2-条件编译
查看>>
C语言-预处理指令3-文件包含
查看>>
C语言-变量类型
查看>>
C语言-static和extern关键字1-对函数的作用
查看>>
C 语言-static和extern关键字2-对变量的作用
查看>>
【JavaScript 教程】浏览器—History 对象
查看>>