/// <summary> /// Takes a point in image coordinates to act as the origin of the current coordinate system. /// </summary> public void SetOrigin(PointF p) { PointF u = distortionHelper.Undistort(p); calibrator.SetOrigin(u); AfterCalibrationChanged(); }
public override void Draw(Graphics canvas, DistortionHelper distorter, IImageToViewportTransformer transformer, bool selected, long currentTimestamp) { double opacityFactor = infosFading.GetOpacityTrackable(trackingTimestamps, currentTimestamp); if (opacityFactor <= 0) { return; } QuadrilateralF quad = transformer.Transform(quadImage); bool drawEdgesOnly = !planeIsConvex || (!styleHelper.Perspective && !quadImage.IsAxisAlignedRectangle); using (penEdges = styleHelper.GetPen(opacityFactor, 1.0)) using (SolidBrush br = styleHelper.GetBrush(opacityFactor)) { foreach (PointF p in quad) { canvas.FillEllipse(br, p.Box(4)); } if (!drawEdgesOnly) { if (distorter != null && distorter.Initialized) { QuadrilateralF undistortedQuadImage = distorter.Undistort(quadImage); projectiveMapping.Update(quadPlane, undistortedQuadImage); } else { projectiveMapping.Update(quadPlane, quadImage); } DrawGrid(canvas, penEdges, projectiveMapping, distorter, transformer); } else { // Non convex quadrilateral or non rectangle 2d grid: only draw the edges. canvas.DrawLine(penEdges, quad.A, quad.B); canvas.DrawLine(penEdges, quad.B, quad.C); canvas.DrawLine(penEdges, quad.C, quad.D); canvas.DrawLine(penEdges, quad.D, quad.A); } } }
public override void Draw(Graphics canvas, DistortionHelper distorter, IImageToViewportTransformer transformer, bool selected, long currentTimestamp) { double opacityFactor = infosFading.GetOpacityFactor(currentTimestamp); if (opacityFactor <= 0) { return; } QuadrilateralF quad = transformer.Transform(quadImage); using (penEdges = styleHelper.GetPen(opacityFactor, 1.0)) using (SolidBrush br = styleHelper.GetBrush(opacityFactor)) { foreach (PointF p in quad) { canvas.FillEllipse(br, p.Box(4)); } if (planeIsConvex) { if (distorter != null && distorter.Initialized) { QuadrilateralF undistortedQuadImage = distorter.Undistort(quadImage); projectiveMapping.Update(quadPlane, undistortedQuadImage); } else { projectiveMapping.Update(quadPlane, quadImage); } //DrawDiagonals(canvas, penEdges, quadPlane, projectiveMapping, distorter, transformer); DrawGrid(canvas, penEdges, projectiveMapping, distorter, transformer); } else { // Non convex quadrilateral: only draw the edges. canvas.DrawLine(penEdges, quad.A, quad.B); canvas.DrawLine(penEdges, quad.B, quad.C); canvas.DrawLine(penEdges, quad.C, quad.D); canvas.DrawLine(penEdges, quad.D, quad.A); } } }