繁体   English   中英

使用带有C#的Math.Net数字交叉产品

[英]Cross Product using Math.Net Numerics with C#

我有两个向量MathNet.Numerics.LinearAlgebra.Generic.Vector<double> ,如下所示:

Vector<double> v1 = new DenseVector(new double[] { 1, 2, 3 });     
Vector<double> v2 = new DenseVector(new double[] { 3, 2, 1 });

我基本上想要CrossProduct他们,但找不到官方功能。 我知道交叉产品是一个非常简单的功能,我可以自己编写,但我想使用API​​的功能。

以下两个对我有用:(无法在API中找到此类函数。)

Vector<double> result = v1.CrossProduct(v2);
Vector<double> result = Vector.CrossProduct(v1,v2);

我找到了这个,但是当我尝试编写它时找不到该函数: API Reference

用于进行3元素向量的交叉乘积的样本方法。

    using DLA = MathNet.Numerics.LinearAlgebra.Double;

    public static DLA.Vector Cross(DLA.Vector left, DLA.Vector right)
    {
        if ((left.Count != 3 || right.Count != 3))
        {
            string message = "Vectors must have a length of 3.";
            throw new Exception(message);
        }
        DLA.Vector result = new DLA.DenseVector(3);
        result[0] = left[1] * right[2] - left[2] * right[1];
        result[1] = -left[0] * right[2] + left[2] * right[0];
        result[2] = left[0] * right[1] - left[1] * right[0];

        return result;
    }

您正在访问Math.NET Iridium的API文档,这是一个已停产的项目。 目的是将Iridium代码库集成到Math.NET Numerics中 ,但似乎尚未传输CrossProduct功能,这可以在CrossProduct Numerics Codeplex站点上的 两个讨论主题中看到。

如果你想使用Math.NET铱,那里的CrossProduct的方法肯定是可用的,你可以从下载最新的源代码在这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM