Продлить отрезок - C#
Формулировка задачи:
Столкнулся с интересной задачкой, необходимо продлить отрезок на 20 пикселей в обе стороны построенный по двум точкам. Как это можно реализовать?
Решение задачи: «Продлить отрезок»
textual
Листинг программы
/// <summary> /// Увеличение отрезка на заданную величину в обе стороны /// </summary> /// <param name="start">Начальная точка отрезка</param> /// <param name="end">Конечная точка отрезка</param> /// <param name="length">Длина, на которую нужно увеличить отрезок</param> /// <returns>Возвращает две точки — новые координаты отрезка</returns> Tuple<PointF, PointF> ResizeLine(PointF start, PointF end, float length) { //Считаем вектор var v = new PointF(end.X - start.X, end.Y - start.Y); //Длина вектора var l = (float)Math.Sqrt(v.X * v.X + v.Y * v.Y); //Нормирование v = new PointF(v.X / l, v.Y / l); //Новые координаты отрезка var newStart = new PointF(start.X - v.X * length, start.Y - v.Y * length); var newEnd = new PointF(end.X + v.X * length, end.Y + v.Y * length); return new Tuple<PointF, PointF>(newStart, newEnd); }