GraduatedCylinder.Geo.Laser
9.3.0
dotnet add package GraduatedCylinder.Geo.Laser --version 9.3.0
NuGet\Install-Package GraduatedCylinder.Geo.Laser -Version 9.3.0
<PackageReference Include="GraduatedCylinder.Geo.Laser" Version="9.3.0" />
paket add GraduatedCylinder.Geo.Laser --version 9.3.0
#r "nuget: GraduatedCylinder.Geo.Laser, 9.3.0"
// Install GraduatedCylinder.Geo.Laser as a Cake Addin #addin nuget:?package=GraduatedCylinder.Geo.Laser&version=9.3.0 // Install GraduatedCylinder.Geo.Laser as a Cake Tool #tool nuget:?package=GraduatedCylinder.Geo.Laser&version=9.3.0
GraduatedCylinder
A typed implementation of measurable dimensions for .NET (i.e. Length, Speed, Acceleration, Jerk).
There are 2 versions of this library:
- GraduatedCylinder uses 64bit doubles to store the values of the dimension, and supports changing units 'in place' by setting the units property to the value of the wanted units, as well as using the 'In(units)' method to get a new instance of the dimension.
- Pipette uses 32bit floats to store the values of the dimension, and supports changing units 'in place' by setting the units property to the value of the wanted units, as well as using the 'In(units)' method to get a new instance of the dimension.
Many operators are implemented to allow derivative computations without you explicitly worrying about units, it is taken care of for you (i.e. Jerk = Acceleration / Time).
Starting at version 6.0, this library uses Roslyn to generate many features from built in metadata, so no runtime reflection is required anymore.
Build
You can build GraduatedCylinder using Visual Studio 2022. We use Nuke as the build engine, and deliver packages on NuGet.org
Contribute
Contributions to GraduatedCylinder are gratefully received but we do ask you to follow certain conditions:
- Fork the main eddiegarmon/GraduatedCylinder
- Use a branch when developing in your own forked repository, DO NOT work against master
- Write one or more unit tests to validate new logic, ideally using TDD
- Ensure all projects build and all tests pass
- Make a pull request from
your-fork/your-branch
toGraduatedCylinder/master
- Provide a description of the motivation behind the changes
Versioning
The main contributors to the project will manage releases and SemVer-compliant version numbers.
A Simple Sample
Mass vehicleMass = new Mass(2500, MassUnit.Pounds);
Speed startSpeed = new Speed(72, SpeedUnit.MilesPerHour);
Speed endSpeed = new Speed(0, SpeedUnit.MilesPerHour);
Length stoppingDistance = new Length(1234, LengthUnit.Feet);
Acceleration deceleration = MotionCalculator.ComputeConstantAcceleration(startSpeed, endSpeed, stoppingDistance);
Force stoppingForceRequired = vehicleMass * deceleration;
Console.WriteLine($"To stop a vehicle of {vehicleMass} moving at {startSpeed} within {stoppingDistance},");
Console.WriteLine("the force required is:");
Console.WriteLine($"\t{constantStoppingForce}");
Console.WriteLine($"\t{constantStoppingForce.ToString(ForceUnit.Newtons, 3)}");
Console.WriteLine($"\t{constantStoppingForce.ToString(ForceUnit.KilogramForce)}");
Console.WriteLine($"\t{constantStoppingForce.ToString(ForceUnit.PoundForce, 5)}");
The output is as follows:
To stop a vehicle of 2,500.00 lbs moving at 72.00 mph within 1,234.00 ft,
the force required is:
-1,561.72 N
-1,561.721 N
-159.20 kgf
-351.08893 lbf
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. 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 is compatible. 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 is compatible. 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
- GraduatedCylinder.Geo (>= 9.3.0)
- Nmea.Core0183 (>= 9.3.0)
-
net6.0
- GraduatedCylinder.Geo (>= 9.3.0)
- Nmea.Core0183 (>= 9.3.0)
-
net7.0
- GraduatedCylinder.Geo (>= 9.3.0)
- Nmea.Core0183 (>= 9.3.0)
-
net8.0
- GraduatedCylinder.Geo (>= 9.3.0)
- Nmea.Core0183 (>= 9.3.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.