三维坐标公式记录:

import mathimport numpy as npdef euclidean_distance(p1, p2) -> float:"""三维向量欧几里得距离Args:p1: [x, y, z, confidence]p2: [x, y, z, confidence]Returns:两个向量的欧几里得距离[浮点数]"""return np.linalg.norm(p1[:3] - p2[:3])def calculate_angle_degree(a1, a2) -> float:# 两边向量的夹角# 创建向量a和ba = np.array(a1)b = np.array(a2)# 计算两个向量的模l_a = np.sqrt(a.dot(a))l_b = np.sqrt(b.dot(b))print("向量的模:", l_a, l_b)# 向量的点积dian = a.dot(b)print("向量的点积=", dian)# 计算夹角的cos值cos_ = dian / (l_a * l_b)print("夹角的cos值=", cos_)# 求得夹角(弧度)angle_hu = np.arccos(round(cos_, 1))print(f"弧度 = ", angle_hu)# 转换为角度angle_d = angle_hu * 180 / np.piprint(f"夹角 = ", angle_d)return angle_ddef get_vector(a, b):"""获取空间向量Args:a: [x1, y1, z1]b: [x2, y2, z2]Returns:[x2-x1, y2-y1, z2-z1]"""return [b1 - a1 for a1, b1 in zip(a, b)]def cal_angle(point_a, point_b, point_c):"""根据三点坐标计算夹角点a点b ∠点cArgs:point_a: 数据类型为list,二维坐标形式[x、y]或三维坐标形式[x、y、z]point_b: 数据类型为list,二维坐标形式[x、y]或三维坐标形式[x、y、z]point_c: 数据类型为list,二维坐标形式[x、y]或三维坐标形式[x、y、z]Returns:返回角点b的夹角值--数学原理:设m,n是两个不为0的向量,它们的夹角为<m,n> (或用α ,β, θ ,..,字母表示)1、由向量公式:cos<m,n>=m.n/|m||n|2、若向量用坐标表示,m=(x1,y1,z1), n=(x2,y2,z2),则,m.n=(x1x2+y1y2+z1z2).|m|=√(x1^2+y1^2+z1^2), |n|=√(x2^2+y2^2+z2^2).将这些代入②得到:cos<m,n>=(x1x2+y1y2+z1z2)/[√(x1^2+y1^2+z1^2)*√(x2^2+y2^2+z2^2)]上述公式是以空间三维坐标给出的,令坐标中的z=0,则得平面向量的计算公式。两个向量夹角的取值范围是:[0,π].夹角为锐角时,cosθ>0;夹角为钝角时,cosθ<0."""a_x, b_x, c_x = point_a[0], point_b[0], point_c[0]  # 点a、b、c的x坐标a_y, b_y, c_y = point_a[1], point_b[1], point_c[1]  # 点a、b、c的y坐标a_z, b_z, c_z = point_a[2], point_b[2], point_c[2]  # 点a、b、c的z坐标# 向量 m=(x1,y1,z1), n=(x2,y2,z2)x1, y1, z1 = (a_x - b_x), (a_y - b_y), (a_z - b_z)x2, y2, z2 = (c_x - b_x), (c_y - b_y), (c_z - b_z)# 两个向量的夹角,即角点b的夹角余弦值cos_b = (x1 * x2 + y1 * y2 + z1 * z2) / (math.sqrt(x1**2 + y1**2 + z1**2)* (math.sqrt(x2**2 + y2**2 + z2**2)))  # 角点b的夹角余弦值degree = math.degrees(math.acos(round(cos_b, 1)))  # 角点b的夹角值return degreeif __name__ == "__main__":a = [1, 2, 3]b = [2, 3, 4]c = [3, 4, 5]print(cal_angle(a, b, c))a_b = get_vector(a, b)b_c = get_vector(c, b)print(f"a_b: {a_b}")print(f"b_c: {b_c}")print(calculate_angle_degree(a_b, b_c))

