代码之家  ›  专栏  ›  技术社区  ›  Yanick Rochon

如何有效地将角度(以弧度为单位)转换为从0到7的索引?

  •  0
  • Yanick Rochon  · 技术社区  · 5 年前

    我有一个弧度的角度,我想用以下方式将它转换成一个从0到7的索引值:

    enter image description here

    注释 那个 0 rad 应该落在部门中间等。

    使用简单的数学,哪种方法最有效?

    2 回复  |  直到 5 年前
        1
  •  3
  •   Chrispresso    5 年前

    每个“切片”占据 pi/4 . 按照@beta的说法,您可以这样做:

    def rad2slice(rad):
        return int((4 * rad / np.pi + .5) % 8)
    
    # Quick test:
    In [22]: [rad2slice(i*np.pi/4) for i in range(8)]                               
    Out[22]: [0, 1, 2, 3, 4, 5, 6, 7]
    
        2
  •  0
  •   Blorgbeard    5 年前

    我认为这是可行的:

    import math
    
    def angle_to_sector(angle_in_rads):
      sector_size_in_rads = 2*math.pi / 8
      offset_angle = (angle_in_rads + sector_size_in_rads/2) % (2*math.pi)
      sector = offset_angle // sector_size_in_rads
      return sector