已知空间中有一个平面(n,d),n为归一化后的法向量,和该平面上的一个点a(x,y,z),如何求出以a为圆心,半径为r,位于该平面上圆的方程?
类似于这么个效果,月球围绕地球的地轴公转,现在知道地球的地轴(法向量)和地球的位置(x,y,z),可以求出公转的这个面,假设公转轨道为圆形,我现在想求这个圆形轨道的方程。
类似于这么个效果,月球围绕地球的地轴公转,现在知道地球的地轴(法向量)和地球的位置(x,y,z),可以求出公转的这个面,假设公转轨道为圆形,我现在想求这个圆形轨道的方程。
调试欢乐多
2表示平方
x^2+y^2+z^2=r^2
a*x+b*y+c*z=0
这方程各位看看是不是没问题?如果没问题,那问题就是我要求这个方程组的2个解,如何求?
然后到
a点 距离等r的方程联立 化简就行了
x^2+y^2+z^2=r^2
a*x+b*y+c*z=0(其中a,b,c,r都已知)
这个方程组的一个解比较高效一点?
现在这个问题已经解决了,需要把月亮公转拆分成2次变换,一次是地球和月亮一起围绕太阳的旋转,一次是月亮围绕地球的旋转,两次位移-旋转的矩阵一乘就是最终的位移-旋转矩阵,求月亮绕地球的旋转矩阵有2个办法,一是可以根据旋转轴向量求出轨道平面的三个欧拉角,然后D3D有个函数直接可以从一个四元数生成旋转矩阵。另外一个方法,直接把公转轴的z分量设为0,求绕轴旋转的旋转矩阵就可以了,虽然起始的位置变了,但最终的公转效果是一样的,我现在用的是这个方法,最简单,但局限就是公转轴向量必须有一个分量是0,否则月亮虽然是在绕旋转轴旋转,但中心就不是在地球了,而是旋转轴上的另外一个点。这两种方法都不用求解那个轨道方程了,但撇开D3D的世界变换方法,按正常思维来说,求解那个轨道方程还是一般方法,所以我还是想知道如编写代码求那个方程组的一个解(实际是2个解,因为0,0,0肯定是一个解),必定编译器不会化简方程。我现在的一个思路是,是不是可以根据系数确定一个解的范围然后用穷举法求一个近似解,这样显然效率非常低,有人说用matlib很容易求解,一来我没用过matlib库,二来matlib肯定也是用了什么算法求的解吧。