Beispiel #1
0
    public static bool Compute(LineSample first, LineSample second,
                               out Vector3D closestFirst,
                               out Vector3D closestSecond)
    {
        // It's really too bad. VRageMath.LineD implements this, but I believe
        // it only works on line segments.

        // Many thanks to http://geomalgorithms.com/a07-_distance.html :P
        var w0 = first.Point - second.Point;
        var a  = Vector3D.Dot(first.Direction, first.Direction);
        var b  = Vector3D.Dot(first.Direction, second.Direction);
        var c  = Vector3D.Dot(second.Direction, second.Direction);
        var d  = Vector3D.Dot(first.Direction, w0);
        var e  = Vector3D.Dot(second.Direction, w0);

        var D = a * c - b * b;

        if (D > 0.0)
        {
            var sc = (b * e - c * d) / D;
            var tc = (a * e - b * d) / D;

            // Closest point on first line
            closestFirst = first.Point + sc * first.Direction;
            // Closest point on second line
            closestSecond = second.Point + tc * second.Direction;
            return(true);
        }

        // Parallel lines
        closestFirst  = default(Vector3D);
        closestSecond = default(Vector3D);
        return(false);
    }
Beispiel #2
0
    public static bool Compute(LineSample first, LineSample second,
                               out Vector3D closestFirst,
                               out Vector3D closestSecond)
    {
        // It's really too bad. VRageMath.LineD implements this, but I believe
        // it only works on line segments.

        // Many thanks to http://geomalgorithms.com/a07-_distance.html :P
        var w0 = first.Point - second.Point;
        var a = Vector3D.Dot(first.Direction, first.Direction);
        var b = Vector3D.Dot(first.Direction, second.Direction);
        var c = Vector3D.Dot(second.Direction, second.Direction);
        var d = Vector3D.Dot(first.Direction, w0);
        var e = Vector3D.Dot(second.Direction, w0);

        var D = a * c - b * b;
        if (D > 0.0)
        {
            var sc = (b * e - c * d) / D;
            var tc = (a * e - b * d) / D;

            // Closest point on first line
            closestFirst = first.Point + sc * first.Direction;
            // Closest point on second line
            closestSecond = second.Point + tc * second.Direction;
            return true;
        }

        // Parallel lines
        closestFirst = default(Vector3D);
        closestSecond = default(Vector3D);
        return false;
    }
Beispiel #3
0
        public void RenderLine()
        {
            // arrange
            var          map      = LineSample.CreateMap();
            const string fileName = "line.png";

            // act
            var bitmap = new MapRenderer().RenderToBitmapStream(map.Viewport, map.Layers, map.BackColor);

            // aside
            File.WriteToGeneratedFolder(fileName, bitmap);

            // assert
            Assert.IsTrue(CompareBitmaps(File.ReadFromOriginalFolder(fileName), bitmap));
        }
Beispiel #4
0
        public void RenderLine()
        {
            // arrange
            using var map = LineSample.CreateMap();
            var          viewport = map.Extent !.Multiply(1.1).ToViewport(600);
            const string fileName = "line.png";

            // act
            using var bitmap = new MapRenderer().RenderToBitmapStream(viewport, map.Layers, map.BackColor);

            // aside
            File.WriteToGeneratedTestImagesFolder(fileName, bitmap);

            // assert
            Assert.IsTrue(CompareBitmaps(File.ReadFromOriginalFolder(fileName), bitmap));
        }
Beispiel #5
0
        public void RenderLine()
        {
            // arrange
            var map      = LineSample.CreateMap();
            var viewport = new Viewport
            {
                Center     = new Point(0, 0),
                Width      = 600,
                Height     = 400,
                Resolution = 63000
            };
            const string fileName = "line.png";

            // act
            var bitmap = new MapRenderer().RenderToBitmapStream(viewport, map.Layers, map.BackColor);

            // aside
            File.WriteToGeneratedFolder(fileName, bitmap);

            // assert
            Assert.IsTrue(CompareBitmaps(File.ReadFromOriginalFolder(fileName), bitmap));
        }
Beispiel #6
0
        private static void Main(string[] args)
        {
            Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");

            //Paragraphs
            ParagraphSample.SimpleFormattedParagraphs();
            ParagraphSample.ForceParagraphOnSinglePage();
            ParagraphSample.ForceMultiParagraphsOnSinglePage();
            ParagraphSample.TextActions();
            ParagraphSample.Heading();

            ////Document
            DocumentSample.AddCustomProperties();
            DocumentSample.ReplaceText();
            DocumentSample.ApplyTemplate();
            DocumentSample.AppendDocument();

            //Images
            ImageSample.AddPicture();
            ImageSample.CopyPicture();
            ImageSample.ModifyImage();

            //Indentation/Direction/Margins
            MarginSample.SetDirection();
            MarginSample.Indentation();
            MarginSample.Margins();

            //Header/Footers
            HeaderFooterSample.HeadersFooters();

            //Tables
            TableSample.InsertRowAndImageTable();
            TableSample.TextDirectionTable();
            TableSample.CreateRowsFromTemplate();
            TableSample.ColumnsWidth();
            TableSample.MergeCells();

            //Hyperlink
            HyperlinkSample.Hyperlinks();

            //Section
            SectionSample.InsertSections();

            //Lists
            ListSample.AddList();

            //Equations
            EquationSample.InsertEquation();

            //Bookmarks
            BookmarkSample.InsertBookmarks();
            BookmarkSample.ReplaceText();

            //Charts
            ChartSample.BarChart();
            ChartSample.LineChart();
            ChartSample.PieChart();
            ChartSample.Chart3D();

            //Tale of Content
            TableOfContentSample.InsertTableOfContent();
            TableOfContentSample.InsertTableOfContentWithReference();

            //Lines
            LineSample.InsertHorizontalLine();

            //Protection
            ProtectionSample.AddPasswordProtection();
            ProtectionSample.AddProtection();

            //Parallel
            ParallelSample.DoParallelActions();

            //Others
            MiscellaneousSample.CreateRecipe();
            MiscellaneousSample.CompanyReport();
            MiscellaneousSample.CreateInvoice();

            Console.WriteLine("\nPress any key to exit.");
            Console.ReadKey();
        }