Example #1
0
        public void Timetester()
        {
            var line1  = new KtLine3D(new KtPoint3D(-2, 1, 0), new KtVector3D(2, 3, 1));
            var line2  = new KtLine3D(new KtPoint3D(3, 0, -1), new KtVector3D(-1, 1, 2));
            var timer  = new Stopwatch();
            var total1 = 0d;
            var total2 = 0d;

            for (int j = 0; j < 100; j++)
            {
                timer.Start();
                for (int i = 0; i < 100000; i++)
                {
                    var(_, _) = line2.Intersect2(line1);
                }
                timer.Stop();
                //Console.WriteLine("Elapsed time {0} ms for Intersect1", timer.ElapsedMilliseconds);
                total2 += timer.ElapsedMilliseconds;
                timer.Reset();

                timer.Start();
                for (int i = 0; i < 100000; i++)
                {
                    var(_, _) = line2.Intersect(line1);
                }
                timer.Stop();
                //Console.WriteLine("Elapsed time {0} ms for Intersect2", timer.ElapsedMilliseconds);
                total1 += timer.ElapsedMilliseconds;
                timer.Reset();
            }
            Console.WriteLine("Elapsed time {0} ms for Intersect1", total1 / 100);
            Console.WriteLine("Elapsed time {0} ms for Intersect2", total2 / 100);
        }
Example #2
0
        public void DistanceBetweenLines()
        {
            var line1  = new KtLine3D(new KtPoint3D(2, 6, -9), new KtVector3D(3, 4, -4));
            var line2  = new KtLine3D(new KtPoint3D(-1, -2, 3), new KtVector3D(2, -6, 1));
            var actual = line2.Distance(line1);

            Assert.IsTrue(actual.NearEqual(4.74020116673185d));
        }
Example #3
0
        public void IntersectionBetweenLines4()
        {
            var line1 = new KtLine3D(new KtPoint3D(-2, 1, 0), new KtVector3D(2, 3, 1));
            var line2 = new KtLine3D(new KtPoint3D(3, 0, -1), new KtVector3D(-1, 1, 2));

            var(inter1, inter2) = line2.Intersect(line1);
            Assert.AreEqual(inter1, new KtPoint3D(1.2666666666666666666666666666666666666666666666666666666666666666666666666666666666d, 1.733333333333333333333333333333333333333333d, 2.4666666666666666666666666d));
            Assert.AreEqual(inter2, new KtPoint3D(-0.4, 3.4, 0.8));
        }
Example #4
0
        public void DistanceBetweenLines2()
        {
            var line1    = new KtLine3D(new KtPoint3D(-2, 1, 0), new KtVector3D(2, 3, 1));
            var line2    = new KtLine3D(new KtPoint3D(3, 0, -1), new KtVector3D(-1, 1, 2));
            var actual   = line2.Distance(line1);
            var expected = 5d * Math.Sqrt(3) / 3;

            Assert.IsTrue(actual.NearEqual(expected));
        }
Example #5
0
        public void IntersectionBetweenLines2()
        {
            var line1 = new KtLine3D(new KtPoint3D(6, 8, 4), (new KtPoint3D(12, 15, 4) - new KtPoint3D(6, 8, 4)).ToKtVector3D());
            var line2 = new KtLine3D(new KtPoint3D(6, 8, 2), (new KtPoint3D(12, 15, 6) - new KtPoint3D(6, 8, 2)).ToKtVector3D());

            var(a, b) = line2.Intersect2(line1);
            var expected = new KtPoint3D(9, 23d / 2, 4);

            Assert.AreEqual(a, expected);
            Assert.AreEqual(b, expected);
        }
Example #6
0
        public void DistanceIntersectionBetweenLines()
        {
            var line1 = new KtLine3D(new KtPoint3D(-2, 1, 0), new KtVector3D(2, 3, 1));
            var line2 = new KtLine3D(new KtPoint3D(3, 0, -1), new KtVector3D(-1, 1, 2));

            var(actualDistance, inter1, inter2) = line2.DistanceIntersection(line1);
            var expected = 5d * Math.Sqrt(3) / 3;

            Assert.IsTrue(actualDistance.NearEqual(expected));
            Assert.AreEqual(inter1, new KtPoint3D(1.2666666666666666666666666666666666666666666666666666666666666666666666666666666666d, 1.733333333333333333333333333333333333333333d, 2.4666666666666666666666666d));
            Assert.AreEqual(inter2, new KtPoint3D(-0.4, 3.4, 0.8));
        }