- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有平面的法向量。我想将 3D 点转换为保持它们之间相同距离的 2D 平面。基本上我想做的是使平面上所有点的 z 坐标相等。我如何着手实现这一目标并为其编写程序(最好是 C#)? .有没有我可以使用的好库。这个图书馆有用吗Point Cloud Library
我这样做的目的是在 3D 空间中有几条线(在同一平面上),我想在 2D 中表示这些线及其测量值
我正在为我使用 Google ARcore 统一开发的应用程序执行此操作
最佳答案
好的,我已经投入了相当多的时间来寻找这个问题的解决方案。我想出了一个使用 ARcore 解决这个问题的简单方法,因为我正在使用 ARCore(谷歌提供的增强现实 SDK)来解决这个问题。对于那些想在不使用 ARcore 的情况下实现这一目标的人,请引用这些问题 Question 1 Question 2必须创建新的正交基或必须旋转平面以与默认平面对齐。
对于那些在 unity 中使用 ARcore 的人,这里有一个更简单的解决方案 issue 在我创建的 GitHub 上。基本上,我们可以轻松地在 3D 平面上创建新轴,并从这个新创建的坐标系中记录坐标。
如果要在平面上投影 3d 点,则需要考虑 2d 坐标系。自然平面是由全局轴定义的平面,但它适用于一种平面(比如水平)而不适用于另一种平面(比如垂直)。另一种坐标选择是由 CenterPose 定义的,但它可以改变每一帧。所以如果你只需要 1 帧的 2d 点,这可以写成:
x_local_axis = DetectedPlane.CenterPose.rotation * Vector3.forward;
z_local_axis = DetectedPlane.CenterPose.rotation * Vector3.right;
// loop over your points
x = Vector3.Dot(your_3d_point, x_local_axis);
z = Vector3.Dot(your_3d_point, z_local_axis);
如果您需要在帧之间保持一致的 2d 坐标系,您可能希望将 anchor 附加到任何感兴趣的平面,可能在 DetectedPlane.CenterPose 处,并执行与上面相同的数学运算,但使用 anchor 旋转而不是平面旋转。 anchor 的 x 轴和 z 轴将提供在帧之间保持一致的 2d 坐标框架。
所以在这里,在平面的中心创建了一个新的局部轴,并且获得的点将只有 2 个坐标。
关于algorithm - 将 3D 平面上的点转换为 2D 点的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51079548/
我正在尝试编写一个程序来列出网络上所有设备的 IP 地址。其主要组成部分之一是能够 ping 设备。这个程序必须在 Linux、Windows 和 Mac 上运行,所以我选择了 Boost 库。 我设
如果我使用 Google 的 Jquery 加载脚本链接,那么如果用户的缓存中已经有该文件,那么当页面加载时,用户计算机是否仍会以任何方式与 Google 联系? 例子: 最佳答案 根据浏览器的缓存
我想在我的 ruby 代码中 ping 一个站点,发现 net-ping 是一个很好的库来执行此操作。不幸的是,当我尝试 gem install net-ping 时出现以下错误: C:>gem
我有一个表(test_matches),其中记录了几场比赛的结果,按日期排序。 GHFT = 目标主队全职。GAFT = 全职客场进球队。 CREATE TABLE `test_matches` (
我正在使用 phing对于一个项目的一些自动构建过程,我想知道:我怎样才能通过电子邮件获得完整的日志? 当我通过命令行启动 phing 时,会显示构建日志;我想要它: 通过电子邮件发送, 给几个收件人
尝试根据 GF 和 GA 创建一个新列“Results”。想知道如何通过定义函数和条件语句来做到这一点。以下是我对一行的初步尝试,但无法弄清楚如何将其应用于所有行,非常感谢您的帮助! 日期地点对手GF
我是一名优秀的程序员,十分优秀!