我有一个班叫
Cube
0, 0, 0
. 但是,如果我想移动立方体,缩放它的任何轴,或者旋转立方体;我不知道从哪里开始,因为我必须在
Vertex
反对。
struct Vertex {
Vector3 Position;
Vector3 Normal;
Vector2 TextureUV;
Color Color;
}
1000000
我只是把
Position
具有该值的属性(关于生成面的负值和正值)。
new Vertex(new Vector3(-1000000, -1000000, -1000000), new Vector3(-1, -1, -1), Color.White);
有四个属性:
-
职位(
Vector3
).
-
比例尺(
矢量3
-
旋转(
矢量3
-
颜色(
SharpDX.Color
我的问题是
顶点
位置,应用旋转和位置时如何计算新位置?
我尝试了基本的减法和加法,简单地改变了立方体的比例,原点保持不变
0,0,0
(请不要介意速记)。
new Vertex(new Vector3(P.X - S.X, P.Y - S.Y, P.Z - S.Z), new Vector3(1, 1, 1), Color.White);
上面的代码与当前在其他计算机上的代码不同。
问题
如何根据提供的位置、比例和旋转向量设置顶点的位置?
测试用例
下面的测试用例仅供职位使用,并向您展示我将如何测试给出的答案。
// Renders at origin.
Cube myCube = new Cube(new Vector3(0, 0, 0), new Vector3(100, 100, 100), Color.White);
// Renders to the left.
Cube myCubeLeft = new Cube(new Vector3(-250, 0, 0), new Vector3(100, 100, 100), Color.White);
// Renders to the right.
Cube myCubeRight = new Cube(new Vector3(250, 0, 0), new Vector3(100, 100, 100), Color.White);
// Renders above.
Cube myCubeUp = new Cube(new Vector3(0, -250, 0), new Vector3(100, 100, 100), Color.White);
// Renders below.
Cube myCubeDown = new Cube(new Vector3(0, 250, 0), new Vector3(100, 100, 100), Color.White);