math - 找到球体上两点之间的中点
问题描述
我有一个以radius=1
为中心的球体origin=(0, 0, 0)
。在这个领域,我有几点我知道(见图)。现在我想根据这个规则找到新的点:
通过将球体上两点之间的距离平分得到一个新点。
在这个例子中(见图),我们可以假设我想找到“FT7”和“FCz”之间的中点。我有“FT7”和“FCz”的xyz(和球面)坐标。
根据我之前的研究,这可能涉及计算大圆距离……然后找到结果弧的中点。但我不知道如何做到这一点,以及这是否是正确的方法。
最后,这个问题在一些数学网站上可能会更充分地提出,但我希望有一种计算和直观的方法来解决这个问题。
解决方案
找到“中点”的一种简单方法是以下两步过程:
- 计算连接两个给定点的线段的实际中点。如果这两个点不在球体的相对两侧,则该中点将不是原点,而是在球体内。
- 规范化该点以使其远离原点并移到球体上。
如果你的两点是(x1, y1, z1)
和(x2, y2, z2)
,中点是
((x1+x2)/2, (y1+y2)/2, (z1+z2)/2)
让我们称之为(x3, y3, z3)
。该点与原点的距离是sqrt(x3^2 + y3^2 + z3^2)
--让我们称之为L
。如果该点是原点,L
则为零,并且根据您的定义没有“中点”。否则,您想要的“中点”是
(x3/L, y3/L, x3/L)
因为你的球体有半径1
。如果半径是别的东西,将这些坐标乘以半径。一些编程语言可以使计算变得更简单——有些已经有了标准化功能。
推荐阅读
- sap - 未从 SAP Adobe 表单打印字段值
- spring-boot - 从反向代理隐藏客户端IP
- java - 未找到产品名称的数据库类型:春季批处理中的 [Apache Hive]
- azure - 从 Azure 流分析中的数组中提取某些值,然后手动添加其他值
- go - Golang gRPC 默认值
- javascript - 自动执行指定可变时间周期的功能
- java - 如何在 mapstruct 中使用来自不同类的另一个映射
- php - 在 Laravel 中获取与类别相关的帖子
- elasticsearch - Elasticsearch:为什么完全匹配的分数低于部分匹配
- chaos - 混沌工程最佳实践