【问题标题】:Calculate width of convex polygon at specific angle计算特定角度凸多边形的宽度
【发布时间】:2014-05-26 18:14:29
【问题描述】:

在给定顶点和某个角度的情况下,我可以计算凸多边形宽度的方法是什么?这样做的目的是找到以某种速度移动的多边形的横截面宽度,以便在模拟过程中计算某种空气阻力。

我想最大的问题是我现在对几何学的了解并不多,所以如果我看到它,我不确定我是否会认出解决方案。我能找到的最接近的算法处理找到多边形的最小宽度,但我真的在寻找某个速度方向的宽度。我有点难过。

【问题讨论】:

    标签: algorithm geometry polygon convex-polygon


    【解决方案1】:

    只需将多边形的所有顶点旋转所需的角度,并找到顶点的最大和最小 Y 坐标的差值(例如,沿 X 轴的零角度宽度为 Ymax-Ymin)。

    Rotation_matrix 在这里。顶点的旋转坐标为:

      x'=x*Cos(Fi)-y*Sin(Fi)
      y'=x*Sin(Fi)+y*Cos(Fi)
    

    请注意,您只需要找到 y'

    【讨论】:

    • 你的方法很好,但是不应该用 max(X') - min(x') 而不是 max(y') - min(y') 来计算沿 X 轴的宽度? (我假设宽度是水平x方向的尺寸,高度是垂直y方向的尺寸。)
    • 谢谢。我只是用一些简单的矩形对其进行了测试,以确保我的头缠在它周围,而且看起来是合法的。顺便说一句,我相信 M Oehm 是对的,因为我一直在寻找 max(x')-min(x')。这完全取决于你如何解释“宽度”。
    • 是的,我考虑过“沿方向的宽度”的另一种解释,可能不太直观...
    • 仅供参考,如果顶点数量很大,可以通过利用凸性在 O(Log(N)) 操作中完成此操作,而不是 O(N)。
    猜你喜欢
    • 2020-10-06
    • 2021-03-16
    • 2012-03-25
    • 2016-02-16
    • 2011-11-20
    • 2021-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多