【问题标题】:Keeping Squares Along A Circle's Circumference沿圆的圆周保持正方形
【发布时间】:2013-10-27 03:05:34
【问题描述】:

我正在为 iOS 应用程序沿圆形路径绘制正方形。然而,在圆的某些点上,正方形开始超出圆的圆周。如何确保方块留在里面?

这是我制作的插图。绿色方块代表我需要方块实际所处的位置。红色方块是它们实际出现的位置,给定每个方块左上角的以下值:

x = origin.x + radius * cos(DEGREES_TO_RADIANS(angle));
y = origin.y + radius * sin(DEGREES_TO_RADIANS(angle));

原点是指圆心。我有一个循环,对从 1 到 360 度的每个角度重复此操作。

编辑:我改变了我的设计,将正方形的中心定位在圆形路径上,而不是它们的左上角。

【问题讨论】:

    标签: ios uikit geometry


    【解决方案1】:

    为什么不把正方形的中心画在大圆内的小圆上?

    您可以通过数学计算准确确定半径必须是多少才能确保精确匹配,但您也可以快速尝试和错误。

    这样做可以确保您的对象最终也以一个实际的圆圈布局,如果您只是确保每个正方形的一个且只有一个角接触较大的边界圆圈(这将创建一个略带八角形的形状而不是圆形)

    【讨论】:

    • 太棒了!随意将其标记为您选择的答案,以便以后访问此问题的人知道您选择了什么!
    【解决方案2】:

    ryan cumley 的回答让我意识到我一直以来是多么愚蠢。我只需要将每个正方形的锚点更改为它的中心就可以解决它。现在 x 和 y 的每个计算值都会将每个正方形的中心准确地定位在圆形路径上。

    【讨论】:

    • 永远不要对您提出的解决方案感到“愚蠢”,完成大多数任务总是有许多可接受的方法,而且很多时候功能胜于聪明。很高兴它对你有用
    【解决方案3】:

    选项 1)您总是可以找到圆的直径,然后使用勾股定理,您可以创建一个完全适合圆的正方形。然后,您可以遍历刚刚在圆圈中创建的正方形以创建较小的正方形,但我怀疑这就是您的目标。

    选项2)找出正方形对角线长度的一半应该是多少,并在第一个环内创建一个环。然后沿着内部路径在关键点(例如 30 度或 15 度等)放置正方形。例如:http://i.imgur.com/1XYhoQ0.png 如您所见,较小的(内)圆位于每个绿色正方形的中心,这确保了每个正方形的角刚好接触到较大的(外)圆。显然,我廉价制作的画作并不完美,但在数学上它会起作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-28
      • 1970-01-01
      相关资源
      最近更新 更多