一个扩大/缩放/膨胀/放大三角形的算法

4
我正在寻找一种算法,通过给定的缩放因子来扩大三角形的大小。如果我将 3 个坐标与缩放因子相乘,且三角形不在原点上,则三角形也会随着缩放而平移,这并不是所需的效果。
三角形需要在保持原位的同时变大。
我的初始想法是找到三角形中心,将三角形偏移至原点,进行缩放,然后再偏移回来。但是,可能有比这更有效率的方法?
另外,如果这是唯一的方法,那么找到三角形中心的最合适方式是什么?

4
a) 首先要关注正确性,如果你发现自己太慢,那么再考虑效率。 b) 有至少3761种定义三角形“中心”的方法 - 只有你可以决定要使用哪一种 :) - AakashM
标准智慧在这种情况下不适用 :) 实际上是为了实现一个粗略的3D渲染,必须处理成千上万个动画三角形,我更担心的是效率而不是正确性。另外,如果算法取决于它,我需要关于选择正确中心的建议。 - MontyGomery
这仅适用于cromulent三角形。 - finnw
比4次加法和2次乘法更高效(好吧,对于中心计算再加上4次加法和2次乘法)?我想不是。 - Christian Rau
3个回答

2
今日免费次数已满, 请开通会员/明日再来

1
使用这个算法生成新的坐标会很有效。
X_new = X_cg + (X_old-X_cg)*Scale
Y_new = Y_cg + (Y_old-Y_cg)*Scale

X_cg 是您几何图形的几何中心


事实上,这正是他目前的方法。但是,你说得对,这也是最有效的方法。 - Christian Rau

0

一旦你有了中心点,你可以这样做:

  1. 计算三角形的一个点到中心的距离,用向量表示。例如 (3,4)。
  2. 将这些值加倍(或者三倍,随意),例如 (6,8)。
  3. 将新的点与中心点进行比较。例如,如果中心点是 (1,2),则将新点添加到该点并得到 (7,10)。
  4. 对于三角形的其他点重复以上步骤。

这应该有效 :)

要计算中心点,我会计算最高点和最低点之间的差异,将其减半,并加到最低点上(这样你就有了这两个点的中间点),然后再对左右两侧重复此过程。这应该可以给你中心点。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接