【发布时间】:2021-09-15 11:02:09
【问题描述】:
我有 3 个锚节点,比如说 A、B、C。 A 与 B 相连,B 与 C 相连,形成一个“开放三角形”。
我需要计算两条线在B点形成的角度。
这怎么可能?
【问题讨论】:
-
我对 arcore 或 sceneform 都不熟悉,但如果他们提供名为
atan2的东西并且您知道三个节点的坐标,那么 atan2 应该可以工作。见en.wikipedia.org/wiki/Atan2
我有 3 个锚节点,比如说 A、B、C。 A 与 B 相连,B 与 C 相连,形成一个“开放三角形”。
我需要计算两条线在B点形成的角度。
这怎么可能?
【问题讨论】:
atan2 的东西并且您知道三个节点的坐标,那么 atan2 应该可以工作。见en.wikipedia.org/wiki/Atan2
我终于设法使用这些说明实现了这一点:
val abLen = Vector3.subtract(pointNodes[0].worldPosition, pointNodes[1].worldPosition).length()
val bcLen = Vector3.subtract(pointNodes[1].worldPosition, pointNodes[2].worldPosition).length()
val prodLen = abLen * bcLen
val dotProd = Vector3.dot(Vector3.subtract(pointNodes[0].worldPosition, pointNodes[1].worldPosition), Vector3.subtract(pointNodes[2].worldPosition, pointNodes[1].worldPosition))
val dp = dotProd / prodLen
val angleInDegrees = acos(dp.toDouble()) * 180 / Math.PI
其中 pointNodes 是一个锚节点数组,包含 3 个锚节点 A 在 0、B 在 1 和 C 在 2。
【讨论】: