我正在使用将x和y坐标除以z值的方法,然后渲染它就像2D游戏/东西一样创建3D外观。问题是当z值小于0时,它会翻转坐标的象限,看起来非常奇怪。目前,如果有人可以帮助我修复负z值的事情,并告诉我如何旋转,那么只有运动。我没有使用和矩阵只有数学的x,y和z的向量,如果有帮助的话。我正在使用Java而没有额外的库。 谢谢你的帮助。
我使用了透视矩阵并将其乘以我的向量,但它在这里不起作用是我的代码可能有问题。我只是将矢量转换为1乘3矩阵,然后执行此操作。
public Matrix multiply(Matrix matrix)
{
Matrix result = new Matrix(getWidth(),getHeight());
for(int y = 0; y < getHeight()-1; y++)
{
for(int x = 0; x < getWidth()-1; x++)
{
float sum = 0.0f;
for(int e = 0; e < this.getWidth()-1; e++)
{
sum += this.matrix[e + y * getWidth()] * matrix.matrix[x + e * matrix.getWidth()];
}
result.matrix[x + y * getWidth()] = sum;
}
}
return result;
}
答案 0 :(得分:1)
只是在这里猜测,但听起来你正在尝试进行投影变换:你正在建模3D对象(具有X,Y和Z坐标的东西)并且你想要投影它们到一个2D窗口(即屏幕)。
天真投影变换中Z的含义是点与平行于屏幕的平面之间的距离,它通过您的眼球。如果你有-Z的分数,则代表你头脑后面的分数。
听起来你需要翻译Z坐标,以便Z = 0是屏幕的平面,或者是与屏幕平行并且在屏幕后面的平面。 (换句话说,为你的所有Z添加一个常数,这样它们都不是负数。)