Найти точку на линии, находящуюся на заданной дистанции от её начала - 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();
}
}
}