我是 xna 开发的新手,想通过将位置向量传递给构造函数来定位Primitives3D 样本中的多维数据集。不幸的是,它不起作用。相反,它只是在旋转。
这就是我如何修改 cubeprimitive 类的代码:
public class CubePrimitive : GeometricPrimitive
{
public Vector3 position;
/// <summary>
/// Constructs a new cube primitive, using default settings.
/// </summary>
public CubePrimitive(GraphicsDevice graphicsDevice)
: this(graphicsDevice, 1, new Vector3(-3,0,0))
{
}
/// <summary>
/// Constructs a new cube primitive, with the specified size.
/// </summary>
public CubePrimitive(GraphicsDevice graphicsDevice, float size, Vector3 posi)
{
this.position = posi;
// A cube has six faces, each one pointing in a different direction.
Vector3[] normals =
{
new Vector3(0, 0, 1),
new Vector3(0, 0, -1),
new Vector3(1, 0, 0),
new Vector3(-1, 0, 0),
new Vector3(0, 1, 0),
new Vector3(0, -1, 0),
};
// Create each face in turn.
foreach (Vector3 normal in normals)
{
// Get two vectors perpendicular to the face normal and to each other.
Vector3 side1 = new Vector3(normal.Y, normal.Z, normal.X);
Vector3 side2 = Vector3.Cross(normal, side1);
// Six indices (two triangles) per face.
AddIndex(CurrentVertex + 0);
AddIndex(CurrentVertex + 1);
AddIndex(CurrentVertex + 2);
AddIndex(CurrentVertex + 0);
AddIndex(CurrentVertex + 2);
AddIndex(CurrentVertex + 3);
// Four vertices per face.
AddVertex(posi+(normal - side1 - side2) * size / 2, normal);
AddVertex(posi + (normal - side1 + side2) * size / 2, normal);
AddVertex(posi + (normal + side1 + side2) * size / 2, normal);
AddVertex(posi + (normal + side1 - side2) * size / 2, normal);
}
InitializePrimitive(graphicsDevice);
}
}
你能告诉我如何正确修改它吗?.. 提前致谢 :)