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); }
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)); }
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)); }
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)); }
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); }
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)); }