我希望能够在 3D 环境中沿直线移动粒子,但我想不出如何根据 3D 空间中的两个点计算出下一个位置?
我创建了一个结构,它代表一个具有位置和下一个位置的粒子?这也适合计算下一个移动位置吗?我知道如何使用以下方法初始设置下一个位置:
// Set particle's direction to a random direction
void setDirection(struct particle *p)
{
float xnm = (p->location.x * -1) - p->velocity;
float xnp = p->location.x + p->velocity;
float ynm = (p->location.y * -1) - p->velocity;
float ynp = p->location.y + p->velocity;
float znm = (p->location.z * -1) - p->velocity;
float znp = p->location.z + p->velocity;
struct point3f nextLocation = { randFloat(xnm, xnp), randFloat(ynm, ynp), randFloat(znm, znp) };
p->nextLocation = nextLocation;
}
我使用的结构是:
// Represents a 3D point
struct point3f
{
float x;
float y;
float z;
};
// Represents a particle
struct particle
{
enum TYPES type;
float radius;
float velocity;
struct point3f location;
struct point3f nextLocation;
struct point3f colour;
};
我会以完全错误的方式解决这个问题吗?
这是我所有的代码http://pastebin.com/m469f73c2