java - 找到一组 3D 线的最近点
问题描述
这个问题困扰了我好几天。
我有一组由一些数据形成的线,这些数据产生以下形式的 3D 线:
P = a + d t
其中a是位置向量,d是单位方向向量。
所以基本上我想使用最小二乘法找到离所有这些线最近的点。我一直无法在线找到算法或如何在 Java 中实现它。我使用 apache commons 数学库,使用 Vector3D 或 RealVectors 来计算线方程。因此,任何有关解决此问题的算法或示例代码的帮助都会有所帮助。
解决方案
假设您要最小化到线的距离平方和,并假设 WLOG 向量d为单位,则总平方距离为
Σ (( ap )² - ( ap . d )²)
其中总和接管所有 ( a , d ) 行。
这个表达式的梯度是
Σ (2 ap - 2 ( ap . d ) d )
通过取消它,我们在p中得到一个线性系统。
推荐阅读
- javascript - 使用 javascript 延迟加载 Elementor 部分
- android - Google Pay 未显示付款单,它在新标签页中打开
- javascript - React 从 Node 下载一个 pdf 文件并在选项卡中打开它
- docusignapi - 我在哪里可以获得演示帐户的“X-DocuSign-AppToken”?我从哪里获得我的模拟账户或试用账户的经销商代码和密码?
- r - 使用 fill = NA 将向量作为列添加到 data.frame
- django - 与编辑器(ckeditor)上传约 1 天后图像未显示
- java - 将从方法返回的值存储到二维数组
- django - 如何让 Nextcloud 用户在 django 中使用类似于 SO 中“使用 Github 登录”的单点登录?
- many-to-many - 使用 .NET EF Core 5 TrackableEntities 更新多对多集合
- html - RShiny:试图让我的传单居中,但我希望传奇保持左对齐