C#Vector3D运算符' - '不能应用t类型'Vector3D'和double
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#Vector3D运算符' - '不能应用t类型'Vector3D'和double相关的知识,希望对你有一定的参考价值。
太空探索测试版的那些人一直帮助我计算轨道元素,但我一直坚持在C#中应用一个公式一段时间,需要一些建议。
该公式适用于偏心矢量使用:
{thing e = case in frame} h} {}} r} {r} {|| r ||} $$
(e = v * h / mu - r / || r ||)
我的公式代码如下:
double V = 7770;
double R = 6771000;
double Mu = 4e+14;
Vector3D velocity = new Vector3D(0, V, 0);
Vector3D Radias = new Vector3D(R, 0, 0);
Vector3D H = Vector3D.CrossProduct(Radias, velocity);//Angular Momentum = r * v
//e = v * h /mu - r / ||r||
Vector3D rh = Vector3D.CrossProduct(velocity, H);
double t = Radias.Length;
Vector3D e = Vector3D.Divide(rh, Mu) - R / t;
现在这就提出来了
运算符' - '不能应用于'Vector3D'和'double'类型的操作数
现在我现在说它不能将矢量除以双,但我不确定如何绕过它,我想到了铸造,但我不知道该怎么办?
这真的是我的数学技能和C#数学编程的边缘。
任何帮助将不胜感激。
编辑这是我正在使用的源Materials之一,所以你可以正确看到公式。
编辑2这是工作代码:
Vector3D e = Vector3D.Divide(rh, Mu) - Radias / Radias.Length;
double e1 = e.Length;
Console.WriteLine(e1);
带来的答案不仅与用户提供的Space Exploration beta提供的答案相匹配,而且与我尝试的公式的不同版本相匹配。所以代码和公式都很好。谢谢你的协助。
r / ||r||
是坐标的单位向量,即Radias / Radias.Length
= (1, 0, 0)
:
Vector3D e = rh / Mu - Radias / Radias.Length
你只是在你的R
声明和Radias
本身混合了数字Radias
。
[请注意,我们可以简单地使用overloaded division operation /
而不是Vector3D.Divide
]
它并不是说你不能分裂。它说你不能减去。如果要为向量的每个分量减去double,则需要使用它创建向量。在您的情况下,问题是您在此处显示的最后一行:
Vector3D e = Vector3D.Divide(rh, Mu) - R / t;
在这一行中,Vector3D.Divide(rh, Mu)
是一个向量,R / t
是一个双。为此,创建一个三个组件设置为R / t
的向量:
Vector3D rt = new Vector3D(R / t, R / t, R / t);
Vector3D e = Vector3D.Divide(rh, Mu) - rt;
(假设你想从矢量的所有分量中减去R / t)
编辑:再次看你的公式,你确定R
不是一个矢量吗?它似乎是基本公式中的向量,不在您的代码中
以上是关于C#Vector3D运算符' - '不能应用t类型'Vector3D'和double的主要内容,如果未能解决你的问题,请参考以下文章