示例#1
0
        private static void TestPoint()
        {
            // DotNet3d.Point code coverage
            {
                DotNet3d.Point p0 = new DotNet3d.Point();
                p0.X = 10;
                p0.Y = 11;
                p0.Z = 12;
                var str = p0.ToString();
                Trace.Assert(str == "(10 11 12)\n");
            }

            DotNet3d.Point p1 = new DotNet3d.Point();
            Trace.Assert(p1.ToString() == "(0 0 0)\n");

            DotNet3d.Point p2 = new DotNet3d.Point
            {
                X = 1,
                Y = 2,
                Z = 3
            };
            Trace.Assert(p2.ToString() == "(1 2 3)\n");

            DotNet3d.Point p3 = new DotNet3d.Point(p2);
            Trace.Assert(p3.ToString() == "(1 2 3)\n");

            DotNet3d.Point p4 = new DotNet3d.Point(4, 5, 6);
            Trace.Assert(p4.ToString() == "(4 5 6)\n");
            double[] arr = { 7, 8, 9 };

            DotNet3d.Point p5 = new DotNet3d.Point(arr);
            Trace.Assert(p5.ToString() == "(7 8 9)\n");

            DotNet3d.Point p6 = p2 + p4;
            Trace.Assert(p6.ToString() == "(5 7 9)\n");

            DotNet3d.Point p7 = 2 * p2;
            Trace.Assert(p7.ToString() == "(2 4 6)\n");

            DotNet3d.Point p8 = p2 * 2;
            Trace.Assert(p8.ToString() == "(2 4 6)\n");

            DotNet3d.Point p9 = p2 / 2;
            Trace.Assert(p9.ToString() == "(0.5 1 1.5)\n");
        }
示例#2
0
        private static void TestPly()
        {
            System.IO.Directory.CreateDirectory(@"..\..\testData\Output");
            var plyAscii        = new DotNet3d.Ply(@"..\..\testData\CalibrationXml-Ascii-UnixLineEndings.ply");
            var PointCloudAscii = plyAscii.ToPointCloud();
            var asciiTxt        = PointCloudAscii.ToString();

            var plyBinary        = new DotNet3d.Ply(@"..\..\testData\CalibrationXml-Binary.ply");
            var PointCloudBinary = plyBinary.ToPointCloud();
            var binaryTxt        = PointCloudBinary.ToString();

            Trace.Assert(asciiTxt == binaryTxt);

            var plyAsciiWinLineEndings        = new DotNet3d.Ply(@"..\..\testData\CalibrationXml-Ascii-WinLineEndings.ply");
            var PointCloudAsciiWinLineEndings = plyAsciiWinLineEndings.ToPointCloud();
            var asciiWinLineEndingsTxt        = PointCloudAsciiWinLineEndings.ToString();

            Trace.Assert(asciiTxt == asciiWinLineEndingsTxt);

            plyAscii.SaveAscii(@"..\..\testData\Output\CalibrationXml-Ascii-ToAscii.ply");
            plyAscii.SaveBinary(@"..\..\testData\Output\CalibrationXml-Ascii-ToBinary.ply");

            plyBinary.SaveAscii(@"..\..\testData\Output\CalibrationXml-Binary-ToAscii.ply");
            plyBinary.SaveBinary(@"..\..\testData\Output\CalibrationXml-Binary-ToBinary.ply");

            // array of points
            {
                var ptArr = new DotNet3d.Point[3];
                ptArr[0] = new DotNet3d.Point(0, 0, 0);
                ptArr[1] = new DotNet3d.Point(1, 1, 1);
                ptArr[2] = new DotNet3d.Point(-1, -1, -1);

                var ply = new DotNet3d.Ply(ptArr);

                var txt =
                    "ply\n" +
                    "format ascii 1.0\n" +
                    "comment Created by DotNet3d\n" +
                    "element vertex 3\n" +
                    "property float x\n" +
                    "property float y\n" +
                    "property float z\n" +
                    "end_header\n" +
                    "0 0 0\n" +
                    "1 1 1\n" +
                    "-1 -1 -1\n";

                Trace.Assert(ply.ToString() == txt);
            }

            // point from strings
            {
                var pt = new DotNet3d.Point("1 2 3");
                Trace.Assert(pt.ToString() == "(1 2 3)\n");

                pt = new DotNet3d.Point("2, 4, 6");
                Trace.Assert(pt.ToString() == "(2 4 6)\n");

                pt = new DotNet3d.Point("3\t6\t9");
                Trace.Assert(pt.ToString() == "(3 6 9)\n");

                pt = new DotNet3d.Point("(4, 8, 12)");
                Trace.Assert(pt.ToString() == "(4 8 12)\n");
            }
            // Test loading binary (if this takes longer than a second to load, this consider this test a failure)
            {
                Stopwatch sw = new Stopwatch();
                sw.Start();
                var ply = new DotNet3d.Ply(@"..\..\testData\BIN-color_to_depth_Frame1.ply");
                sw.Stop();
                long oneSec = 1000;
                // NOTE: This takes about 2 ms on my home pc
                Trace.Assert(sw.ElapsedMilliseconds < oneSec);
            }
            // Test loading ascii (if this takes longer than a second to load, this consider this test a failure)
            {
                Stopwatch sw = new Stopwatch();
                sw.Start();
                var ply = new DotNet3d.Ply(@"..\..\testData\color_to_depth_Frame1.ply");
                sw.Stop();
                long tenSeconds = 10 * 1000;
                // NOTE: This once took 853414 ms (14 min), now it takes about 5 seconds on my home pc in debug mode
                Trace.Assert(sw.ElapsedMilliseconds < tenSeconds);
            }
        }