<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="http://www.codeplex.com/rss.xsl"?><rss version="2.0"><channel><title>Sharp3D.Math Math Library</title><link>http://www.codeplex.com/Sharp3D/Project/ProjectRss.aspx</link><description>Sharp3D.Math contains fundemental classes to dealing with numerics on the .NET platform. It contains various mathematical structures such as vectors, matrices, complex numbers and contains methods ...</description><item><title>CREATED ISSUE: Problems with Minor() and Adjoint()</title><link>http://www.codeplex.com/Sharp3D/WorkItem/View.aspx?WorkItemId=14686</link><description>So trying to extend the library so the Matrices support an &amp;#34;Inverse&amp;#34; function I found that the Minor and Adjoint functions don&amp;#39;t work. the reason&amp;#63; The indexing of the Matrices is calculating the index wrong for example&amp;#58;&lt;br /&gt;in Matrix3F Minor&amp;#40;&amp;#41; is doing&amp;#58;&lt;br /&gt;for &amp;#40;int iRow &amp;#61; 0&amp;#59; iRow &amp;#60; 3&amp;#59; iRow&amp;#43;&amp;#43;&amp;#41; &lt;br /&gt;&amp;#9;&amp;#9;&amp;#9;&amp;#123;&lt;br /&gt;&amp;#9;&amp;#9;&amp;#9;&amp;#9;int c &amp;#61; 0&amp;#59;&lt;br /&gt;&amp;#9;&amp;#9;&amp;#9;&amp;#9;if &amp;#40;iRow &amp;#33;&amp;#61; row&amp;#41; &lt;br /&gt;&amp;#9;&amp;#9;&amp;#9;&amp;#9;&amp;#123;&lt;br /&gt;&amp;#9;&amp;#9;&amp;#9;&amp;#9;&amp;#9;for &amp;#40;int iColumn &amp;#61; 0&amp;#59; iColumn &amp;#60; 3&amp;#59; iColumn&amp;#43;&amp;#43;&amp;#41; &lt;br /&gt;&amp;#9;&amp;#9;&amp;#9;&amp;#9;&amp;#9;&amp;#123;&lt;br /&gt;&amp;#9;&amp;#9;&amp;#9;&amp;#9;&amp;#9;&amp;#9;if &amp;#40;iColumn &amp;#33;&amp;#61; column&amp;#41; &lt;br /&gt;&amp;#9;&amp;#9;&amp;#9;&amp;#9;&amp;#9;&amp;#9;&amp;#123;&lt;br /&gt;&amp;#9;&amp;#9;&amp;#9;&amp;#9;&amp;#9;&amp;#9;&amp;#9;result&amp;#91;r,c&amp;#93; &amp;#61; this&amp;#91;iRow, iColumn&amp;#93;&amp;#59;&lt;br /&gt;&lt;br /&gt;the code is accessing &amp;#34;this&amp;#91;0,0&amp;#93;&amp;#34;&lt;br /&gt;but if you check the code for the indexer&amp;#58;&lt;br /&gt;&lt;br /&gt;public float this&amp;#91;int row, int column&amp;#93;&lt;br /&gt;&amp;#9;&amp;#9;&amp;#123;&lt;br /&gt;&amp;#9;&amp;#9;&amp;#9;get &lt;br /&gt;&amp;#9;&amp;#9;&amp;#9;&amp;#123;&lt;br /&gt;&amp;#9;&amp;#9;&amp;#9;&amp;#9;return this&amp;#91;&amp;#40;row-1&amp;#41;&amp;#42;3 &amp;#43; column-1&amp;#93;&amp;#59;&lt;br /&gt;&amp;#9;&amp;#9;&amp;#9;&amp;#125;&lt;br /&gt;&amp;#9;&amp;#9;&amp;#9;set &lt;br /&gt;&amp;#9;&amp;#9;&amp;#9;&amp;#123;&amp;#9;&amp;#9;&amp;#9;&amp;#9;&lt;br /&gt;&amp;#9;&amp;#9;&amp;#9;&amp;#9;this&amp;#91;&amp;#40;row-1&amp;#41;&amp;#42;3 &amp;#43; column-1 &amp;#93; &amp;#61; value&amp;#59;&lt;br /&gt;&amp;#9;&amp;#9;&amp;#9;&amp;#125;&amp;#9;&amp;#9;&amp;#9;&lt;br /&gt;&amp;#9;&amp;#9;&amp;#125;&lt;br /&gt;This code will produce a negative index. The indexer is expecting rows and columns starting with 1 but the Minor code is accessing the Rows and Columns starting at 0. Fixing the above code to &amp;#58;&lt;br /&gt;&lt;br /&gt;public float this&amp;#91;int row, int column&amp;#93;&lt;br /&gt;&amp;#9;&amp;#9;&amp;#123;&lt;br /&gt;&amp;#9;&amp;#9;&amp;#9;get &lt;br /&gt;&amp;#9;&amp;#9;&amp;#9;&amp;#123;&lt;br /&gt;&amp;#9;&amp;#9;&amp;#9;&amp;#9;return this&amp;#91;row&amp;#42;3 &amp;#43; column&amp;#93;&amp;#59;&lt;br /&gt;&amp;#9;&amp;#9;&amp;#9;&amp;#125;&lt;br /&gt;&amp;#9;&amp;#9;&amp;#9;set &lt;br /&gt;&amp;#9;&amp;#9;&amp;#9;&amp;#123;&amp;#9;&amp;#9;&amp;#9;&amp;#9;&lt;br /&gt;&amp;#9;&amp;#9;&amp;#9;&amp;#9;this&amp;#91; row&amp;#42;3 &amp;#43; column &amp;#93; &amp;#61; value&amp;#59;&lt;br /&gt;&amp;#9;&amp;#9;&amp;#9;&amp;#125;&amp;#9;&amp;#9;&amp;#9;&lt;br /&gt;&amp;#9;&amp;#9;&amp;#125;&lt;br /&gt;&lt;br /&gt;fixed the problem&lt;br /&gt;</description><author>davidcanar</author><pubDate>Wed, 09 Jan 2008 15:22:45 GMT</pubDate><guid isPermaLink="false">CREATED ISSUE: Problems with Minor() and Adjoint() 20080109P</guid></item><item><title>NEW POST: Issue tracker</title><link>http://www.codeplex.com/Sharp3D/Thread/View.aspx?ThreadId=14106</link><description>&lt;div class="wikidoc"&gt;
Hi,&lt;br /&gt; &lt;br /&gt;please have a look at the issue tracker. It would be a good thing to know if the issues posted are real issues or not, and the vote system is really a good and simple way to do this job.&lt;br /&gt; &lt;br /&gt;Regards,&lt;br /&gt;Stenio&lt;br /&gt;
&lt;/div&gt;</description><author>stenio</author><pubDate>Tue, 21 Aug 2007 15:04:32 GMT</pubDate><guid isPermaLink="false">NEW POST: Issue tracker 20070821P</guid></item><item><title>COMMENTED ISSUE: Plane/Segment intersection problem</title><link>http://www.codeplex.com/Sharp3D/WorkItem/View.aspx?WorkItemId=7883</link><description>Hello,&lt;br /&gt;First of all thank you for this beautiful library&amp;#33;&lt;br /&gt;&lt;br /&gt;I&amp;#39;m not sure if I&amp;#39;m using the library in the correct way, but with the following code I get wrong results&amp;#58;&lt;br /&gt;if a segment from point A to point B intersects the plane, also the segment from B to A should intersect, but I get false from the first test.&lt;br /&gt;&lt;br /&gt;&amp;#47;&amp;#47; z &amp;#61; 0&lt;br /&gt;Plane plane &amp;#61; new Plane&amp;#40;Vector3F.ZAxis, 0&amp;#41;&amp;#59;&lt;br /&gt;Vector3F pointA &amp;#61; new Vector3F&amp;#40;0, 0, -10&amp;#41;&amp;#59;&lt;br /&gt;Vector3F pointB &amp;#61; new Vector3F&amp;#40;0, 0, 10&amp;#41;&amp;#59;&lt;br /&gt;Segment segmentAB &amp;#61; new Segment&amp;#40;pointA, pointB&amp;#41;&amp;#59;&lt;br /&gt;Segment segmentBA &amp;#61; new Segment&amp;#40;pointB, pointA&amp;#41;&amp;#59;&lt;br /&gt;IntersectionPair intersection &amp;#61; IntersectionMethods.Intersects&amp;#40;segmentAB, plane&amp;#41;&amp;#59;&lt;br /&gt;Console.WriteLine&amp;#40;intersection.IntersectionOccurred&amp;#41;&amp;#59;&lt;br /&gt;intersection &amp;#61; IntersectionMethods.Intersects&amp;#40;segmentBA, plane&amp;#41;&amp;#59;&lt;br /&gt;Console.WriteLine&amp;#40;intersection.IntersectionOccurred&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;Many thanks,&lt;br /&gt;Stenio Brunetta&lt;br/&gt;Comments: ** Comment from web user: stenio ** &lt;p&gt;I&amp;#39;ve posted the previous comment as a new issue, because it seems to be a different kind of problem.&lt;/p&gt;&lt;p&gt;Regards,&lt;br/&gt;Stenio&lt;/p&gt;</description><author>stenio</author><pubDate>Tue, 21 Aug 2007 14:54:02 GMT</pubDate><guid isPermaLink="false">COMMENTED ISSUE: Plane/Segment intersection problem 20070821P</guid></item><item><title>CREATED ISSUE: Plane/segment intersection problem #2</title><link>http://www.codeplex.com/Sharp3D/WorkItem/View.aspx?WorkItemId=12355</link><description>Hi,&lt;br /&gt;&lt;br /&gt;another issue&amp;#58;&lt;br /&gt;&lt;br /&gt;&amp;#91;Test&amp;#93;&lt;br /&gt;public void test&amp;#40;&amp;#41; &amp;#123;&lt;br /&gt;Sharp3D.Math.Geometry3D.Plane plane &amp;#61; new Sharp3D.Math.Geometry3D.Plane&amp;#40;Vector3F.ZAxis, -3e6f&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;Vector3F p1 &amp;#61; new Vector3F&amp;#40;161746.9f, 0.00571176f, 3195273f&amp;#41;&amp;#59;&lt;br /&gt;Vector3F p2 &amp;#61; new Vector3F&amp;#40;279734.7f, 0.004676462f, 2649951f&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;Sharp3D.Math.Geometry3D.Segment segment1 &amp;#61; new Sharp3D.Math.Geometry3D.Segment&amp;#40;p1, p2&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;Sharp3D.Math.Geometry3D.IntersectionPair intersection &amp;#61; Sharp3D.Math.Geometry3D.IntersectionMethods.Intersects&amp;#40;segment1, plane&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;Assert.IsFalse&amp;#40;intersection.IntersectionOccurred&amp;#41;&amp;#59;&lt;br /&gt;&amp;#125;&lt;br /&gt;&lt;br /&gt;There should be no intersection with the segment because its end points have a positive z.&lt;br/&gt;</description><author>stenio</author><pubDate>Tue, 21 Aug 2007 14:25:28 GMT</pubDate><guid isPermaLink="false">CREATED ISSUE: Plane/segment intersection problem #2 20070821P</guid></item><item><title>COMMENTED ISSUE: Plane/Segment intersection problem</title><link>http://www.codeplex.com/Sharp3D/WorkItem/View.aspx?WorkItemId=7883</link><description>Hello,&lt;br /&gt;First of all thank you for this beautiful library&amp;#33;&lt;br /&gt;&lt;br /&gt;I&amp;#39;m not sure if I&amp;#39;m using the library in the correct way, but with the following code I get wrong results&amp;#58;&lt;br /&gt;if a segment from point A to point B intersects the plane, also the segment from B to A should intersect, but I get false from the first test.&lt;br /&gt;&lt;br /&gt;&amp;#47;&amp;#47; z &amp;#61; 0&lt;br /&gt;Plane plane &amp;#61; new Plane&amp;#40;Vector3F.ZAxis, 0&amp;#41;&amp;#59;&lt;br /&gt;Vector3F pointA &amp;#61; new Vector3F&amp;#40;0, 0, -10&amp;#41;&amp;#59;&lt;br /&gt;Vector3F pointB &amp;#61; new Vector3F&amp;#40;0, 0, 10&amp;#41;&amp;#59;&lt;br /&gt;Segment segmentAB &amp;#61; new Segment&amp;#40;pointA, pointB&amp;#41;&amp;#59;&lt;br /&gt;Segment segmentBA &amp;#61; new Segment&amp;#40;pointB, pointA&amp;#41;&amp;#59;&lt;br /&gt;IntersectionPair intersection &amp;#61; IntersectionMethods.Intersects&amp;#40;segmentAB, plane&amp;#41;&amp;#59;&lt;br /&gt;Console.WriteLine&amp;#40;intersection.IntersectionOccurred&amp;#41;&amp;#59;&lt;br /&gt;intersection &amp;#61; IntersectionMethods.Intersects&amp;#40;segmentBA, plane&amp;#41;&amp;#59;&lt;br /&gt;Console.WriteLine&amp;#40;intersection.IntersectionOccurred&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;Many thanks,&lt;br /&gt;Stenio Brunetta&lt;br/&gt;Comments: ** Comment from web user: stenio ** &lt;p&gt;Hi,&lt;/p&gt;&lt;p&gt;another issue&amp;#58;&lt;/p&gt;&lt;p&gt;        &amp;#91;Test&amp;#93;&lt;br/&gt;        public void test&amp;#40;&amp;#41; &amp;#123;&lt;br/&gt;            Sharp3D.Math.Geometry3D.Plane plane &amp;#61; new Sharp3D.Math.Geometry3D.Plane&amp;#40;Vector3F.ZAxis, -3e6f&amp;#41;&amp;#59;&lt;/p&gt;&lt;p&gt;            Vector3F p1 &amp;#61; new Vector3F&amp;#40;161746.9f, 0.00571176f, 3195273f&amp;#41;&amp;#59;&lt;br/&gt;            Vector3F p2 &amp;#61; new Vector3F&amp;#40;279734.7f, 0.004676462f, 2649951f&amp;#41;&amp;#59;&lt;/p&gt;&lt;p&gt;            Sharp3D.Math.Geometry3D.Segment segment1 &amp;#61; new Sharp3D.Math.Geometry3D.Segment&amp;#40;p1, p2&amp;#41;&amp;#59;&lt;/p&gt;&lt;p&gt;            Sharp3D.Math.Geometry3D.IntersectionPair intersection &amp;#61; Sharp3D.Math.Geometry3D.IntersectionMethods.Intersects&amp;#40;segment1, plane&amp;#41;&amp;#59;&lt;/p&gt;&lt;p&gt;            Assert.IsFalse&amp;#40;intersection.IntersectionOccurred&amp;#41;&amp;#59;&lt;br/&gt;        &amp;#125;&lt;/p&gt;&lt;p&gt;There should be no intersection with the segment because its end  points have a positive z.&lt;/p&gt;</description><author>stenio</author><pubDate>Mon, 20 Aug 2007 15:36:19 GMT</pubDate><guid isPermaLink="false">COMMENTED ISSUE: Plane/Segment intersection problem 20070820P</guid></item><item><title>NEW POST: Vector3DList and similar</title><link>http://www.codeplex.com/Sharp3D/Thread/View.aspx?ThreadId=12939</link><description>&lt;div class="wikidoc"&gt;
Hello,&lt;br /&gt; &lt;br /&gt;I was looking at the new sourcecode you've downloaded and I saw that you don't implement &lt;i&gt;item&lt;/i&gt;lists anymore.&lt;br /&gt;Is this part of the code cleaning process, or has to do with the use of Generics?&lt;br /&gt; &lt;br /&gt;Also, I need some help, if you can provide it. I'm trying to define a new Polyline class which is a group of 3D points, each with a Quaternion associated, and some more data. Any sugestions on how to declare this?&lt;br /&gt; &lt;br /&gt;Thanks in advance,&lt;br /&gt;RSaint&lt;br /&gt;
&lt;/div&gt;</description><author>RSaint</author><pubDate>Mon, 23 Jul 2007 22:56:24 GMT</pubDate><guid isPermaLink="false">NEW POST: Vector3DList and similar 20070723P</guid></item><item><title>NEW POST: Status?</title><link>http://www.codeplex.com/Sharp3D/Thread/View.aspx?ThreadId=11656</link><description>&lt;div class="wikidoc"&gt;
Hello Eran,&lt;br /&gt; &lt;br /&gt;Any guidelines for the next version? OpenGl integration maybe?&lt;br /&gt;I would like to help, even being a c# newbie.&lt;br /&gt; &lt;br /&gt;regards,&lt;br /&gt;Rui&lt;br /&gt;
&lt;/div&gt;</description><author>RSaint</author><pubDate>Fri, 20 Jul 2007 15:29:14 GMT</pubDate><guid isPermaLink="false">NEW POST: Status? 20070720P</guid></item><item><title>NEW POST: Status?</title><link>http://www.codeplex.com/Sharp3D/Thread/View.aspx?ThreadId=11656</link><description>&lt;div class="wikidoc"&gt;
Hello Eran,&lt;br /&gt; &lt;br /&gt;Any guidelines for the next version? OpenGl integration maybe?&lt;br /&gt;I would like to help, even being a c# newbie.&lt;br /&gt; &lt;br /&gt;regards,&lt;br /&gt;Rui&lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt;
&lt;/div&gt;</description><author>RSaint</author><pubDate>Fri, 20 Jul 2007 15:28:51 GMT</pubDate><guid isPermaLink="false">NEW POST: Status? 20070720P</guid></item><item><title>NEW POST: Inverting matrices?</title><link>http://www.codeplex.com/Sharp3D/Thread/View.aspx?ThreadId=12680</link><description>&lt;div class="wikidoc"&gt;
Is there no function that easily inverts a matrix?&lt;br /&gt;
&lt;/div&gt;</description><author>legion80</author><pubDate>Tue, 17 Jul 2007 16:22:08 GMT</pubDate><guid isPermaLink="false">NEW POST: Inverting matrices? 20070717P</guid></item><item><title>Source code checked in</title><link>http://www.codeplex.com/Sharp3D/SourceControl/ListDownloadableCommits.aspx</link><description>Initial checkin</description><author>ekampf</author><pubDate>Sun, 01 Jul 2007 23:34:03 GMT</pubDate><guid isPermaLink="false">Source code checked in 20070701P</guid></item><item><title>NEW POST: Status?</title><link>http://www.codeplex.com/Sharp3D/Thread/View.aspx?ThreadId=11656</link><description>&lt;div class="wikidoc"&gt;
&lt;div class="quote"&gt;
 &lt;br /&gt;legion80 wrote:&lt;br /&gt;What is the status of this project?  Are improvements or bug fixes being made to the library?&lt;br /&gt; &lt;br /&gt;
&lt;/div&gt; &lt;br /&gt;Hi,&lt;br /&gt;  The project was closed but Im reviving it within the next few days.&lt;br /&gt; &lt;br /&gt;REgards,&lt;br /&gt;Eran&lt;br /&gt;
&lt;/div&gt;</description><author>ekampf</author><pubDate>Sun, 01 Jul 2007 22:34:05 GMT</pubDate><guid isPermaLink="false">NEW POST: Status? 20070701P</guid></item><item><title>Source code checked in</title><link>http://www.codeplex.com/Sharp3D/SourceControl/ListDownloadableCommits.aspx</link><description>Basic project folder structure</description><author>ekampf</author><pubDate>Sun, 01 Jul 2007 21:59:45 GMT</pubDate><guid isPermaLink="false">Source code checked in 20070701P</guid></item><item><title>NEW POST: Status?</title><link>http://www.codeplex.com/Sharp3D/Thread/View.aspx?ThreadId=11656</link><description>&lt;div class="wikidoc"&gt;
What is the status of this project?  Are improvements or bug fixes being made to the library?&lt;br /&gt;
&lt;/div&gt;</description><author>legion80</author><pubDate>Thu, 21 Jun 2007 15:45:56 GMT</pubDate><guid isPermaLink="false">NEW POST: Status? 20070621P</guid></item><item><title>NEW POST: Sharp3D.Math.Geometry3D.Plane incorrect equation for _const (D)</title><link>http://www.codeplex.com/Sharp3D/Thread/View.aspx?ThreadId=10407</link><description>&lt;div class="wikidoc"&gt;
I think I found a mistake in two of the overloaded constructors of the Sharp3D.Math.Geometry3D.Plane object.  Looks like the sign on the equation of _const is wrong.  For a plane the &lt;i&gt;const, D, (where Ax + By + Cz + D = 0) is equal to the negative of the dot product of the normal vector and a point on the plane, i.e. n dot p = -d.  The negation is missing in two of the constructors.  Check out http://en.wikipedia.org/wiki/Plane&lt;/i&gt;(mathematics) for verification and further information on a plane.&lt;br /&gt; &lt;br /&gt;The following are corrected constructor overloads:&lt;br /&gt; &lt;br /&gt;// multi-line&lt;br /&gt;&lt;pre&gt;
        /// &amp;lt;summary&amp;gt;
        /// Initializes a new instance of the &amp;lt;see cref=&amp;quot;Plane&amp;quot;/&amp;gt; class using given normal and a point.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name=&amp;quot;normal&amp;quot;&amp;gt;The plane's normal vector.&amp;lt;/param&amp;gt;
        /// &amp;lt;param name=&amp;quot;point&amp;quot;&amp;gt;A point on the plane in 3D space.&amp;lt;/param&amp;gt;
        public Plane( Vector3F normal, Vector3F point )
        {
            _normal = normal;
            /*
             *                      | A |
             * Given the normal n = | B | and p as an (x,y,z) point on the plane, then d is the 
             *                      | C |
             * dot product, n dot p = -d.
             */
            _const = -Vector3F.DotProduct( normal, point );
        }
 
        /// &amp;lt;summary&amp;gt;
        /// Initializes a new instance of the &amp;lt;see cref=&amp;quot;Plane&amp;quot;/&amp;gt; class using 3 given points.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name=&amp;quot;p0&amp;quot;&amp;gt;A point on the plane in 3D space.&amp;lt;/param&amp;gt;
        /// &amp;lt;param name=&amp;quot;p1&amp;quot;&amp;gt;A point on the plane in 3D space.&amp;lt;/param&amp;gt;
        /// &amp;lt;param name=&amp;quot;p2&amp;quot;&amp;gt;A point on the plane in 3D space.&amp;lt;/param&amp;gt;
        public Plane( Vector3F p0, Vector3F p1, Vector3F p2 )
        {
            _normal = Vector3F.CrossProduct( p1 - p0, p2 - p0 );
            _normal.Normalize( );
            /*
             *                      | A |
             * Given the normal n = | B | and p as an (x,y,z) point on the plane, then d is the 
             *                      | C |
             * dot product, n dot p = -d.
             */
            _const = -Vector3F.DotProduct( _normal, p0 );
        }
