private List <PointF> NormalizePoints(ProtractorRoi roi) { float aspectRatio = 1F; if (roi.PixelAspectRatio.IsNull) { if (!roi.NormalizedPixelSpacing.IsNull) { aspectRatio = (float)roi.NormalizedPixelSpacing.AspectRatio; } } else { aspectRatio = roi.PixelAspectRatio.Value; } List <PointF> normalized = new List <PointF>(); foreach (PointF point in roi.Points) { normalized.Add(new PointF(point.X, point.Y * aspectRatio)); } return(normalized); }
private IRoiAnalyzerResult Analyze(ProtractorRoi roi, RoiAnalysisMode mode) { // Don't show the callout until the second ray is drawn if (roi.Points.Count < 3) { return(new RoiAnalyzerResultNoValue("Protactor", SR.StringNoValue)); } List <PointF> normalizedPoints = NormalizePoints(roi); double angle = Vector.SubtendedAngle(normalizedPoints[0], normalizedPoints[1], normalizedPoints[2]); return(new SingleValueRoiAnalyzerResult("Protactor", SR.FormatAngleDegrees, Math.Abs(angle), String.Format(SR.FormatAngleDegrees, Math.Abs(angle)))); }
private IRoiAnalyzerResult Analyze(ProtractorRoi roi, RoiAnalysisMode mode) { // Don't show the callout until the second ray is drawn if (roi.Points.Count < 3) { return new RoiAnalyzerResultNoValue("Protactor", SR.StringNoValue); } List<PointF> normalizedPoints = NormalizePoints(roi); double angle = Vector.SubtendedAngle(normalizedPoints[0], normalizedPoints[1], normalizedPoints[2]); return new SingleValueRoiAnalyzerResult("Protactor", SR.FormatAngleDegrees, Math.Abs(angle), String.Format(SR.FormatAngleDegrees, Math.Abs(angle))); }
private List<PointF> NormalizePoints(ProtractorRoi roi) { float aspectRatio = 1F; if (roi.PixelAspectRatio.IsNull) { if (!roi.NormalizedPixelSpacing.IsNull) aspectRatio = (float) roi.NormalizedPixelSpacing.AspectRatio; } else { aspectRatio = roi.PixelAspectRatio.Value; } List<PointF> normalized = new List<PointF>(); foreach (PointF point in roi.Points) normalized.Add(new PointF(point.X, point.Y*aspectRatio)); return normalized; }