Ara3D.Mathematics
1.4.4
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
<PackageReference Include="Ara3D.Mathematics" Version="1.4.4" />
paket add Ara3D.Mathematics --version 1.4.4
#r "nuget: Ara3D.Mathematics, 1.4.4"
// 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
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.
- Extend the number of data-structure and algorithms provided
- Support auto-generation of code in other languages; particularly JavaScript, and GLSL.
- Provide both single and double precision floating point algorithms throughout
- 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:
- 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
- Robustness
- Functions are well covered by unit tests
- Functions are easy to read, understand, and verify
- 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
- Performance
- Excellent performance, but not at cost of readability or discoverability
Related Libraries
- Vim.Math3D
- System.Numerics
- SharpDX Mathematics
- MonoGame
- Math.NET Spatial
- Math.NET Numerics
- Unity.Mathematics
- Unity Reference
- Abacus
- Geometry3Sharp
- FNA-XNA
- Stride
- A Vector Type for C# - R Potter via Code Project
- Godot Engine C# Libraries
- GeometRi - Simple and lightweight computational geometry library for .Net
- Veldrid
Product | Versions 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. |
-
.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.