&lt;/pre&gt;
&lt;/div&gt;</description><author>tcreevan</author><pubDate>Thu, 17 May 2007 21:43:33 GMT</pubDate><guid isPermaLink="false">NEW POST: Sharp3D.Math.Geometry3D.Plane incorrect equation for _const (D) 20070517P</guid></item><item><title>UPDATED WIKI: News Feeds</title><link>http://www.codeplex.com/Sharp3D/Wiki/View.aspx?title=News Feeds&amp;version=3</link><description>&lt;div class="wikidoc"&gt;
&lt;div class="rss"&gt;
&lt;div class="accentbar"&gt;
&lt;span class="left"&gt;&amp;nbsp;&lt;/span&gt;NEWS FEED&lt;span class="right"&gt;&amp;nbsp;&lt;/span&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://blog.ekampf.com/2006/07/19/Sharp3DMathIsMovingToCodePlex.aspx"&gt;Sharp3D.Math is moving to CodePlex&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Wednesday, July 19, 2006&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://blog.ekampf.com/SyndicationService.asmx/GetRssCategory?categoryName=Projects|Sharp3D.Math" target="_blank"&gt;DeveloperZen.com&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;I just got a new project created on CodePlex.com for Sharp3D.Math.&lt;br&gt;
I'll be moving all the Sharp3D.Math sources and files to that workspace within the
next two days and start planning the next version using&lt;br&gt;
their TFS system. I'm also looking for members to help and contribute to the project...&lt;br&gt;
&lt;br&gt;
The workspace URL is &lt;a href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=Sharp3D"&gt;http://www.codeplex.com/Wiki/View.aspx?ProjectName=Sharp3D&lt;/a&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ekampf.com/aggbug.ashx?id=ff7b89b7-3cb3-4f8f-8e28-c2bf02a3ae34" /&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://blog.ekampf.com/2006/01/06/JPGLGraphicsEngine.aspx"&gt;JPGL Graphics Engine&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Friday, January 06, 2006&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://blog.ekampf.com/SyndicationService.asmx/GetRssCategory?categoryName=Projects|Sharp3D.Math" target="_blank"&gt;DeveloperZen.com&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;
   A graphics engine written in C# and OpenGL which uses Sharp3D.Math can be found at &lt;a href="http://www.jordodesigns.com/jpgl.html"&gt;http://www.jordodesigns.com/jpgl.html.&lt;/a&gt;
   &lt;br&gt;
   &lt;br&gt;
   From the web site:
