C# 三维矢量和编程.一般问题

C# 三维矢量和编程.一般问题,c#,vector,C#,Vector,我问过这个问题,但我觉得这实际上可能是一个编程问题 首先,我的数学很糟糕,这就是为什么我要复习汗的原因。我一直在观看和学习可汗学院最棒的萨尔·汗关于媒介的故事。我的问题更多的是关于在类似CAD程序的东西上表示3D实体的一般问题。平面、向量等实体 Sal所做的一切都是以原点作为向量的起点。他小心地指出,向量可以从任何坐标开始。我怀疑这是为了使事情更简单,并解释其性质 我的问题是…当一个人在编程中表示和做数学时(假设一行从2,2,2->5,5,5)向量的一个是否将向量转换为(0,0),进行数学运算,

我问过这个问题,但我觉得这实际上可能是一个编程问题

首先,我的数学很糟糕,这就是为什么我要复习汗的原因。我一直在观看和学习可汗学院最棒的萨尔·汗关于媒介的故事。我的问题更多的是关于在类似CAD程序的东西上表示3D实体的一般问题。平面、向量等实体

Sal所做的一切都是以原点作为向量的起点。他小心地指出,向量可以从任何坐标开始。我怀疑这是为了使事情更简单,并解释其性质


我的问题是…当一个人在编程中表示和做数学时(假设一行从2,2,2->5,5,5)向量的一个是否将向量转换为(0,0),进行数学运算,然后将结果转换回它的原始位置,或者是否对它进行了“就地”处理?

首先请注意“从2,2,2->5,5,5”出发的直线不是向量。它是一条有起点和终点的直线。或者我们可以说直线的起点是(2,2,2),方向是(3,3,3)。从这个意义上说,方向是向量。换句话说,直线是起点和向量的复合物


因此,当你有一个向量时,在这种情况下(3,3,3),它没有一个起点。它只是一个方向。所以“将向量变换为(0,0)”没有任何意义。

在我有限的3D计算机图形编程经验中,这些点(例如向量的端点)被保留为棱线,并通过添加(移位)进行操作或者与矩阵相乘(拉伸、旋转)。如果你用谷歌搜索“!三维坐标矩阵的变换“Khan视频在列表中排名靠前;-)。最后,大多数变换可以围绕任意点和向量等进行定义。平移到轴或原点可以使某些变换更易于可视化。这种额外的简单性有着绝对的价值,在程序设计中尝试利用它也有着绝对的价值(同时也要注意,大多数向量仅仅是大小和方向,没有起点)。但是,如果你不得不不厌其烦地移动东西,那么简单地就地进行转换通常会更容易。