Ara3D.Mathematics 1.4.4

There is a newer version of this package available.
See the version list below for details.
dotnet add package Ara3D.Mathematics --version 1.4.4                
NuGet\Install-Package Ara3D.Mathematics -Version 1.4.4                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Ara3D.Mathematics" Version="1.4.4" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Ara3D.Mathematics --version 1.4.4                
#r "nuget: Ara3D.Mathematics, 1.4.4"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Ara3D.Mathematics as a Cake Addin
#addin nuget:?package=Ara3D.Mathematics&version=1.4.4

// Install Ara3D.Mathematics as a Cake Tool
#tool nuget:?package=Ara3D.Mathematics&version=1.4.4                

Ara3D.Mathematics

NuGet Version

Ara3D.Mathematics is a portable, safe, and efficient 3D math library written in C# targeting .NET Standard 2.0 without any dependencies.

This is a fork of the Math3D repository at Vim.Math3D, which was based on earlier work done at Ara 3D.

Ara3D.Mathematics is compatible with Unity and has been used in production on many different platforms including Windows, Android, iOS, WebGL, and Magic Leap.

Motivations

There are a few things that we need to do differently than the Vim.Math3D library, motivating this work.

  1. Extend the number of data-structure and algorithms provided
  2. Support auto-generation of code in other languages; particularly JavaScript, and GLSL.
  3. Provide both single and double precision floating point algorithms throughout
  4. Improve the efficiency of the compiled libraries

How we will Achieve the Goals

To achieve better performance and cross-language code-generation, the core algorithms and data structure are being re-written using the Plato language.

Plato is designed to make it easy to express generic mathematical concepts and algorithms in a manner that is easy to analyze, optimize, and port to different languages and platforms.

The Plato code will then be cross-compiled back to efficient C#.

Current Status

This library is a work in progress. For now, the Ara3D.Mathematics surface API is quite similar to Vim.Math3D which in turn is similar to System.Numerics and Monogame, which is an open-source rewrite of the XNA library.

The double precision data structures have been temporarily removed, and will be reintroduced once the port to Plato is completed .

Design Goals

The Ara3D.Mathematics design goals remain mostly the same as the Math3D library:

  1. Portability
    • The library must be pure C#
    • No unsafe code
    • Fixed binary layout of structs in memory
    • Double and Single precision implementation of most structures
  2. Robustness
    • Functions are well covered by unit tests
    • Functions are easy to read, understand, and verify
  3. Ease of Use and Discoverability
    • Consistent with Microsoft coding styles
    • Consistent API with System.Numerics
    • Can use fluent syntax (object-oriented "dot" notation)
    • No passing of arguments by reference
    • Implicit tuple conversions
  4. Performance
    • Excellent performance, but not at cost of readability or discoverability
Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETStandard 2.0

    • No dependencies.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on Ara3D.Mathematics:

Package Downloads
Ara3D.Serialization.G3D

A simple, efficient, generic binary format for storing and transmitting geometry.

Ara3D.Geometry

A C# library of geometric data structures and algorithms

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.4.5 191 10/9/2024
1.4.4 296 8/25/2024
1.4.3 307 3/19/2024
1.4.1 320 3/12/2024
1.3.2 172 3/5/2024