【问题标题】:algorithm for finding out pixel coordinates on a circumference of a circle求圆圆周上的像素坐标的算法
【发布时间】:2009-05-29 09:15:47
【问题描述】:

如果我知道圆心的像素坐标、圆的半径和垂直角,我如何在圆的圆周上找到一定程度的像素值。 基本上,我正在尝试在不同时间(1 点钟、2 点钟等)绘制时钟的指针

【问题讨论】:

    标签: math geometry pixels


    【解决方案1】:

    h 是小时,作为一个介于 0 和 12 之间的浮点数(h=2.25 是 02:15 等)。(cX,cY) 是中心的坐标。 hLengthmLength 是时针和分针的长度。

    // Hour hand
    hAngle = 2.0*Pi*h/12.0; // 0..12 mapped to 0..2*Pi
    hX = cX + hLength * sin(hAngle);
    hY = cY - hLength * cos(hAngle);
    
    // Min hand
    mAngle = 2.0*Pi*h; // 0..1 mapped to 0..2*Pi, etc.
    mX = cX + mLength * sin(mAngle);
    mY = cY - mLength * cos(mAngle);
    

    【讨论】:

      【解决方案2】:

      其中圆心为(X0, Y0),半径为R,与x轴的夹角为theta:

      X1 = (R * cos theta) + X0
      

      Y1 = (R * sin theta) + Y0
      

      【讨论】:

      • 这不应该被投票这么高。他似乎不知道 theta 的值。 Eric Bainville 的回答更完整。
      • @jmucchiello - 不确定我是否理解你......我们被要求提供一种算法,我给出了一个带有形式参数的函数的描述。在这个阶段,没有人知道 theta 的“价值”!如果您的意思是我没有计算时钟指针运动的比例因子,以及每个小时刻度的弧度角度,那么我没有计算绝对正确。我有工作要编写自己的代码!
      • 是的,我想我问了 2 个问题。您的答案非常适合第一部分。谢谢。
      【解决方案3】:

      如果 (x1,y1) 是圆周上的一个点,而 (x,y) 是圆心,则 x1 = x + r * cos(angle)y1 = y + r * sin(angle)

      【讨论】:

      • 请注意,这是假定标准的“数学”坐标系,其中 Y 向上增加。在典型的 2D 计算机图形中,这是反转的(使 Y 随像素地址增长)。
      • 这仅对以 origo 为中心的圆有效。
      • 只需添加中心的坐标即可。
      【解决方案4】:

      如果中心在x0, y0, 0,0 iz 在左下角,那么1点钟在x0 + rsin(2π/3), y0+rcos (2π/3)。

      【讨论】:

        【解决方案5】:

        从中心画线到用sin 计算出的坐标,y 坐标用cos 计算x 坐标(两者都乘以手的长度)。

        Wikipedia has more information on how sin and cos "work".

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-08-26
          • 1970-01-01
          • 1970-01-01
          • 2017-06-24
          • 1970-01-01
          • 2012-11-02
          相关资源
          最近更新 更多