三维坐标数学计算公式相关推荐

  1. 三维坐标 偏转_三维坐标变换原理-平移, 旋转, 缩放

    给定一个二维点(x, y),那么形如(kx, ky, k)的所有三元组就都是等价的,它们就是这个点的齐次坐标(homogeneous).齐次坐标就是将一个原本是n维的向量用一个n+1维向量来表示,是指 ...

  2. 三维坐标要建一个4*4的矩阵?

    怎么平移一个三维空间中的点 我们应该怎么平移一个三维空间中的点呢?答案很简单,我们只需要对这个点的坐标中的每个分量(x,y,z)和对应轴上的平移距离相加即可.  例如,点p1(x1,y1,z1)在X轴 ...

  3. 三维坐标要建一个4*4的矩阵?平移 旋转 缩放

    移植不知道三维物体的旋转平移缩放和矩阵的关系.找到这篇文章借鉴一下. 转自:https://blog.csdn.net/ALLENJIAO/article/details/80348362 怎么平移一 ...

  4. python运用三角学通过方位角仰角与距离计算三维坐标

    00:本文目录 01:概念辨析 01.01:方位角.仰角与距离 01.02:三维坐标 02:目标 03:资源 03.01:准备 03.02:文献参考 04:开始编程 05:尾声 05.01: 05.0 ...

  5. 经纬度和球体三维坐标换算

    引言 在球面坐标系上,坐标是用经纬度标示,纬线和经线一样是为度量方便而假设出来的辅助线,定义为地球表面某点随地球自转所形成的轨迹. 任何一根纬线都是圆形而且两两平行.纬线的长度是赤道的周长乘以纬线的纬 ...

  6. 九、Teigha.Net库使用过程中常用的C#数学计算公式方法;

    目录 C#常用数学计算公式方法 01.求直线与园的交点 02.求直线与圆弧交点 03.判断三点是否共线-即三角形面积为0 04.判断两条直线是否相互垂直 05.圆与直线的交点 06.判断直线是否与当前 ...

  7. 基于OpenCV的立体相机标定StereoCalibration与目标三维坐标定位

    说明:以下涉及到的一些公式以及图片来自于Learning OpenCV. 做了快2个月的立体相机标定,遇到了一些问题,也有了一些体会,在这里记下来. 1.在做立体相机标定的时候,标定板的规范与否直接影 ...

  8. 项目需求 | PC VR头戴显示器实时三维坐标(项目经费20万)

    项目需求:PC VR头戴显示器实时三维坐标 需求内容:Windows环境下,通过双目摄像头+IMU+orb-slam获取实时三维坐标. 1.头部跟踪支持双目(四目)鱼眼摄像头的SLAM定位的算法,输出 ...

  9. Intel Realsense D435 如何通过图像识别出的比例点(x, y)获得实际点相对于摄像机原点的三维坐标(x, y, z)?

    自己也因为这个问题咨询了Intel的官方工作人员,以下是我的提问和他们的答复: My ask Before opening a new issue, we wanted to provide you ...

最新文章

  1. .NET Core EntityFramework生成自动增长的主键
  2. VBA 的编写与执行
  3. 发布webservice之后调用不通
  4. Android 禁止更换桌面,Android中如何禁用其他应用,并且不在桌面显示
  5. mysql索引红黑联盟_MySQL索引
  6. kotlin学习笔记——sqlite(anko)
  7. 盗COOKIE之方法总结
  8. 【CodeForces - 570A】Elections(模拟,水题)
  9. 《零基础》MySQL DELETE 语句(十五)
  10. 小汤学编程之JAVA番外篇——Properties工具类
  11. 我国初步建立法规,短期难扭转生物多样性减少趋势
  12. vscode中vue-cli项目es-lint的配置
  13. HTML5实践 -- 介绍css3中的几个属性:text-shadow、box-shadow 和 border-radius
  14. 计算机如何共享桌面,怎么将自己的台式电脑屏幕与多人共享
  15. 2022年度GitHub中文Java项目排行榜Top 10
  16. 发货100全功能网站系统源码
  17. Unity【HTC Vive Noitom】- 关于动作捕捉的两种解决方案
  18. 邮件服务器pop无响应,exchange2013邮箱服务器POP服务异常,客户端无法接收邮件
  19. 怎么找网页源文件位置_无法查看网页的源文件该怎么办?
  20. 机器学习学习整理(二)对数几率回归与支持向量机

热门文章

  1. 谷歌浏览器无法下载东西未响应的问题
  2. Navicat 快捷键说明
  3. 小米生态链企业商米科技完成数亿元C+轮融资,蚂蚁金服投资...
  4. ES+Kibana+IK安装
  5. 单向一对多和双向一对多
  6. 用C语言实现一个简单的扫雷小游戏(附全代码及教程)
  7. [UER#6 C]逃跑
  8. 分析企业上云的办法及意义
  9. 已知含税单价、税率、数量,计算不含税单价、不含税金额、税额
  10. ffiddler抓取手机(app)https包