Найти точку на линии, находящуюся на заданной дистанции от её начала - 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();
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д