&lt;/p&gt;
&lt;blockquote&gt;JPGL is a graphics engine coded in C# using the OpenGL graphics API. The
engine is partially based off the CSS450/451 graphics library, which is written in
C++ and uses Direct3D. There are some major structural diversions from the CSS450/451
library, mainly to accommodate a more modular design - allowing for transparent interchangeability
in three layers within the graphics engine.&lt;/blockquote&gt; &lt;blockquote&gt;The default implementation
of JPGL provides an OpenGL graphics API layer. Included features are:&lt;ul&gt;
   &lt;li&gt;
      scene graph/node object&lt;/li&gt;
   &lt;li&gt;
      2D and 3D shape primitives&lt;/li&gt;
   &lt;li&gt;
      camera object&lt;/li&gt;
   &lt;li&gt;
      light objects&lt;/li&gt;
   &lt;li&gt;
      a GLSL shader implementation&lt;/li&gt;
   &lt;li&gt;
      textures&lt;/li&gt;
   &lt;li&gt;
      materials (with ability to load from Wavefront .MTL file)&lt;/li&gt;
   &lt;li&gt;
      transformation object&lt;/li&gt;
   &lt;li&gt;
      Wavefront .OBJ model importer&lt;/li&gt;
   &lt;li&gt;
      screenshot support&lt;/li&gt;
   &lt;li&gt;
      support for multiple OpenGL contexts&lt;/li&gt;
   &lt;li&gt;
      OpenGL display list caching for selected drawing&lt;/li&gt;
   &lt;li&gt;
      geometry data is shared between all shape primitives of same type&lt;/li&gt;
   &lt;li&gt;
      dynamically deformable mesh object&lt;/li&gt;
   &lt;li&gt;
      loft object (lofts from one profile line to another)&lt;/li&gt;
   &lt;li&gt;
      particle system object with OpenGL PointSprite extension support&lt;/li&gt;
   &lt;li&gt;
      vector, matrix, and quaternion wrappers (using Sharp3D.Math underneath)&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;&lt;img width="0" height="0" src="http://blog.ekampf.com/aggbug.ashx?id=37ff33eb-2e29-4818-aca8-4f1a52a2d51f" /&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://blog.ekampf.com/2005/06/15/Sharp3DMathDonations.aspx"&gt;Sharp3D.Math donations&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Wednesday, June 15, 2005&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://blog.ekampf.com/SyndicationService.asmx/GetRssCategory?categoryName=Projects|Sharp3D.Math" target="_blank"&gt;DeveloperZen.com&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;
   I was recently asked by wout (&lt;a href="http://www.woutware.com/"&gt;www.woutware.com&lt;/a&gt;)
   about ways to donate money to Sharp3D.Math.&lt;br&gt;
   The best way for me to recieve money (without the banks taking most of it as fees)
   is simple by sending &lt;a href="http://www.amazon.com/gp/product/B00067L6TQ/ref=br_gcer/103-2701059-7323043"&gt;an
   amazon gift certificate&lt;/a&gt;&amp;nbsp;to my email address which is&amp;nbsp;eran *AT* ekampf.com.
&lt;/p&gt;
&lt;p&gt;
   Of course, all donations are welcome... ;-)
&lt;/p&gt;
&lt;p&gt;
   Btw, if you wish to donate code or have any other comments\questions about the project
   feel free to email me to the address above...
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ekampf.com/aggbug.ashx?id=a18bee34-2d09-42bb-b6e4-bc66b7837a8a" /&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://blog.ekampf.com/2005/05/01/DXFLibraryViewerUsingSharp3DMath.aspx"&gt;DXF Library\Viewer using Sharp3D.Math&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Sunday, May 01, 2005&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://blog.ekampf.com/SyndicationService.asmx/GetRssCategory?categoryName=Projects|Sharp3D.Math" target="_blank"&gt;DeveloperZen.com&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;
   I got an email from Wout who is using Sharp3D.Math for his DXF class library\viewer
   projects.
