【问题标题】:Scaling objects from a center point by a specific number按特定数字从中心点缩放对象
【发布时间】:2013-09-13 17:20:31
【问题描述】:

我不确定我的程序是否做错了,但如果可以的话,我可以使用一些快速指导,而且问题很可能是我正在认真考虑它(对我来说总是这样) 并且我想不出解释它的方法(因此这个问题的标题很糟糕)并给我带来了一些麻烦,只是谷歌搜索帮助。

我知道如何通过以下方式缩放对象:

double scale = 2.0;
Array<Real2> newPoints;
Foreach(Real2 point, points)
{
Vector2 vector = point - centerPoint;
vector *= scale;
newPoints.Add(center + vector);
}

但是,假设我想将对象的大小缩放 3.6(单位)而不是百分比。我该怎么做?

至少对我来说,我会按照以下方式做一些事情是有道理的

vector *= 1 - (3.6/vector.length);

但我在运行我的应用程序时仍然得到不正确的结果。对这个问题有任何帮助吗?就像我说的对不起,如果我解释不正确,我对那些东西很可怕,所以如果有的话我可以澄清让我知道。感谢您的帮助。

【问题讨论】:

  • 我不确定您到底想要做什么。假设您从向量 (0, 10) 开始。你希望最终结果是什么? (0, 13.6)? (0, 3.6)? (0, 6.4)?
  • “将大小缩放 3.6”是什么意思?根据定义,缩放意味着乘以一个常数因子,就像第一个例子一样。听起来你想做其他事情,但不清楚是什么。
  • 对不起,好吧,让我们举个例子,我有一张图片,我想将图片从每个顶点缩放 3.6 个像素@MikeSeymour 这有意义吗?
  • @TaylorBrandstetter ^^ 这有意义吗?
  • @Chris:好的。在这种情况下,比例为(old_size + 3.6) / old_size。对于所有向量,它仍然是相同的。

标签: c++ math vector geometry scaling


【解决方案1】:

您似乎想要缩放对象,使其新尺寸比旧尺寸大 3.6 个单位。在这种情况下,代码将是相同的,除了

scale = (old_size + 3.6) / old_size;

您仍然需要将每个向量缩放相同的数量,以保持对象的整体形状。

【讨论】:

  • old_size 你的意思是矢量的length?因为,在我看来,在这种情况下,每个向量的比例都会不同......
  • @PetrBudnik:想要大 3.6 个单位的“对象”的大小。
  • 我正要问同样的问题?我可以看到你用这个去哪里了,我开始在这里解开云,因为我知道你来自哪里。
  • @MikeSeymour 我明白你的意思。令人困惑的是 2D 矢量通常描述 2D 对象。我想,“将正方形的大小增加 3.6 个单位”对我来说没有多大意义。应该有一个指定的方向,沿着这个方向发生。不过,我想,OP的意思是“在所有方向上增加相同数量的单位”。当然,这通常不会保留整体形状。
猜你喜欢
  • 2018-01-18
  • 1970-01-01
  • 1970-01-01
  • 2013-03-29
  • 2016-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-04
相关资源
最近更新 更多