|
Hey,
Thanks for the link... There's some interesting reading there...
Eran Kampf
eran@ekampf.com
http://www.ekampf.com
|
|
|
|
|
I was looking for a (2D) geometry library and stumbled on this. It looks very good.
Due to my own past experiences I was interested to read this discussion on supposed use of code from Exocortex libraries.
I thought perhaps an independent assessment was in order. Hopefully, I am unbiassed but I should disclose that I have had the unfortunate experience of someone blatantly copying freely distributable source code I wrote (the original version of my hex editor) and selling it as shareware. On the other hand, I have been unjustly accused of plagiarising someone else's idea - something I categorically deny, Steve.
Anyway I downloaded the source code of both Sharp3D.Math and Exocortex and analysed some of it starting with the abovementioned "GetIntersection" function. Superficially that function looks similar, but it seems possible, if unlikely, that the similarity is coincidental. After all the code solves exactly the same problem and there are common conventions for naming variables adopted by mathematicians and programmers.
However, closer inspection shows that both versions of "GetIntersection" are almost certainly related. Either one is derived from the other, or they have a common ancestor. For example, the use of spaces and tabs is exactly the same in both functions - note the tab character between "return" and "pt0". I have found other, even more striking, examples in other areas of the code.
Another thing to note is that the Sharp3D.Math code has many lines ending with single space characters before a line containing an open brace character "{". This indicates that the code has been converted from the convention of braces on the end of lines (as used in Exocortex.Geometry3D library) to the convention of braces on the line below. For example, both opening braces in "GetIntersection" in Sharp3D.Math have this space character at the end of the previous line. This strongly indicates that the Exocortex is not derived from Sharp3D.Math, ie Sharp3D.Math is derived from Exocortex, or they have a common ancestor.
I also note that variable names, strings and comments have been changed slightly. Whether this is an attempt to disguise the origin of the code or was just part of some cleanup is arguable.
Andrew Phillips
aphillips @ expertcomsoft.com
|
|
|
|
|
Hi Eran,
Just a note that I've been using your library in my light distribution calculation application and it works pretty well and is full featured.
I'm now considering adding a small ray tracer for computing reflections/shadows, maybe I'll add it to either your project or CodeProject.com.
Thanks,
Wout
|
|
|
|
|
I launched my new homeapge at http://www.ekampf.com
You can check out the sharp3d.math information there and also browse the documentation online.
Eran Kampf
eran@ekampf.com
http://www.ekampf.com
|
|
|
|
|
This library you have is excellent work. The article could use a little work to make this absolutely outstanding.
Firstly, a small demonstration of the library would be wonderful. It is always nice to work from an example to see how to get something working quickly. Hopefully you can add this.
Secondly the class documentation has some gaps and I feel that more use of the <remarks> section would be good for explaining a bit more. I know that as a developer working on the project that everything becomes intuative to you, but others don't have that level of knowledge yet.
Lastly, the article itself could be extented to show how to put together some samples, or to explain the workings of the library. Or even explain the differences between 2D and 3D elements (that would be interesting to me as I've worked with 2D graphics and anaysis in the GIS field but I've not done anything with 3D)
I hope this helps. I see you've already got a great score (4.05 at the time of writing) and this can only get better.
Keep up the great work.
"You can have everything in life you want if you will just help enough other people get what they want." --Zig Ziglar
The Second EuroCPian Event will be in Brussels on the 4th of September
Can't manage to P/Invoke that Win32 API in .NET? Why not do interop the wiki way!
My Blog
|
|
|
|
|
1. I will include the code for the Sharp3D.Math unit tesing library. It should supply some basic code samples for working with the library.
As for a sample application I started working on a basic ray tracer but it'll take some time to finish...
2. Can you specify where exactly you think the documentation is lacking?
3. I will try to add some more content to the article. Cover the basic structures (vectors, matrices, complex numbers) etc. but its all pretty much straightforward and I wouldnt want to write stuff just to make the article's line count higher.
Thanks for the comments...
Eran Kampf
tentacle@zahav.net.il
|
|
|
|
|
Eran Kampf wrote:
As for a sample application I started working on a basic ray tracer but it'll take some time to finish
That sounds great.
Eran Kampf wrote:
Can you specify where exactly you think the documentation is lacking?
Well, like I said, it could use more <remarks> sections. Take a look at MSDN to see what they have. There are some items that do have a remarks section, but all they seem to say is "See xxx for details". I guess I am so used to reading MSDN, and because NDoc produces documentation that looks like MSDN I want to see the same kind of things.
Eran Kampf wrote:
I will try to add some more content to the article...but its all pretty much straight forward and I wouldn't want to write stuff just to make the article's line count higher.
Pick an area that is interesting to you (remember it isn't straight forward to everyone), or produce a tutorial style for the ray tracer demo to explain how it is put together and how all the components hang together.
When I read an article I generally read the top couple of paragraphs, and if it seems to be interesting I'll scroll to the bottom to see how much there is. Sometimes, if it is long, I'll bookmark it and come back when I have more time. If it is too short I sometimes won't go any further because I hate digging through code with no explanation of where to start or what bits are core.
I hope this helps. It looks like you have an excellent library and I would very much like to have the time to explore it further.
"You can have everything in life you want if you will just help enough other people get what they want." --Zig Ziglar
The Second EuroCPian Event will be in Brussels on the 4th of September
Can't manage to P/Invoke that Win32 API in .NET? Why not do interop the wiki way!
My Blog
|
|
|
|
|
|
Would you care to elaborate rather than just scream "Trash!" and "Cheater!"?
"You can have everything in life you want if you will just help enough other people get what they want." --Zig Ziglar
The Second EuroCPian Event will be in Brussels on the 4th of September
Can't manage to P/Invoke that Win32 API in .NET? Why not do interop the wiki way!
My Blog
|
|
|
|
|
1. Can you plZZZZZZZZZZZz put the exe-able binary there?
2. Instead put a 952k stupid junk chm, can you plZZZZZZZZZZZz just tell people use a NDoc? (NDoc is good but not for people reading your stupid help)
3. Can you plZZZZZZZZZZz at least put a figure inside the article?
4. TRASH!
|
|
|
|
|
Who is this?
Eran Kampf
tentacle@zahav.net.il
http://tentacle.flipcode.com
|
|
|
|
|
Why are interested to know my Indentity? We are here talking coding btw, I did not vote your article yet, so try to make it better!
|
|
|
|
|
If we're talking about coding then maybe you should out the code before you trash it...
Eran Kampf
tentacle@zahav.net.il
|
|
|
|
|
Then how about adding an exe and a figure?
|
|
|
|
|
Well, it says "A 3D Math Library", not Demo-Application
--pascal
|
|
|
|
|
1. It is a "library" after all. However a nice exe that demonstrates the library would be nice.
2. I don't understand what you mean by this. The help file was generated by NDoc. It seems perfectly acceptable to me - there are a few gaps that need plugged and some better descriptions (remark sections) would be good, but I don't see a huge problem with it.
3. A "figure"? If you mean that the article is a little short then I agree. I've done a bit of work in the past on 2D drawing/anaysis libraries (GIS related) I'd like to extend that knowledge to 3D and a little bit of explanation here would have been much appreciated.
4. No, not at all. While I can understand your point-of-view on the above I cannot say that it is trash. The article could use a little work for sure, but I would not say that this is trash.
"You can have everything in life you want if you will just help enough other people get what they want." --Zig Ziglar
The Second EuroCPian Event will be in Brussels on the 4th of September
Can't manage to P/Invoke that Win32 API in .NET? Why not do interop the wiki way!
My Blog
|
|
|
|
|
I currently dont have any sample application ready to be released. I am working on the Sharp3D engine (and studying for finals) so I dont have much time to release sample applications.
I will add the code for the Sharp3D.Math unit testing library. It should supply some code examples...
As for your comment in (3), what explanation do you think is necessary to add?
Teaching linear algebra, intersection algorithms etc is beyond the context of this article...
Eran Kampf
tentacle@zahav.net.il
http://tentacle.flipcode.com
|
|
|
|
|
oh, btw, you agree with me?
I did not vote for it yet, and hope the author can improve it!!!!!
|
|
|
|
|
I think this is a great work. Clearly, Eran spent a good deal of time and efford on the library and he is willing to share it with others. If you lack the intellect to appreciate a good work, please do not comment at all.
Keep up the good work Eran.
Life is what happens to you, while you are busy programming.
|
|
|
|
|
Eran, please ignore that guy/gal who is shouting trash. You've done a fine job in providing the .NET community with a valuable tool. I congratulate you for your efforts. Who ever mr yahoo is, I think he is just a bitter person.
|
|
|
|
|
Do u have any solution to draw a 3D surface?
I wanna display a 3D array as a 3D grapgh or surface.
Thanks
|
|
|
|
|
You can use the Sharp3D.Math structures (Vectors etc) to represent and transform the surface.
You'll have to do the rendering code yourself as Sharp3D.Math is a math library and not a graphics library.
I plan on adding surfaces support to the library (NURB rectangle, B-Spline rectangle etc...) but it'll take some time...
Eran Kampf
tentacle@zahav.net.il
http://tentacle.flipcode.com
|
|
|
|
|
There are some fairly inexpensive chart controls that you can use:
Here are some examples:
Scinet Chart $119 from www.obacs.com
Exceed Chart $499.95 from www.exceed.com
|
|
|
|
|
How would you go about building a struct that you could set how many rows and columns you had? From what I see of this class, you have the choice of a 2x2, 3x3, or 4x4 matrix. What if you wanted a 3x6? What I'm getting at here is that you could have matrix A which has the size HxJ and you have matrix B which has the size TxR. You can still add/subtract/multiply/divide these matricies. I know for multiply A times B, it would have the size HxR. And if you multiplied B times A, it would have the size TxJ. I think this would cut down the repition of code between your classes, because you now don't care what size it is so you don't have to cast for each one.
|
|
|
|
|
I am planning on adding a generic matrix class.
Having such a class wont cut down code repition because the 2x2, 3x3, 4x4 classes are made specifically for geometric and graphics related methods that require such classes.
Having a specific size class also allows speed optimizations etc...
Eran Kampf
tentacle@zahav.net.il
http://tentacle.flipcode.com
|
|
|
|