&lt;/p&gt;
&lt;p&gt;
   Check his site out at &lt;a href="http://www.woutware.com"&gt;http://www.woutware.com&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ekampf.com/aggbug.ashx?id=76ef6356-b746-4be6-8fe4-2d60553a387d" /&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://blog.ekampf.com/2005/04/01/OrganizingYourCode.aspx"&gt;Organizing your code&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Friday, April 01, 2005&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://blog.ekampf.com/SyndicationService.asmx/GetRssCategory?categoryName=Projects|Sharp3D.Math" target="_blank"&gt;DeveloperZen.com&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;
   &lt;a href="http://www.hanselman.com/blog/"&gt;Scott Hanselman&lt;/a&gt; has posted a &lt;a href="http://www.hanselman.com/blog/HowDoYouOrganizeYourCode.aspx"&gt;very
   interesting blog entry&lt;/a&gt; about organizing the code for software projects.
&lt;/p&gt;
&lt;p&gt;
   A particular interest in the post is the use of NTFS Junction points. 
   &lt;br&gt;
   It could be usefull for sharing version information (take versioning out of AssemblyInfo.cs
   and put it in a shared file using junctions).
&lt;/p&gt;
&lt;p&gt;
   My own projects are organized in a rather hectic way which currently makes the process
   of building and releasing much more complex than it should be.
&lt;/p&gt;
&lt;p&gt;
   Note to self : Organize Sharp3D's code :)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ekampf.com/aggbug.ashx?id=260ec16b-6f16-4e3d-857b-008fbf2ffd29" /&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://blog.ekampf.com/2005/01/18/ItHasBeenAWhile.aspx"&gt;It has been a while...&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Tuesday, January 18, 2005&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://blog.ekampf.com/SyndicationService.asmx/GetRssCategory?categoryName=Projects|Sharp3D.Math" target="_blank"&gt;DeveloperZen.com&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;
   It has been a while since I last bloged and I regret that....
&lt;/p&gt;
&lt;p&gt;
   So whats new?
&lt;/p&gt;
&lt;p&gt;
   I quit my job at the IDF and applied for a position as a .NET programmer at SAP.&lt;br&gt;
   This means I will be also moving to my own place somewhere near SAP to avoid the long
   trips to\from work (now that I'll be able to afford it)
&lt;/p&gt;
&lt;p&gt;
   I just finished the final project at the Compilers course I am taking this semester
   and currently busy studying for the finals at the end of January.
&lt;/p&gt;
&lt;p&gt;
   I have neglected Sharp3D.Math 2.0 for a while but I plan to get back on it ASAP.&lt;br&gt;
   I would like to thank Wout de Zeeuw for donating 150$&amp;nbsp;for&amp;nbsp;Sharp3D.Math (through
   Amazon.com which does not charge outrageous fees like them banks...).
&lt;/p&gt;
&lt;p&gt;
   On the 12.2-18.2 I plan to be on a ski vocation at Val Thorens Freestyle (everyone
   deserves a vocation :) )
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ekampf.com/aggbug.ashx?id=88cefc16-25f8-406e-ae9e-71747a3248ce" /&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://blog.ekampf.com/2005/01/09/Sharp3DMathPerformanceImprovements.aspx"&gt;Sharp3D.Math performance improvements&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Sunday, January 09, 2005&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://blog.ekampf.com/SyndicationService.asmx/GetRssCategory?categoryName=Projects|Sharp3D.Math" target="_blank"&gt;DeveloperZen.com&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;
   After doing some performance tests (suggested by Wout de Zeeuw) it became clear to
   me that using public fields instead of properties can boost the libraries performance
   by 10%-20% (!!!).
&lt;/p&gt;
&lt;p&gt;
   Replacing the static arithmetics methods also yields another 1%-2% performance boost.
&lt;/p&gt;
&lt;p&gt;
   Wout has applied these changes to the latest Sharp3D.Math release and I will go over
   these changes and make an official Sharp3D.Math release as soon as possible after
   my finals are over.
&lt;/p&gt;
&lt;p&gt;
   I will also release a test preview of version 2.0 of the library ASAP...
&lt;/p&gt;
&lt;p&gt;
   Stay tuned... :)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ekampf.com/aggbug.ashx?id=aea9bcf8-cb89-4c8d-bf9d-d1fe6218c646" /&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://blog.ekampf.com/2005/01/03/Sharp3DMathV113Released.aspx"&gt;Sharp3D.Math v1.1.3 Released&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Monday, January 03, 2005&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://blog.ekampf.com/SyndicationService.asmx/GetRssCategory?categoryName=Projects|Sharp3D.Math" target="_blank"&gt;DeveloperZen.com&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;
   The new release contains several bug fixes.
&lt;/p&gt;
&lt;p&gt;
   Download the new release and check out the changes at the project's &lt;a href="http://www.ekampf.com/Sharp3D.Math/"&gt;homepage&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ekampf.com/aggbug.ashx?id=79eb593a-4827-45e4-80a3-b1b1d8150997" /&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://blog.ekampf.com/2004/12/03/TestDrivenDevelopmentTDDFirstImpressions.aspx"&gt;Test Driven Development (TDD) first impressions...&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Friday, December 03, 2004&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://blog.ekampf.com/SyndicationService.asmx/GetRssCategory?categoryName=Projects|Sharp3D.Math" target="_blank"&gt;DeveloperZen.com&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;
   Well,
&lt;/p&gt;
&lt;p&gt;
   I have been using TDD for Sharp3D's development process for few days now and it already
   helped me find several bugs.
&lt;/p&gt;
&lt;p&gt;
   At first I thought having to write all the tests code will just be a waste of time
   I could spend on adding features to the library but after some actuall work I noticed
   that working on the tests isn't time cosuming as I thought and it helps me find some
   bugs I wouldn't find otherwise and deliver a better product.
&lt;/p&gt;
&lt;p&gt;
   Having said that, I really have to say that the testing and refactoring capabilities
   in VS2005 are awsom. I only wish they would add performance testing capabilities (So
   I can define “test methods“ that would run and be time measured).
&lt;/p&gt;
&lt;p&gt;
   Oh and btw, notice the new &lt;a href="http://msdn2.microsoft.com/library/System.Diagnostics.Stopwatch.aspx"&gt;Stopwatch&lt;/a&gt; class
   used to accuratly meaure times (for peformance etc...)
&lt;/p&gt;
&lt;p&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ekampf.com/aggbug.ashx?id=0c710199-004e-4b3b-bd78-66ed585b2ef2" /&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://blog.ekampf.com/2004/11/26/StartedWorkingOnSharp3DMath20.aspx"&gt;Started working on Sharp3D.Math 2.0&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Friday, November 26, 2004&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://blog.ekampf.com/SyndicationService.asmx/GetRssCategory?categoryName=Projects|Sharp3D.Math" target="_blank"&gt;DeveloperZen.com&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;
   I started working on Sharp3D.Math v2.0 using using Visual Studio 2005 (.NET 2.0).&lt;br&gt;
   I am using TDD (Test Driven Development) to develop the next version to avoid bugs
   and make the library more efficient and usable...
