private void DebugRenderLocalGeometryView(LocalGeometryView localGeometryView, params IntLineSegment2[] segs)
        {
            if (!kEnableDebugRender)
            {
                return;
            }

            Size bounds      = new Size(1280, 720);
            var  renderScale = 1.0f;

            PerspectiveProjector CreateCanvasProjector()
            {
                var rotation    = 95 * Math.PI / 180.0;
                var displaySize = new Size((int)(bounds.Width * renderScale), (int)(bounds.Height * renderScale));
                var center      = new DoubleVector3(0, 0, 0);
                var projector   = new PerspectiveProjector(
                    center + DoubleVector3.FromRadiusAngleAroundXAxis(1000, rotation),
                    center,
                    DoubleVector3.FromRadiusAngleAroundXAxis(1, rotation - Math.PI / 2),
                    displaySize.Width,
                    displaySize.Height);

                return(projector);
            }

            DebugMultiCanvasHost host = DebugMultiCanvasHost.CreateAndShowCanvas(bounds, new Point(0, 0), CreateCanvasProjector());
            var canvas = host.CreateAndAddCanvas(0);

            canvas.DrawPolyNode(localGeometryView.PunchedLand);
            foreach (var hole in localGeometryView.Job.DynamicHoles)
            {
                canvas.DrawPolygonContours(hole.Value.holeExcludedContours, StrokeStyle.OrangeHairLineSolid);
                canvas.DrawPolygonContours(hole.Value.holeIncludedContours, StrokeStyle.RedHairLineSolid);
            }
            foreach (var seg in segs)
            {
                canvas.DrawLine(seg, StrokeStyle.CyanHairLineSolid);
            }
        }