Nerd_STF 2.4.1

There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package Nerd_STF --version 2.4.1                
NuGet\Install-Package Nerd_STF -Version 2.4.1                
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="Nerd_STF" Version="2.4.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Nerd_STF --version 2.4.1                
#r "nuget: Nerd_STF, 2.4.1"                
#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 Nerd_STF as a Cake Addin
#addin nuget:?package=Nerd_STF&version=2.4.1

// Install Nerd_STF as a Cake Tool
#tool nuget:?package=Nerd_STF&version=2.4.1                

Nerd_STF

Table of Contents

What is it?

Nerd_STF is a multi-purpose .NET 7.0 library that contains many objects I feel would help the default C# library package. Feel free to do with it what you'd like.

Nerd_STF includes some math as well as many other computer science topics. It contains types like groups of floats/ints, geometry types like Vert, Line, and Triangle, and color types like RGBA, CMYKA, HSVA, and their byte equivalents, all of which can convert seamlessly between each other.

What about Nerd_STF Versions 2021?

Nerd_STF 2021 used an different version scheme, based on the year, as you might have guessed (it is not the year 2 right now), and while I will be keeping the 2021 versions up, I wouldn't recommend using them, and the code is old code, written by a more naive me. Hell, I wrote an entire List<T> class there before I knew of the System.Collections.Generic.List<T> class that did literally everything for me already. Oh well. So, keep that in mind when you check out those versions of the library.

How do I install it?

The NuGet package for this library is here, so you could always install it that way using the .NET CLI:

  1. Open your terminal in your project directory.
  2. Enter this command: dotnet add package Nerd_STF
  3. There is no step 3.

You can also include the NuGet package via a package reference in your project file:

  1. Open your project file.
  2. Add this to the XML data: <PackageReference Include="Nerd_STF" />
  3. There is no step 3.

Alternatively, you can install it via a project reference in Visual Studio 2019 and 2022. Here's how:

  1. Download the latest library release from the GitHub repository, extract the files, and save them somewhere you can find later. The files must all be in the same direcrtory/folder together.
  2. Open Visual Studio 2019 or 2022.
  3. Right-click your .NET project in the Solution Explorer.
  4. Hover over "Add >" list and then click "Project Reference..."
  5. Click "Browse," and locate the .dll file you previously extracted (the full name is "Nerd_STF.dll").
  6. Click "Add," then "OK," and the library is now imported!

I've found a bug!

I'm not suprised, there are definitely a bunch of undiscovered bugs in Nerd_STF simply because I'm just one person. If you've found one, please do me a favor and create an issue about it in the GitHub repository. They likely aren't difficult fixes, they are just hard to spot even with some level of testing.

I'd like to contribute.

I would love some contributions! I probably won't accept drastic pull requests or merges with the library, but small changes are quite welcome! I'm just one person and I can only do so much work by myself. If you want to contribute, please only edit the current version branch (eg. if we are on version 2.3.1, edit the v2.3 branch). Please do not edit the main branch. I will merge the changes with main myself.

Try to follow a similar style to the current library, but otherwise I'm open to changes. Thank you to those who contribute!

Product Compatible and additional computed target framework versions.
.NET 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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net7.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
3.0.0-beta1 68 10/29/2024
2.4.1 248 7/17/2023
2.4.0 175 7/10/2023
2.3.2 274 3/9/2023
2.3.1.68 364 11/12/2022
2.3.1.52-alpha 240 10/31/2022 2.3.1.52-alpha is deprecated because it has critical bugs.
2.3.1.39-alpha 203 9/30/2022 2.3.1.39-alpha is deprecated because it has critical bugs.
2.3.0 436 8/2/2022
2.2.0 452 6/10/2022
2.1.2 447 5/2/2022
2.1.1 413 4/17/2022
2.1.0 433 4/17/2022
2.0.1 444 4/3/2022
2.0.0 434 4/3/2022

Hey everyone! This is one of the larger small updates, and I'm pretty proud of what I got done in a week.

Along with adding setters to parts like `Float3.XY` and fixing a few bugs, almost all improvements in this update are related to matricies. First of all, I've added a bunch of new items to the `IMatrix` interface. Now, any deriving matrix has more requirements that fit the regular `Matrix` type. I don't know why one would use the `IMatrix` interface rather than a specific matrix type, but now the options are more sophisticated.

I've added some new stuff to all the matrix types, including row operations. You can now scale a row, add a row to another, and swap two rows. If I become aware of any more commonly-used row operations, I'll add then in a `2.4.2` update. But I think I've got all the good ones. There is also a mutable version of each operation which, rather than returning a new matrix with changes made, instead applies the changes to itself.

Did you know I made two seperate blunders in the `Cofactor()` method? For the `Matrix2x2` version of the `Cofactor()` method, I had the diagonal elements swapped. Whoops. For the `Matrix` version of the `Cofactor()` method, matricies with even column count would break because of the alternating sign pattern I was using. Now, as far as I know, that bug is fixed.

The last thing I did was add the ability to turn a matrix into its equivalent row-echelon form. This is applicable only to the `Matrix` type (the dynamic one), and works with some levels of success. It's a little weird and tends to give results with lots of negative zeroes, but overall it's fine, I think. As far as I know there aren't any obvious bugs. We'll see though.

Anyway, that's everything in this update. Again, pretty small, but meaningful nonetheless. Unless I haven't screwed anything up, the next update I work on will be `2.5`, so I'll see you then!