&lt;/p&gt;
&lt;p&gt;
   Among the new features:
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Better documentation. 
   &lt;li&gt;
      Support for .NET 2.0 standards (Like adding TryParse in addition to Parse). 
   &lt;li&gt;
      Revised code. 
   &lt;li&gt;
      Better integration support. Trapezoid, Simpson, Romberg integration with accuracy\max
      iterations support. 
   &lt;li&gt;
      Statistics. 
   &lt;li&gt;
      Random and distribution dependent number generators. 
   &lt;li&gt;
      3D Surfaces 
   &lt;li&gt;
      2D\3D Curves 
   &lt;li&gt;
      And more...&lt;/li&gt;
&lt;/ul&gt;
&lt;img width="0" height="0" src="http://blog.ekampf.com/aggbug.ashx?id=632a6b16-bfde-4bad-a494-7de07ffa7e81" /&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://blog.ekampf.com/2004/11/26/Sharp3DMathV1122Released.aspx"&gt;Sharp3D.Math v1.1.2.2 released!&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Friday, November 26, 2004&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://blog.ekampf.com/SyndicationService.asmx/GetRssCategory?categoryName=Projects|Sharp3D.Math" target="_blank"&gt;DeveloperZen.com&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;
   Few minor bug fixes on this release...
&lt;/p&gt;
&lt;p&gt;
   Check it out on the &lt;a href="http://www.ekampf.com/Sharp3D.Math"&gt;Sharp3D.Math Project
   Page&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ekampf.com/aggbug.ashx?id=02996433-0259-4dd2-9ef8-19cb6ba79a3d" /&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://blog.ekampf.com/2004/11/20/Matrix4BenchmarkResultsTakeTwo.aspx"&gt;Matrix4 benchmark results - take two&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Saturday, November 20, 2004&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://blog.ekampf.com/SyndicationService.asmx/GetRssCategory?categoryName=Projects|Sharp3D.Math" target="_blank"&gt;DeveloperZen.com&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;
   Here's an update on the report at &lt;a href="http://www.ekampf.com/blog/PermaLink.aspx?guid=8626ee5a-3002-4e77-bfdd-e3a3f3d4a8e4"&gt;http://www.ekampf.com/blog/PermaLink.aspx?guid=8626ee5a-3002-4e77-bfdd-e3a3f3d4a8e4&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
   The last test compared the generic class compiled with the new C# 2.0 compiler against
   the non-generic class (from the Sharp3D.Math library) compiled for .NET 1.1.
&lt;/p&gt;
&lt;p&gt;
   I decided to make another test were both generic and non-generic classes are in the
   same project and compiled for .NET 2.0.
&lt;/p&gt;
&lt;p&gt;
   Oddly enough, when I ran the second test on my machine the results showed that&amp;nbsp;the
   generic class runs faster than the non generic class.&lt;br&gt;
   However on my friend's machine the results were more like the ones in the first test
   (non-generic slightly faster).
&lt;/p&gt;
&lt;p&gt;
   Here's the test code and executable:&lt;br&gt;
   &lt;a href="http://www.ekampf.com/blog/content/binary/Matrix4PerfTest.zip"&gt;Matrix4PerfTest.zip
   (26.94 KB)&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ekampf.com/aggbug.ashx?id=6fe1e3fb-9cb6-4e47-a869-907b08be0ead" /&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://blog.ekampf.com/2004/11/16/StartedWorkingOnTheNextMajorVersionOfSharp3DMath.aspx"&gt;Started working on the next major version of Sharp3D.Math&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Tuesday, November 16, 2004&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://blog.ekampf.com/SyndicationService.asmx/GetRssCategory?categoryName=Projects|Sharp3D.Math" target="_blank"&gt;DeveloperZen.com&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;
   I started working on the next major version of Sharp3D.Math (2.0) using version 2.0
   of the .NET Framework.
&lt;/p&gt;
&lt;p&gt;
   Some of the features I am adding:
&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;
      Non-uniform real number random generetors. 
   &lt;li&gt;
      Signal processing framework. 
   &lt;li&gt;
      Statistics methods. 
   &lt;li&gt;
      3D surfaces. 
   &lt;li&gt;
      and more....&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
   I would appreciate comments, suggestions etc...
&lt;/p&gt;
&lt;p&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ekampf.com/aggbug.ashx?id=3ba8c0ce-8c7d-406a-a88b-1320d3ecec33" /&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://blog.ekampf.com/2004/11/12/Matrix4BenchmarkResults.aspx"&gt;Matrix4 benchmark results&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Friday, November 12, 2004&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://blog.ekampf.com/SyndicationService.asmx/GetRssCategory?categoryName=Projects|Sharp3D.Math" target="_blank"&gt;DeveloperZen.com&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;
   The benchmark measured the time (in seconds) of 1,000,000 random matrix multiply operations
   on the different matrix implementations.&lt;br&gt;
   The test used the latest Sharp3D.Math build (compiled using VS2003), DirectX october
   update and VS2005 beta 1.
&lt;/p&gt;
&lt;p&gt;
   The results are:
&lt;/p&gt;
&lt;ol&gt;
   &lt;li&gt;
      Sharp3D.Math.Core.Matrix4F - 0.2857308100 seconds 
   &lt;li&gt;
      Matrix4&amp;lt;float&amp;gt; C# Kernel - 0.3076677100 seconds 
   &lt;li&gt;
      Matrix4&amp;lt;float&amp;gt; DirectX Kernel - 0.9436617200 seconds 
   &lt;li&gt;
      DirectX - 0.1269457500 seconds.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
   As expected, the DirectX CPU optimized code runs the fastest.
&lt;/p&gt;
&lt;p&gt;
   I thought that using a DirectX kernel will make &lt;em&gt;Matrix4&amp;lt;float&amp;gt;&lt;/em&gt; faster
   than using a C# implementation but it seems that the &lt;em&gt;Matrix4&amp;lt;float&amp;gt;&lt;/em&gt; &amp;lt;--&amp;gt; &lt;em&gt;Microsoft.DirectX.Matrix&lt;/em&gt; conversions
   are killing the performance benefits...
&lt;/p&gt;
&lt;p&gt;
   I expected the generic Matrix4 C# implementation to run just as fast as its non-generic
   counterpart but unfortunately it is slower. This is probably caused by using an interface
   for the kernel operations...
&lt;/p&gt;
&lt;p&gt;
   If anyone has an idea about how to make the conversion too\from DirectX faster and\or
   how to make the C# implementation just as fast as its non generic counter part I'd
   appreciate a comment or mail...
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ekampf.com/aggbug.ashx?id=8626ee5a-3002-4e77-bfdd-e3a3f3d4a8e4" /&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://blog.ekampf.com/2004/11/11/MovingOnToSharp3DMath20TestingTheUseOfGenericTypes.aspx"&gt;Moving on to Sharp3D.Math 2.0 - testing the use of generic types&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Thursday, November 11, 2004&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://blog.ekampf.com/SyndicationService.asmx/GetRssCategory?categoryName=Projects|Sharp3D.Math" target="_blank"&gt;DeveloperZen.com&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;
   I've started doing tests on the use of generics (introduced in the new .NET framework
   2.0) for the next versio&amp;nbsp; of Sharp3D.Math.
