【发布时间】:2017-05-19 13:24:25
【问题描述】:
我有兴趣计算the "optical alignment" of an icon。例如:
如果您熟悉 UI 设计,您就会知道某些图标,例如上面展示的“播放”按钮三角形,经常会觉得格格不入。即使图标的矩形边界在技术上居中,图标仍然感觉不居中。这是因为图标的表面积分布不均匀。
我尝试过的:
有趣的是,当我在问之前研究这个问题时,在Googling "volumetric center icon" 之后,出现的第一个谷歌结果是a question I asked at Mathematics Stack Exchange on this very same topic 2 years ago,没有答案。
On Math SE there is a similar question,但由于它使用 JPEG 图像作为示例,答案指出的解决方案是使用像素网格来计算解决方案。我当然可以在 HTML5 画布上渲染矢量图标(我是一名网络开发人员,最终希望在 JavaScript 中执行此操作,即使我只是将其标记为“算法”)并计算像素,但这会很丑至少可以说的方法。
我想知道是否有任何算法可以用来计算矢量图标的体积中心,甚至可以简单地计算光学对齐(这可以通过在图标周围绘制尽可能小的圆圈来手动完成,如上所示,但我'对自动方法感兴趣)。我意识到这可能是一个具有挑战性的问题,因为矢量图标可以由任意数量的形状组合而成,矢量形状中可以有孔,等等。
问题:
有人知道如何编写这样的算法吗?当涉及到诸如此类的复杂数学算法时,我不知道从哪里开始。
注意:有this question,但它似乎只是在询问多边形,答案并没有解决奇数曲线。
【问题讨论】:
-
我想在事后指出:我确实意识到体积中心和光学对准是两个稍微不同的东西 - 我对哪个更容易计算感兴趣。跨度>
-
中间的图标总是多边形吗?如果是这样,您可以收集所有点并确定多边形质心,然后找出它与圆心之间的差异,以计算出您未对齐的程度。只需将形状移动到该向量的负值即可对齐。
-
@AsadSaeeduddin 不,问题是关于“任何矢量形状”,包括可以想象的任何曲线和线段组合。
-
你可以在曲线上叠加一个任意精确的多边形并从中计算质心...
-
真棒的问题!首先想到的是将整体形状细分为三角形(因为三角形有一个简单的质心和面积方程),然后根据加权点集计算它们的共同质心:(X; Y ) — 质心,W — 面积。
标签: algorithm