Напишите метод вычисления расстояния от отрезка до точки - C#

Узнай цену своей работы

Формулировка задачи:

Листинг программы
  1. // Вставьте сюда финальное содержимое файла DistanceTask.cs
  2. using System;
  3. namespace DistanceTask
  4. {
  5. public static class DistanceTask
  6. {
  7. // Расстояние от точки (x, y) до отрезка AB с координатами A(ax, ay), B(bx, by)
  8. public static double GetDistanceToSegment(double ax, double ay, double bx, double by, double x, double y)
  9. {
  10. double ak = Math.Sqrt(((x - ax)*(x - ax))+((y-ay)*(y-ay)));
  11. double kb = Math.Sqrt(((x - bx)*(x - bx))+((y-by)*(y-by)));
  12. double ab = Math.Sqrt(((ax - bx)*(ax - bx))+((ay-by)*(ay-by)));
  13. if(x >= ax && x <= bx && ab != 0 )
  14. {
  15. double p = (ak + kb + ab)/2;
  16. double s = Math.Sqrt((p*(p - ak)*(p - kb)*(p - ab)));
  17. return (2 * s)/ab;
  18. }
  19. else if((x <= ax || x >= bx) && ab != 0)
  20. {
  21. return Math.Min(ak,kb);
  22. }else return 0;
  23. }
  24. }
  25. }
Помогите найти ошибку. Ответ при AB({X=0, Y=-3},{X=-3, Y=2}) и точке X({X=-2, Y=2}) должен быть 0.857492925712544. А по моему коду получается 1. Я проверил и подставил в формулы, должно получится 1, но задачник не принимает. Глюки в нем исключены, где-то в формулах налажал, но где не могу найти.

Решение задачи: «Напишите метод вычисления расстояния от отрезка до точки»

textual
Листинг программы
  1. double p = (ak + kb + ab)/2.0;
  2.                 double s = Math.Sqrt((p*(p - ak)*(p - kb)*(p - ab)));
  3.                
  4.                 return (2.0 * s)/ab;

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


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

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

12   голосов , оценка 4.167 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы