如何在一条线上找到均匀分布的点?

时间:2012-11-04 17:12:40

标签: java line point

这是为了找到位于特定线上的均匀分布的点(从起始位置,线上的2个点,与水平面成一个角度),然后经过第二个点,绘制一些东西,使它在在给定方向上的固定利率。

我正在考虑计算一个斜率,它会让我垂直移动到水平移动。但是,我甚至不知道如何确保它们在两个不同的行中具有相同的速度。例如,如果有两对不同的点,那么绘图在两个点上移动相同距离所需的时间相同。

我在描述正确的想法吗? OpenGL中是否有任何方法可以帮助我?

enter image description here

1 个答案:

答案 0 :(得分:1)

你应该使用矢量。从一个点开始并沿向量的方向行进。例如:

typedef struct vec2 {
    float x;
    float y;
} vec2;

定义了基本的2D矢量类型。 (这将在3D中工作,只需添加一个z坐标。)

要在给定方向上移动固定距离,只需取一些起点并添加按标量调整的方向向量。像这样:

typedef struct point2D {
    float x;
    float y;
} point2D; //Notice any similarities here?

point2D somePoint = { someX, someY };
vec2 someDirection = { someDirectionX, someDirectionY };
float someScale = 5.0;
point2D newPoint;

newPoint.x = somePoint.x + someScale * someDirection.x;
newPoint.y = somePoint.y + someScale * someDirection.y;

newPoint方向为someDirection方向的5个单位。请注意,您可能希望在以这种方式使用它之前规范化someDirection,因此它的长度为1.0:

void normalize (vec2* vec)
{
    float mag = sqrt(vec->x * vec->x + vec->y * vec->y);
    // TODO: Deal with mag being 0
    vec->x /= mag;
    vec->y /= mag;
}