aarondandy / vertesaur Goto Github PK
View Code? Open in Web Editor NEWA computational geometry and math library for the CLR with potential medical, gaming, and GIS uses.
Home Page: http://mediocresoft.com/vertesaur
License: Other
A computational geometry and math library for the CLR with potential medical, gaming, and GIS uses.
Home Page: http://mediocresoft.com/vertesaur
License: Other
Links the docs for segments2 and line2 to reduce nomenclature confusion.
Need to implement polygon XOR.
Need to make 3D versions of things like Line, Ray, Segment, etc...
Would like to remove the jetbrains annotation reference so it does not clutter up user's projects. It may be possible to include the annotations in the code as internal but will need to confirm that their license will not conflict with vertesaur being under an MIT license.
Need to implement.
Would be nice to implement type converters for coordinate types.
Most geometries need a way to test for validity, self intersection, etc.
algorithms to simplify all geometries would be a nice addition
There are some features marked as NotImplemented that need to be finished.
LINQ methods for
would be nice to have an authalic sphere radius for all spheroids:
AuthalicRadius = A * Math.Sqrt((1.0 - (((1.0 - ESquared)/(2.0 * E))*Math.Log((1.0 - E)/(1.0 + E)))) / 2.0);
source: G7-2
A Vector4 and Point4 object could be handy.
It would be nice to easily create a unit Vector2 from an angle and get the angle of a Vector2. Static methods on Vector2?
Need to implement polygon union.
What if a line or ray has a direction of (0,0) or a direction or point of(NaN,NaN)? Should there be a new IsValid property or just let the numbers do their thing? Adding the IsValid property seems a little odd and messy so maybe it is best just to write a few tests to make sure we have consistent behavior for those situations.
Go through all the thrown exceptions and make sure they are documented and create new exceptions as needed.
It may be good to merge Vector and Point into the same object... maybe. Think about it. This would be a major change as currently the Vector/Point difference is also important for disambiguation.
It would be nice to change how namespaces are organzied. Also I don't really like the .Contracts namespace but I don't want a pile of interfaces everywhere.
Make sure the generic objects work with dynamic. If not, make it work.
Need to finish up the generic geometry and expression generation helpers for later use.
It should be possible to convert/cast all vectors and points that are not of a double type to the double type. At least it should be possible to try as who knows what somebody would put into the generic version of vector/point.
I already have some old C++ code for this somewhere.
The current way I build my nuget packages is not so great. I would like it to be better:
Need a conversion to go from vertesaur polygon data structures to traditional structures.
Need to serialize to JSON, XML, etc.
DO NOT serialize to GIS formats, that domain is not included within this library. This library should as much as possible support a GIS library rather then BE a GIS library.
I am not sure if this feature belongs in this library yet or not. I will think on it for a month.
In some places within the code a 'zero' is detected when two values that are to be subtracted are found to be equal. With floating point it is possible for two values to result in 0 when subtracted when they are not equal. If it is important for the result to not be 0 then the actual result should be calculated and checked. This is especially prevalent in the segment, ray, and line code.
Would like to have a DE9IM implementation. Someday...
Explore if it would be OK to convert MBR to a reference type. If so this should be done.
Assemblies should be signed.
Make sure all points, vectors, and matrices have a operator* for scalar multiplication.
Algorithm to generate voroni diagrams could be handy.
make a hard copy backup of the private key, just in case
Shrink and expland polygons
Graph search should be enhanced to provide heuristic support (A*) or depend on another graph search library.
Need to create some tree data structures to support indexing spatial data.
Some of the results that have 1 ring should be split into multiple rings. for example:
(2,1) (2,2) (1,1) (0,0) (1,0) (1,1)
should be two rings:
(0,0) (1,0) (1,1)
and
(2,1) (2,2) (1,1)
Currently structs expose members as read-only public fields. It would be best to use properties but before a bug existed in the hit compiler that prevented inlining. I would like to run some tests and see if this is still the case. If not it may be good to change them to public T Thing { get; private set;} . Also code contracts can be used on these properties. Properties should be used for the generic case regardless I think.
Due to upgrade issues strong naming should be removed. At first strong naming was considered to be compatible with use in a certain COM system but when you think about it the end goal is to be an alternative for building your own stuff.
Could benefit from having a quaternion object.
Get the comments and the contract assemblies into the nupkg
Add specialized point/vector and whatever else feels right with float as the coordinate data type.
Add convex hull algorithms for:
Would like to add some interop to other geometry libraries.
Add a method to scale and MBR while preserving its centroid.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.