&lt;/p&gt;
&lt;p&gt;
   Doing numerics on generic types is a bit of a problem because unconstrained type parameters
   are assumed to be of type &lt;em&gt;System.Object&lt;/em&gt; which does not define arithmetic
   operations (like +, - etc...).&lt;br&gt;
   Using a constrained type parameter, the interfaces the type parameter has to implement
   could be defined but it is not possible to define operator constraints.
&lt;/p&gt;
&lt;p&gt;
   You can read a detailed discussion about the problem &lt;a href="http://lab.msdn.microsoft.com/productfeedback/viewfeedback.aspx?feedbackId=3048848f-d1e1-42ec-aa47-5b8e2ab544e7"&gt;here &lt;/a&gt;and
   at &lt;a href="http://www.codeproject.com/csharp/genericnumerics.asp"&gt;this codeproject
   article&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
   The two suggested workarounds for this problems are:
&lt;/p&gt;
&lt;ol&gt;
   &lt;li&gt;
      Define an IArithmetic interface that defines the basic operations needed for math
      calculations (addition etc...) and use it to wrap around numeric types (float, double
      etc...) 
   &lt;li&gt;
      Use a separated type for the operators.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
   The suggested workaround of using a separate type for the operators could be a good
   idea for Sharp3D.Math as it can also be used for platform specific performance tuning.&lt;br&gt;
   Say an IKernelMatrix4 implements all arithmetics for a 4x4 matrix structure, besides
   a native .NET implementation of IKernelMatrix4&amp;nbsp;there could also implementations
   using platform specific libraries such as the&amp;nbsp;DirectX math library (which uses
   SSE optimizations for matrix arithmetics), &lt;a href="http://www.intel.com/software/products/mkl/"&gt;Intel's
   Math Kernel library&lt;/a&gt;&amp;nbsp;and other unmanaged optimized libraries.
&lt;/p&gt;
&lt;p&gt;
   Currently I am implementing a 4x4 matrix structure using the method specified above
   for the purpose of performance testing: 
   &lt;br&gt;
   Generic matrix4x4 (.NET implementation) vs. Generic matrix4x4 (DirectX implementation)
   vs. Sharp3D.Math.Core.Matrix4F
&lt;/p&gt;
&lt;p&gt;
   I'll post the results soon...
&lt;/p&gt;
&lt;p&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ekampf.com/aggbug.ashx?id=902c52d4-5bd3-4462-b941-0d942373fa57" /&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://blog.ekampf.com/2004/10/22/GenericNumericsWithNET.aspx"&gt;Generic numerics with .NET&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Friday, October 22, 2004&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://blog.ekampf.com/SyndicationService.asmx/GetRssCategory?categoryName=Projects|Sharp3D.Math" target="_blank"&gt;DeveloperZen.com&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;
   I've been playing with .NET generics trying to find a way to convert the current Sharp3D.Math&amp;nbsp;structures
   to be generic templates.
&lt;/p&gt;
&lt;p&gt;
   The problem with .NET generic templates and numerics code is that there is no way
   to constraint a type parameter to require the existence of static method that we require
   for calculations (arithmetic operators etc.)
&lt;/p&gt;
&lt;p&gt;
   I found a very good workaround in &lt;a href="http://www.codeproject.com/csharp/genericnumerics.asp"&gt;this
   article&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
   Though I do not plan on converting Sharp3D.Math to use generics any time soon I assume
   I will use this solution when the time to move to .NET 2.0 comes...
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ekampf.com/aggbug.ashx?id=6be3fda8-45b8-42b1-941b-97e5dafce85d" /&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://blog.ekampf.com/2004/09/29/Sharp3DMathV1121Released.aspx"&gt;Sharp3D.Math v1.1.2.1 released!&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Wednesday, September 29, 2004&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://blog.ekampf.com/SyndicationService.asmx/GetRssCategory?categoryName=Projects|Sharp3D.Math" target="_blank"&gt;DeveloperZen.com&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;div&gt;You can download the new release from &lt;a href="http://www.ekampf.com/Sharp3D.Math/" ?&gt;&lt;strong&gt;here&lt;/strong&gt;&lt;/a&gt;.&lt;br&gt;
   You can also check out the &lt;a href="http://www.ekampf.com/Sharp3D.Math/Releases/ChangeLog.xml" ?&gt;&lt;strong&gt;change
   log&lt;/strong&gt;&lt;/a&gt; and browse the &lt;a href="http://www.ekampf.com/Sharp3D.Math/Releases/documentation.v1.1.2.1/index.html" ?&gt;&lt;strong&gt;online
   documentation&lt;/strong&gt;&lt;/a&gt;.
&lt;/div&gt;
&lt;img width="0" height="0" src="http://blog.ekampf.com/aggbug.ashx?id=61c1e973-c49d-4513-b8c8-4fbb2bca20ef" /&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://blog.ekampf.com/2004/09/25/SEHExceptionWhenSerializingValueTypes.aspx"&gt;SEHException when serializing value types&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Saturday, September 25, 2004&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://blog.ekampf.com/SyndicationService.asmx/GetRssCategory?categoryName=Projects|Sharp3D.Math" target="_blank"&gt;DeveloperZen.com&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;p&gt;
   When implementing ISerializable the MSDN documentation recommends on applying the
   [SecurityPermissionAttribute(SecurityAction.Demand,SerializationFormatter=true)] 
   &lt;br&gt;
   attribute on the GetObjectData method (Check out the &lt;a href="http://www.gotdotnet.com/team/fxcop/docs/rules/SecurityRules/GetObjectData.html"&gt;FxCop
   rule&lt;/a&gt;).
&lt;/p&gt;
&lt;p&gt;
   When trying to serialize a structure with the above CAS attribute on its GetObjectData
   I got a nasty SEHException. When I removed the CAS attribute serialization worked
   fine...&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
   I've included a test code that produces this exception with this post.&lt;br&gt;
   I've also sent it to Microsoft to see what's their take on this bug...
&lt;/p&gt;
&lt;p&gt;
   In the meanwhile I commented all the CAS attributes on the GetObjectData methods in
   the Sharp3D.Math library...
&lt;/p&gt;
&lt;p&gt;
   &lt;a href="http://www.ekampf.com/blog/content/binary/SerializationTest.zip"&gt;SerializationTest.zip
   (1.05 KB)&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ekampf.com/aggbug.ashx?id=50655936-2002-4f70-a908-f7dca39ca2f7" /&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://blog.ekampf.com/2004/09/18/MathFor3DGameProgrammingComputerGraphics.aspx"&gt;Math for 3D Game Programming &amp;amp; Computer Graphics&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Saturday, September 18, 2004&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://blog.ekampf.com/SyndicationService.asmx/GetRssCategory?categoryName=Projects|Sharp3D.Math" target="_blank"&gt;DeveloperZen.com&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;I've been thinking about starting a tutorials series about 3D math. I could use Sharp3D.Math for code samples etc...&lt;br&gt;
