Example #1
0
        private void StartThreadToRotate(int _cnt)
        {
            Console.WriteLine("running aditional thread to rotate current object");
            new Thread(() =>
            {
                var crtThreadCnt = _cnt;
                Console.WriteLine("thread started");
                Console.WriteLine("waiting for lock");

                semaphoreRotateParts.Wait();

                Console.WriteLine("lock locked");
                var inPath = tmpPath + @"\part-" + crtThreadCnt + ".ply";
                if (File.Exists(inPath))
                {
                    var parser = new PlyParser();
                    Console.WriteLine("reading st");
                    parser.Read(inPath);
                    Console.WriteLine("making st");
                    new Object3D().MakeRotateAndSaveObject(parser,
                                                           Variables.Center,
                                                           360 / steps * crtThreadCnt);
                }
                else
                {
                    Console.WriteLine("Can't find file: " + inPath);
                }
                Console.WriteLine("aux Thread job done, releasing lock");
                rotatedParts[_cnt] = true;
                rotatedObjectsParts++;
                semaphoreRotateParts.Release();
            }).Start();
        }
Example #2
0
        public static void Main(string[] args)
        {
            PlyParser pp   = new PlyParser();
            var       path = @"D:\Projects\OC\test\";

            pp.Read(path + "1.ply");

            var      center = new Point3D(0.125571, -0.02198797, -0.6631655);
            Object3D obj    = new Object3D(new List <Point3D>(), new List <Face>(), center);

//            obj.rotateObject(center, 25);

            for (var i = 1; i <= 10; i++)
            {
                Console.WriteLine("reading " + i);
                pp.Read(path + i + ".ply");
                Console.WriteLine("creating obj");
                var objCrt = new Object3D(pp.pointList, pp.faceList, center);
                Console.WriteLine("rotating ");
                objCrt.rotateObject(center, 36);
                Console.WriteLine("concat");
                obj.concatenate(objCrt);
            }

            //var highest = obj.pointList.Max(p => p.Y);
            //-0.08506382
            //            pp.Read("D:/kinect/projekt/part2.ply");
            //            Object3D obj2 = new Object3D(pp.pointList, pp.faceList, pp.pointList[0]);
            //            var cog = obj2.getCOG();
            //            obj2.rotateObject(cog,-45);
            //            obj.concatenate(obj2);
            pp.pointList = obj.pointList;
            pp.faceList  = obj.faceList;

            //var z = pp.pointList.Sum(p => p.Z)/pp.pointList.Count;

            pp.Write(path + "out.ply");
        }