Exemplo n.º 1
0
        public void Arc3DTest_006()
        {
            var tol = 1e-7;

            var p1  = new Vector3D(20.17459383, 178.42487311, -56.31435851);
            var p2  = new Vector3D(1.7990927, 231.58612295, -18.13420814);
            var p3  = new Vector3D(262.37695212, 302.11773752, 132.19450446);
            var arc = new Arc3D(tol, p1, p2, p3);

            // area and centre of mass
            var A        = 0d;
            var centroid = arc.CentreOfMass(out A);

            Assert.True(A.EqualsTol(1e-7, 32476.83673649));
            Assert.True(centroid.EqualsTol(1e-7, new Vector3D("X=106.62109106 Y=278.15563166 Z=57.60718457")));

            var dp1 = new Vector3D("X = 4.11641325 Y = 266.06066703 Z = 11.60392802");
            var dp2 = new Vector3D("X = 58.22323201 Y = 331.06393108 Z = 85.07377904");
            var dp3 = new Vector3D("X = 158.93019908 Y = 345.12414417 Z = 132.0972665");
            {
                var q = arc.Divide(4, include_endpoints: true).ToList();
                Assert.True(q.Count == 3 + 2);
                Assert.True(q.Any(w => w.EqualsTol(tol, p1)));
                Assert.True(q.Any(w => w.EqualsTol(tol, dp1)));
                Assert.True(q.Any(w => w.EqualsTol(tol, dp2)));
                Assert.True(q.Any(w => w.EqualsTol(tol, dp3)));
                Assert.True(q.Any(w => w.EqualsTol(tol, p3)));
            }

            // bbox
            var bbox = arc.BBox(tol);

            Assert.True(bbox.Contains(tol, new Vector3D("X = 1.24800294 Y = 178.42487311 Z = -56.31435851")));
            Assert.True(bbox.Contains(tol, new Vector3D("X = 262.37695212 Y = 178.42487311 Z = -56.31435851")));
            Assert.True(bbox.Contains(tol, new Vector3D("X = 262.37695212 Y = 347.16710407 Z = -56.31435851")));
            Assert.True(bbox.Contains(tol, new Vector3D("X = 1.24800294 Y = 347.16710407 Z = -56.31435851")));
            Assert.True(bbox.Contains(tol, new Vector3D("X = 1.24800294 Y = 178.42487311 Z = 138.54160976")));
            Assert.True(bbox.Contains(tol, new Vector3D("X = 262.37695212 Y = 178.42487311 Z = 138.54160976")));
            Assert.True(bbox.Contains(tol, new Vector3D("X = 262.37695212 Y = 347.16710407 Z = 138.54160976")));
            Assert.True(bbox.Contains(tol, new Vector3D("X = 1.24800294 Y = 347.16710407 Z = 138.54160976")));
        }