Anyway, I hope I'll have an update about that soon.&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ekampf.com/aggbug.ashx?id=74471454-a28e-4693-8e81-0546c42133ea" /&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="entry"&gt;
&lt;div class="title"&gt;
&lt;a href="http://blog.ekampf.com/2004/09/18/Sharp3DMathV112IsReleased.aspx"&gt;Sharp3D.Math v1.1.2 is released!&lt;/a&gt;
&lt;/div&gt;&lt;div class="moreinfo"&gt;
&lt;span class="date"&gt;Saturday, September 18, 2004&lt;/span&gt; &amp;nbsp;| &amp;nbsp;&lt;span class="source"&gt;From &lt;a href="http://blog.ekampf.com/SyndicationService.asmx/GetRssCategory?categoryName=Projects|Sharp3D.Math" target="_blank"&gt;DeveloperZen.com&lt;/a&gt;&lt;/span&gt;
&lt;/div&gt;&lt;p&gt;&lt;div&gt;You can download the new release from &lt;a href="http://www.ekampf.com/Default.aspx?section=projects_sharp3dmath"&gt;here&lt;/a&gt;.&lt;br&gt;
   You can also check out the &lt;a href="http://www.ekampf.com/Sharp3D.Math/Releases/ChangeLog.xml"&gt;change
   log&lt;/a&gt; and browse the &lt;a href="http://www.ekampf.com/Sharp3D.Math/Releases/documentation.v1.1.2/index.html"&gt;online
   documentation&lt;/a&gt;.
&lt;/div&gt;
&lt;img width="0" height="0" src="http://blog.ekampf.com/aggbug.ashx?id=30795c60-739d-4b43-9059-b5f5eb2083f0" /&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div class="accentbar"&gt;
&lt;span class="left"&gt;&amp;nbsp;&lt;/span&gt;NEWS FEED&lt;span class="right"&gt;&amp;nbsp;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>ekampf</author><pubDate>Tue, 17 Apr 2007 01:20:32 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: News Feeds 20070417A</guid></item><item><title>UPDATED WIKI: News Feeds</title><link>http://www.codeplex.com/Sharp3D/Wiki/View.aspx?title=News Feeds&amp;version=2</link><description>&lt;div class="wikidoc"&gt;
No news&lt;br /&gt;
&lt;/div&gt;</description><author>ekampf</author><pubDate>Sun, 15 Apr 2007 11:12:37 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: News Feeds 20070415A</guid></item><item><title>NEW POST: ToString() issue</title><link>http://www.codeplex.com/Sharp3D/Thread/View.aspx?ThreadId=8947</link><description>&lt;div class="wikidoc"&gt;
In Matrix3F and Matrix4F.cs you have a possible typo&lt;br /&gt; &lt;br /&gt;For Matrix 4F this should look like:&lt;br /&gt;		public override string ToString()&lt;br /&gt;		{&lt;br /&gt; &lt;br /&gt;			StringBuilder s = new StringBuilder();&lt;br /&gt;			s.Append(String.Format( &amp;quot;|{0}, {1}, {2}, {3}|\n&amp;quot;, _m11, _m12, _m13, _m14));&lt;br /&gt;			s.Append(String.Format( &amp;quot;|{0}, {1}, {2}, {3}|\n&amp;quot;, _m21, _m22, _m23, _m24));&lt;br /&gt;			s.Append(String.Format( &amp;quot;|{0}, {1}, {2}, {3}|\n&amp;quot;, _m31, _m32, _m33, _m34));&lt;br /&gt;			s.Append(String.Format( &amp;quot;|{0}, {1}, {2}, {3}|\n&amp;quot;, _m41, _m42, _m43, _m44));&lt;br /&gt; &lt;br /&gt;		return s.ToString();&lt;br /&gt;		}&lt;br /&gt; &lt;br /&gt;----------------- &lt;br /&gt;You have {0}, {1}, {3}, {4} in your code :)&lt;br /&gt; &lt;br /&gt;Oh and a wonderful lib. Keep on coding, mate.&lt;br /&gt;
&lt;/div&gt;</description><author>Jadzia</author><pubDate>Sat, 07 Apr 2007 15:23:22 GMT</pubDate><guid isPermaLink="false">NEW POST: ToString() issue 20070407P</guid></item><item><title>CREATED ISSUE: Plane/Segment intersection problem</title><link>http://www.codeplex.com/Sharp3D/WorkItem/View.aspx?WorkItemId=7883</link><description>Hello,
First of all thank you for this beautiful library!

I'm not sure if I'm using the library in the correct way, but with the following code I get wrong results:
if a segment from point A to point B intersects the plane, also the segment from B to A should intersect, but I get false from the first test.

// z = 0
Plane plane = new Plane(Vector3F.ZAxis, 0);
Vector3F pointA = new Vector3F(0, 0, -10);
Vector3F pointB = new Vector3F(0, 0, 10);
Segment segmentAB = new Segment(pointA, pointB);
Segment segmentBA = new Segment(pointB, pointA);
IntersectionPair intersection = IntersectionMethods.Intersects(segmentAB, plane);
Console.WriteLine(intersection.IntersectionOccurred);
intersection = IntersectionMethods.Intersects(segmentBA, plane);
Console.WriteLine(intersection.IntersectionOccurred);

Many thanks,
Stenio Brunetta </description><author>stenio</author><pubDate>Thu, 01 Feb 2007 10:06:23 GMT</pubDate><guid isPermaLink="false">CREATED ISSUE: Plane/Segment intersection problem 20070201A</guid></item><item><title>User Forum: Plane/Segment intersection problem</title><link>http://www.codeplex.com/Sharp3D/Project/DisplayThread.aspx?ForumId=308&amp;ThreadId=3953&amp;ANCHOR#LastPost</link><description>Hello,
First of all thank you for this beautiful library!

I'm not sure if I'm using the library in the correct way, but with the following code I get wrong results:
if a segment from point A to point B intersects the plane, also the segment from B to A should intersect, 
but I get false from the first test.

// z = 0
Plane plane = new Plane(Vector3F.ZAxis, 0);
Vector3F pointA = new Vector3F(0, 0, -1);
Vector3F pointB = new Vector3F(0, 0, 1);
Segment segmentAB = new Segment(pointA, pointB);
Segment segmentBA = new Segment(pointB, pointA);
IntersectionPair intersection = IntersectionMethods.Intersects(segmentAB, plane);
Console.WriteLine(intersection.IntersectionOccurred);
intersection = IntersectionMethods.Intersects(segmentBA, plane);
Console.WriteLine(intersection.IntersectionOccurred);

Many thanks,
Stenio Brunetta</description><author>stenio</author><pubDate>Thu, 25 Jan 2007 17:47:44 GMT</pubDate><guid isPermaLink="false">User Forum: Plane/Segment intersection problem 20070125P</guid></item><item><title>User Forum: .NET 2.0 version using generics?</title><link>http://www.codeplex.com/Project/DisplayThread.aspx?ProjectName=Sharp3D&amp;ForumId=308&amp;ThreadId=2583&amp;ANCHOR#LastPost</link><description>Any chance there will be a .NET 2.0 version using generics? I would love to see something like _Vector3Base&lt;T&gt; which takes a float or double then using a #if subclass _VectorBase to Vector3. I think having both the float and double versions in a single DLL is a bit of code bloat that could be cleaned up very easily using generics.

Are there any plans for a .NET 2.0 version using generics? If not, would you mind if I edited my version for my project to use .NET 2.0 features? I won't distribute the code (unless you want it) outside of my code package (meaning, I won't go and re-release your library with my changes).</description><author>Tegan</author><pubDate>Mon, 27 Nov 2006 22:42:41 GMT</pubDate><guid isPermaLink="false">User Forum: .NET 2.0 version using generics? 20061127P</guid></item></channel></rss>