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的主要内容,如果未能解决你的问题,请参考以下文章

C语言中随机产生四则运算符号

C语言关系运算和逻辑运算练习题

C语言关系运算和逻辑运算练习题

c语言的运算符号数组替代

关于php 三元运算符的优先级问题。请教?

c语言 四则运算问题,检查不到错误,运行的时候就提示是不是调试!帮忙改一下