Найти точку на линии, находящуюся на заданной дистанции от её начала - C#
Формулировка задачи:
Задача такая. Есть линия с x0,y0; x1,y1.
Расстояние между точками (x0,y0) и (x1,y1) > некой заданной дистанции.
Нужно найти ближайшую точку к (x0,y0), лежащую на этой линии и находящуюся на заданной дистанции.
Как выразить уравнение линии, понятно. Нашли k и b. Дальше что? Изменяемые координаты у нас 2 - х и y. Искать каждую точку перебором, инкрементируя x или y?
Прошу совета. Голова уже не варит.
Решение задачи: «Найти точку на линии, находящуюся на заданной дистанции от её начала»
textual
Листинг программы
using System; using System.Linq; namespace ConsoleApplication202 { class Program { static void Main(string[] args) { var x0 = 10; var y0 = 10; var x1 = 100; var y1 = 100; var expectedDistance = 23; //находим длину исходного отрезка var dx = x1 - x0; var dy = y1 - y0; var l = Math.Sqrt(dx * dx + dy * dy); //находим направляющий вектор var dirX = dx / l; var dirY = dy / l; //умножаем направляющий вектор на необх длину dirX *= expectedDistance; dirY *= expectedDistance; //находим точку var resX = dirX + x0; var resY = dirY + y0; Console.WriteLine("{0:0.0} {1:0.0}", resX, resY); Console.ReadLine(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д