【问题标题】:Math Problem: Getting Coordinates From Position And Angle数学问题:从位置和角度获取坐标
【发布时间】:2010-06-20 00:55:33
【问题描述】:

首先让我说明我的数学很糟糕。

我正在尝试重新定位和旋转一个矩形。但是,我需要从一个不是 0,0 的点旋转矩形,而是根据它的坐标移动了多远。我确信这没有多大意义,所以我做了一些草图来帮助解释我需要什么。

上图显示了红色矩形从 0% 到 100% 的 3 个阶段。红色矩形的 X 和 Y 坐标(红色矩形的左上角)仅移动蓝色矩形高度的一定百分比。

红色矩形可以旋转。仅关注上面的中间示例(“距离 -50%”),其中红色矩形重新定位在蓝色矩形高度的 -50 处,上图中的新角度现在为 -45º。它已经从它的 0, 0 点旋转了。

现在,我的问题是我希望它的旋转点反映它的位置。

红色和蓝色矩形大小相同,但宽度和高度相反。因为红色矩形的 0,0 坐标现在是蓝色矩形高度的 -50%,并且由于它们具有相反的宽度和高度,我希望旋转点是红色矩形宽度的 50%(或蓝色矩形的 50%高度,这是同一件事)。

而不是专门告诉红色矩形以它的宽度的 50% 旋转,为了做我想做的事,我需要通过使用一个公式来模拟这样做,该公式将定位红色矩形的 X 和 Y 坐标,以便它的旋转点反映了它的位置。

【问题讨论】:

  • 关于创建图解数学指南,安装inkscape...
  • @TheDarkIn1978: 本来想回答的,但 duffymo 似乎已经打败了我。您是否使用 Inkscape 制作这些出色的插图?
  • 我用的是 Adob​​e Illustrator
  • @TheDarkIn1978:谢谢!我也发布了答案,请查看。
  • 哇,我和数学不是朋友。哈哈。谢谢大家有见地的回答。

标签: math coordinates trigonometry angle


【解决方案1】:

这是您问题的图解解决方案:

【讨论】:

    【解决方案2】:

    其实很简单。

    1. 让我们确定要旋转矩形的点,即旋转矩形时不会移动的旋转点 (RP) .让我们假设该点由下图中的菱形表示。

    2. 平移 4 个点,使 RP 位于 (0,0)。假设该点的坐标是(RPx,RPy),因此用这些坐标减去矩形的所有4个角。 p>

    3. 使用rotation matrix 旋转点(将点逆时针围绕原点旋转某个角度,由于之前的平移,现在是旋转点):

    下图为逆时针旋转45°的矩形。

    4. 将矩形向后平移(将 RP 添加到所有 4 个点):

    我想这就是你想要的:)

    【讨论】:

    • 感谢您的视觉效果 - 帮助了我
    【解决方案3】:

    我不完全理解您需要什么,但似乎围绕任意点旋转矩形的过程可能会有所帮助。

    假设我们要围绕原点 (0,0) 旋转一个点 (x,y) d 弧度。旋转点的位置公式为:

    x' = x*cos(d) - y*sin(d)
    y' = x*sin(d) + y*cos(d)
    

    现在我们不想绕原点旋转,而是绕给定点 (a,b) 旋转。我们要做的就是先把原点移到(a,b),然后应用上面的旋转公式,再把原点移回(0,0)。

    x' = (x-a)*cos(d) - (y-b)*sin(d) + a
    y' = (x-a)*sin(d) + (y-b)*cos(d) + b
    

    这是围绕点 (a,b) 旋转点 (x,y) d 弧度的公式。

    对于您的问题 (a,b) 将是蓝色矩形右侧中间的点,而 (x,y) 将是红色矩形的每个角。该公式给出了 (x',y') 为旋转的红色矩形角的坐标。

    【讨论】:

      【解决方案4】:

      您似乎可以通过最初更巧妙的定位来避免更复杂的旋转?例如,在最后一个示例中,将红色框定位在“-25% 蓝色高度”和“-25% 红色高度”——如果我遵循你的参考方案——然后执行你想要的旋转。

      【讨论】:

        【解决方案5】:

        如果知道原点O和旋转矩形边上的一点P,就可以计算出两者之间的向量:


        (来源:equationsheet.com

        你可以通过与这个向量的点积得到向量和x轴之间的角度:


        (来源:equationsheet.com

        鉴于此,您可以通过将矩形上的任何点乘以旋转矩阵来变换它:


        (来源:equationsheet.com

        【讨论】:

        • 无法想象为什么这被否决了,尤其是在它写成三年之后。
        猜你喜欢
        • 2018-03-23
        • 1970-01-01
        • 2019-01-08
        • 2011-09-24
        • 2012-05-27
        • 1970-01-01
        • 2011-11-28
        • 2020-01-17
        • 1970-01-01
        相关资源
        最近更新 更多