c 空间点到直线的垂足及距离计算
已知条件:
已知空间一个点的坐标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 空间点到直线的垂足及距离计算相关推荐
- 牛客小白月赛2-B小马过河(求点到直线的垂足)
题目链接 求点到直线的垂足分为 空间 .平面 原理: 空间: #include<iostream> #include<cmath> using namespace std; c ...
- 空间点到平面的垂足坐标的计算方法以及matlab实现
问题描述: 已知空间点坐标(x,y,z),并且知道三个点的坐标(不要共线!),求解空间点到平面投影坐标. 参考百度文库的这篇文章 空间点到平面的垂足坐标的计算方法 下面是matlab的代码: %% 变 ...
- Opencv-python 计算点到直线的垂足点
Opencv-python 计算点到直线的垂足点 代码 import numpy as np import cv2 as cv# 获取直线起始,结束点 def get_line_se(img, lin ...
- 空间点到直线的距离(hdu1174 爆头)
爆头 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submiss ...
- 求点到直线的垂足和最近点
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 ...
- 空间点到直线距离的一种解法
在工业测量过程中,时常遇到用全站仪采集空间点三维坐标,计算空间一点到空间某条直线的距离.看到网上很多人都是利用直线方程.空间向量甚至高等数学中导数的思想求解,求解过程繁琐且不容易理解.如果看成求解空间 ...
- HDU1174(空间点到直线的距离,用叉积)
爆头 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submiss ...
- 图像中求点到直线的垂足
已知图像中线段的两个点,求另外一个点到这个点的垂足. 一.垂足公式 已知直线一般式方程时: 设已知直线外一点坐标为 ( x 0 , y 0 ) (x0,y0) (x0,y0),垂足坐标为 ( x , ...
- 点到直线垂足坐标的计算
假设空间某点O的坐标为(Xo, Yo, Zo),空间某条直线上两点A和B的坐标为:(X1, Y1, Z1),(X2, Y2, Z2),设点O在直线AB上的垂足为点N,坐标为(Xn, Yn, Zn).点 ...
最新文章
- “XXXXX” is damaged and can’t be opened. You should move it to the Trash 解决方案
- linux基础-网络基础知识篇
- mysql backup_Mysqlbackup 备份详解(mysql官方备份工具)
- 深入浅出统计学 第四五章 离散概率的计算与分布
- 张小龙做微信公众号APP,对自媒体是祸还是福?
- Web 应用客户端渲染和服务器端渲染的比较
- ubuntu(deepin)安装apache2并支持php7.0
- Codeforces Round #143 (Div. 2) C
- nginx的脚本引擎(一)
- SMPL: A Skinned Multi-Person Linear Model
- 图--广度优先遍历/深度优先遍历(c语言实现)
- Python容器专题 - 元组(tuple)
- Flex与Servlet之间数据的交互
- 怎样对计算机窗口进行截图,Windows10:如何对计算机屏幕上的内容进行屏幕截图...
- Android 100个实例
- minimax算法_如何通过使用minimax算法使Tic Tac Toe游戏无与伦比
- 全球及中国电动汽车电池市场产能规划及投资份额预测报告2021-2027年版
- Vue框架+Axios框架
- 菜鸟学JAVA之——static静态代码块
- 什么是云连接?云学院带你了解华为云连接知识
热门文章
- 读兰迪波许《追寻你童年时的梦想》
- 直链站php源码,源码库分享PHP版百度网盘直链/外链源码
- Phonics 自然拼读法 c/k,e,h,r,m,d Teacher:Lamb
- 大数据---旅游业的新挑战
- matlab rand randn 每次生成的随机数都一样的解决方案
- 软件——Jira是什么
- 在Debian上用FVWM做自己的桌面
- mysql plsql 语法_PL/SQL基本语法
- 月均数据_【分析案例】python分析医院销售数据
- 如何选择适合你的兴趣爱好(三十二),养花