【问题标题】:Co-ordinates of point on circle with minimum cos/sin具有最小 cos/sin 的圆上点的坐标
【发布时间】:2017-05-04 19:56:40
【问题描述】:

当前在点 U = (ux, uy) 的车辆沿半径为 R 的圆以速度 s 和方向 d 逆时针移动(即圆的切线与 X 轴成角度 d。)在时间 t 将处于什么位置 V = (vx, vy)? 未指定圆的中心。 我看到它的方式,在时间 t 之后,它将沿着圆移动 st 或 st/R 的角度。但我在试图从这个信息中计算 V 时迷失了方向。 我可以先根据(ux, uy)、R和d找到圆心C。然后找到向量 CV 指向的位置,从而找到 V。但那是一大堆余弦和正弦。我受 CPU 的限制,所以可能一个正弦/余弦/正切是可以接受的,或者一两个平方/平方根是可以接受的。

【问题讨论】:

  • 你能多谈谈你解决这个问题的设置吗?我可以想象,除非您每秒执行数百万次,否则正弦和余弦的成本不会太大。
  • 这不是一辆车,因为它涉及以这种方式跟踪数千辆汽车,并预测是否在时间 t 内,如果它们都保持当前的轨迹,它们中的任何两个将相互碰撞。假设是,如果车辆直行,那么它将继续直行;如果它在转动,那么它会一直绕着一个圆圈转动(因为 tim t 很短,一两秒。)
  • 我认为,在没有至少 2 个三角函数的情况下获得理论上准确的结果将非常困难。也许您可以使用一些查找表来获得适合您的上下文的近似值?还是您正在处理的范围的(分段?)多项式近似?
  • 因为它是一个简短的预测,所以角度永远不会变得很大。如果角度足够小,sin(x) = xcos(x) = 1 - 0.5x^2 是合理的近似值。够好吗?
  • 您可以在相等的时间段后计算头寸,而无需大量使用 trig。功能,但这种方法对于碰撞(同一时间 - 同一位置)目的不是很有用

标签: optimization geometry cpu-usage trigonometry polar-coordinates


【解决方案1】:

这需要图表,可惜我缺乏技巧。

我假设半径速度和时间间隔使得车辆在可用时间内不会行驶超过半圈。

设 V 为车辆到达 U t 秒后的点。设圆心(不需要其坐标)为 O。则从 U 到 V 的弧长为

A = s*t

所以O对角是

a = A/R radians. 

从 U 到 V 的方向将与在 U 和 V 中间点的圆的切线方向相同,即

e = d + a/2

U 到 V 的距离是 U 到 V 的弦长。弦的中点是两个全等直角三角形的顶点,其斜边的长度为 R,在 O 处的角为 a/2。因此和弦的长度是

C = 2*R*sin( a/2)

终于

V = U + C*(cos(e), sin(e))

您可能还需要 V 处的切线方向。这是 d+a。

请注意,如果将方向 d 存储为单位向量而不是角度,则可以节省一些 sin 和 cos 调用,因为弦的方向是方向 d 通过 a/2 旋转,而 V 处的方向是d 通过 a 旋转。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-26
    • 1970-01-01
    相关资源
    最近更新 更多