c++在两个点之间取点

  • 本文关键字:两个 之间 c++ c++
  • 更新时间 :
  • 英文 :


所以我有两个点,我想在它们之间获得点,以便更顺利地传送旅行。

POINT a; //Character Position
POINT b; //Some random map position

我使用这个公式是为了先得到一个中点,但我想在到达b点之前增加更多的旅行点。

POINT midpoint(const POINT& a, const POINT& b) 
{
POINT ret;
ret.x = (a.x + b.x) / 2;
ret.y = (a.y + b.y) / 2;
return ret;
}

我想我可以更频繁地计算中点来获得更短的位置,但我想知道是否有一种更动态的方法来做到这一点,而不是在几个不同的中点编码。

我不想继续使用这种简单的方法:

POINT middlepoint = midpoint(a, b);
POINT closerpoint = midpoint(a, middlepoint);

我希望它如何移动-点的数量不太重要

这些都只是使用比例。

void MakePoints( const POINT& a, const POINT& b, int n, std::vector<POINT> & pts )
{
pts.clear();
pts.push_back( a );
int dx = b.x - a.x;
int dy = b.y - a.y;
for( int i = 1; i <= n, i++ )
{
pts.emplace_back( a.x + dx * i / n, a.y + dy * i / n );
}
}

如果您的POINT类实现了一个点与floatdouble的乘法,以及两个点的加法(这是两个方便的操作来支持),只需制作一个随时间从0到1变化的floatdouble,并执行以下操作:

float t = ...;  // changes from 0 to 1 over time
POINT intermediate = a * (1 - t) + b * t;

最新更新