Hi, I'm new to this library. I have my own SpatialVector class but I need to rotate around an axis so before beginning to write my own matrix type, I thought I'd look at MathNet and possibly replacing my vector with one from this lib, if its better.
The problem I have hit immediately is that I can't even instantiate one. The XML documentation/comments on the SparseVector (sparse? I guess this is the right choice for vectors in Euclidian space) are useless.
You can look at this comment as critical feedback. In my own APIs, and from reading and studying framework design, a smooth and gradual on-ramp is the key to adoption and success. This means massive user-empathy, choosing self-explanatory variable names and going over the top with XML comments. The result is falling into the pit of success, i.e. make it hard to do the wrong thing.
You might think I'm being harsh, considering the community effort put in for no financial reward, but this is my point. If you put all that effort in, surely you want people to take to it immediately.
Most internet people have no patience and just move on. They're in "trying to get something done" mode. They don't care about MathNet, unless it saves the day. They didn't pay for it, so they have no incentive to invest time learning it.
So, specifically, the constructor overloads on Double.SparseVector have these signature and comment combinations:
IList<double> array: "The array to create this vector from."
It's not an array and what should it contain? i, j, k unit vectors? How many? Can I make 11-dimension vectors?
int size: "the size of the vector."
Like, the magnitude? Size is meaningless. Is this the dimensions it has?
value: "the value to set each element to."
So maybe the size is the dimension count, but how does that work when there's only one value variable?
What about some common scenario constructors or subclasses, most people will be using 2D and 3D vectors.
~Luke
The problem I have hit immediately is that I can't even instantiate one. The XML documentation/comments on the SparseVector (sparse? I guess this is the right choice for vectors in Euclidian space) are useless.
You can look at this comment as critical feedback. In my own APIs, and from reading and studying framework design, a smooth and gradual on-ramp is the key to adoption and success. This means massive user-empathy, choosing self-explanatory variable names and going over the top with XML comments. The result is falling into the pit of success, i.e. make it hard to do the wrong thing.
You might think I'm being harsh, considering the community effort put in for no financial reward, but this is my point. If you put all that effort in, surely you want people to take to it immediately.
Most internet people have no patience and just move on. They're in "trying to get something done" mode. They don't care about MathNet, unless it saves the day. They didn't pay for it, so they have no incentive to invest time learning it.
So, specifically, the constructor overloads on Double.SparseVector have these signature and comment combinations:
IList<double> array: "The array to create this vector from."
It's not an array and what should it contain? i, j, k unit vectors? How many? Can I make 11-dimension vectors?
int size: "the size of the vector."
Like, the magnitude? Size is meaningless. Is this the dimensions it has?
value: "the value to set each element to."
So maybe the size is the dimension count, but how does that work when there's only one value variable?
What about some common scenario constructors or subclasses, most people will be using 2D and 3D vectors.
~Luke