已知条件:

已知空间一个点的坐标a(x0,y0,z0),已知空间的另外两个点的坐标b(x1,y1,z1),c(x2,y2,z2),求a点到 b,c两点所在直线的 距离最近的点的坐标 可以说是a点到 过b,c点直线垂足的坐标。并且求出a点到直线的距离。

#include <stdio.h>
#include <conio.h>
#include <math.h>

typedef struct{
double x,y,z;
}point;

typedef struct{
point p1,p2;
}line;

main()
{
line lne;
point points[3],point_Q;
int initpoint(point *a,double x,double y,double z);
int printpoint(point a);
int initline(line *l,point a,point b);
int point2line(line l,point a,point *b);
double p2p(point a,point b);

/*初始化三个点,其中前两个点用来做直线的*/
initpoint(&points[0],1,2,3);
initpoint(&points[1],-1,4,6);
initpoint(&points[2],0,0,0);
initline(&lne,points[0],points[1]); /*前两个点做线*/

/*求垂足*/
point2line(lne,points[2],&point_Q);

printpoint(point_Q);/*输出垂足*/
printf("dist=%lf/n",p2p(points[2],point_Q));
getch();
}

int initpoint(point *a,double x,double y,double z)
{
a->x=x;
a->y=y;
a->z=z;
return 1;
}

int printpoint(point a)
{
printf("x=%lf y=%lf z=%lf/n",a.x,a.y,a.z);
}

int initline(line *l,point a,point b)
{
l->p1.x=a.x;
l->p1.y=a.y;
l->p1.z=a.z;

l->p2.x=b.x;
l->p2.y=b.y;
l->p2.z=b.z;
return 1;
}

int point2line(line l,point p,point *Q)
{
double a,b,c;
double A,B,C;

a=l.p2.x-l.p1.x;
b=l.p2.y-l.p1.y;
c=l.p2.z-l.p1.z;

A=a*p.x+b*p.y+c*p.z;
B=b*l.p1.x-a*l.p1.y;
C=c*l.p1.x-a*l.p1.z;

if (a!=0)
{
  Q->x=(A*a+B*b+C*c)/(a*a+b*b+c*c);
  Q->y=(b*Q->x-B)/a;
  Q->z=(c*Q->x-C)/a;
}
else
{
  double D,temp;
  D=c*l.p1.y-b*l.p1.z;
  temp=b*b+c*c;
  Q->y=(A*b+D*c)/temp;
  Q->z=(A*c-D*b)/temp;
  Q->x=(B+a*Q->y)/b;
}
 
return 1;
}

double p2p(point a,point b)
{
double dx,dy,dz;
dx=a.x-b.x;
dy=a.y-b.y;
dz=a.z-b.z;
return sqrt(dx*dx+dy*dy+dz*dz);
}

c 空间点到直线的垂足及距离计算相关推荐

  1. 牛客小白月赛2-B小马过河(求点到直线的垂足)

    题目链接 求点到直线的垂足分为 空间 .平面 原理: 空间: #include<iostream> #include<cmath> using namespace std; c ...

  2. 空间点到平面的垂足坐标的计算方法以及matlab实现

    问题描述: 已知空间点坐标(x,y,z),并且知道三个点的坐标(不要共线!),求解空间点到平面投影坐标. 参考百度文库的这篇文章 空间点到平面的垂足坐标的计算方法 下面是matlab的代码: %% 变 ...

  3. Opencv-python 计算点到直线的垂足点

    Opencv-python 计算点到直线的垂足点 代码 import numpy as np import cv2 as cv# 获取直线起始,结束点 def get_line_se(img, lin ...

  4. 空间点到直线的距离(hdu1174 爆头)

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

  5. 求点到直线的垂足和最近点

    1.公式(比较稳啊) 设直线方程为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)) 2 ...

  6. 空间点到直线距离的一种解法

    在工业测量过程中,时常遇到用全站仪采集空间点三维坐标,计算空间一点到空间某条直线的距离.看到网上很多人都是利用直线方程.空间向量甚至高等数学中导数的思想求解,求解过程繁琐且不容易理解.如果看成求解空间 ...

  7. HDU1174(空间点到直线的距离,用叉积)

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

  8. 图像中求点到直线的垂足

    已知图像中线段的两个点,求另外一个点到这个点的垂足. 一.垂足公式 已知直线一般式方程时: 设已知直线外一点坐标为 ( x 0 , y 0 ) (x0,y0) (x0,y0),垂足坐标为 ( x , ...

  9. 点到直线垂足坐标的计算

    假设空间某点O的坐标为(Xo, Yo, Zo),空间某条直线上两点A和B的坐标为:(X1, Y1, Z1),(X2, Y2, Z2),设点O在直线AB上的垂足为点N,坐标为(Xn, Yn, Zn).点 ...

最新文章

  1. “XXXXX” is damaged and can’t be opened. You should move it to the Trash 解决方案
  2. linux基础-网络基础知识篇
  3. mysql backup_Mysqlbackup 备份详解(mysql官方备份工具)
  4. 深入浅出统计学 第四五章 离散概率的计算与分布
  5. 张小龙做微信公众号APP,对自媒体是祸还是福?
  6. Web 应用客户端渲染和服务器端渲染的比较
  7. ubuntu(deepin)安装apache2并支持php7.0
  8. Codeforces Round #143 (Div. 2) C
  9. nginx的脚本引擎(一)
  10. SMPL: A Skinned Multi-Person Linear Model
  11. 图--广度优先遍历/深度优先遍历(c语言实现)
  12. Python容器专题 - 元组(tuple)
  13. Flex与Servlet之间数据的交互
  14. 怎样对计算机窗口进行截图,Windows10:如何对计算机屏幕上的内容进行屏幕截图...
  15. Android 100个实例
  16. minimax算法_如何通过使用minimax算法使Tic Tac Toe游戏无与伦比
  17. 全球及中国电动汽车电池市场产能规划及投资份额预测报告2021-2027年版
  18. Vue框架+Axios框架
  19. 菜鸟学JAVA之——static静态代码块
  20. 什么是云连接?云学院带你了解华为云连接知识

热门文章

  1. 读兰迪波许《追寻你童年时的梦想》
  2. 直链站php源码,源码库分享PHP版百度网盘直链/外链源码
  3. Phonics 自然拼读法 c/k,e,h,r,m,d Teacher:Lamb
  4. 大数据---旅游业的新挑战
  5. matlab rand randn 每次生成的随机数都一样的解决方案
  6. 软件——Jira是什么
  7. 在Debian上用FVWM做自己的桌面
  8. mysql plsql 语法_PL/SQL基本语法
  9. 月均数据_【分析案例】python分析医院销售数据
  10. 如何选择适合你的兴趣爱好(三十二),养花