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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4 из 5
Похожие ответы