【问题标题】:Algorithms for positioning objects in a canvas在画布中定位对象的算法
【发布时间】:2010-11-06 09:43:56
【问题描述】:

我在哪里可以找到一些算法来巧妙地在画布中定位一些对象?我正在使用 javascript(带有 Raphael svg 库),但欢迎使用其他语言(或伪语言)的示例。几何不是我的强项 =)

例如有 600x800 的画布,我想以智能方式放置 n 个 60x60 大小的对象,例如:
- 一种沿 m 个同心圆定位对象的算法,偏移量为 o
- 一种沿 m 个同心正方形定位对象的算法,但频率不同(结果可能像棋盘)

还有类似的例子......我只是在寻找一些适用于我的案例的工作例子。提前谢谢你=)

【问题讨论】:

  • 据我所知,棋盘题的算法性能应该在O(n)左右。 (类似于简单的 for 循环)。我真的很期待任何(如果可能的话)更快的解决方案
  • 在我的情况下,性能不是批评的论点。我只需要管理有限数量的对象。
  • 因为我不完全理解你的问题,也许你可以上传一张你预期输出的图片。

标签: javascript canvas svg


【解决方案1】:

对于圈子:

输入: CenterPt(大概 300,400), RadiusLargestCircle(大概 270 以确保您的对象都在屏幕上) RadiusDelta(60 确保没有重叠的对象,假设对象是圆形)

计算圆数( (RadiusLargestCircle -2*RadiusDelta) / RadiusDelta )

每个圈子

  RadCir= RadiusLargestCircle - (CircleNum*RadiusDelta)

(我稍后会正确完成这个,现在就开始吧)

但基本上第一个对象 centerpt 位于 x=radiusLargestCircle, y=0

将物体2*半径分成圆的周长

对于 num 个对象

使用圆的参数方程, 将对象放置在前一个的 x 弧度处

下一个圈

【讨论】:

    猜你喜欢
    • 2021-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-18
    • 1970-01-01
    • 2016-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多