private Bitmap DrawTangentAndNormal(float t) { tangentAndNormal = true; Bitmap bmp = new Bitmap(onlyTractrix); Graphics graphics = Graphics.FromImage(bmp); if (t != 90) { List <PointF> points = curve.TangentLine(t); PointF TangentText = curve.Tangent(curve.FindPoint(t).X - 20, t); PointF NormalText = curve.Normal(curve.FindPoint(t).X - 20, t); graphics.DrawString("Tangent", new Font("Calibri", 10), Brushes.Turquoise, viewport.FactToLogic(TangentText)); graphics.DrawString("Normal", new Font("Calibri", 10), Brushes.Orange, viewport.FactToLogic(NormalText)); graphics.DrawLine(new Pen(Color.Turquoise, 1), viewport.FactToLogic(points[0]), viewport.FactToLogic(points[1])); points = curve.NormalLine(t); graphics.DrawLine(new Pen(Color.Orange, 1), viewport.FactToLogic(points[0]), viewport.FactToLogic(points[1])); PointF p = viewport.FactToLogic(curve.Tangent(curve.FindPoint(t).X, t)); int s = 3; graphics.DrawEllipse(new Pen(Color.Red, 1), p.X - s, p.Y - s, s * 2, s * 2); } return(bmp); }