Нарисовать линии, начало которых исходит из точки, а заканчивается на окружности - C#

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

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

Листинг программы
  1. int accuracy = 64;
  2. for (int i = 1; i <= accuracy; i++)
  3. {
  4. lineList.Add(new MyLine(line.x1, line.y1, line.x1 + (Math.Cos(((360 / accuracy) * i) * Math.PI / 180)), line.y1 + (Math.Sin(((360 / accuracy) * i) * Math.PI / 180))));
  5. }
Почему-то в четвертой четверти отрезки не рисуются.

Решение задачи: «Нарисовать линии, начало которых исходит из точки, а заканчивается на окружности»

textual
Листинг программы
  1. public static void TangentLineMain(string[] args)
  2. {
  3.     Circle circle = new Circle(new Point(5, 3), 4);
  4.     Point targetPoint = new Point(5, 7);
  5.     //Circle circle = new Circle(new Point(1,1), 1);
  6.     //Point targetPoint = new Point(0,0);
  7.  
  8.     Point dVect = circle.Center - targetPoint;
  9.     double vectLength = dVect.Lentgh;
  10.     double vectAngle = Math.Atan2(dVect.Y, dVect.X);
  11.     //Console.WriteLine("Line Length: {0}", vectLength);
  12.  
  13.     double triangleAngle = Math.Asin(circle.Radius / vectLength);
  14.     Line line1, line2;
  15.     {
  16.         double ang = vectAngle + triangleAngle;
  17.         Point p = new Point(Math.Cos(ang), Math.Sin(ang));
  18.         p *= vectLength * Math.Abs(Math.Cos(triangleAngle));
  19.         line1 = new Line(targetPoint, targetPoint + p);
  20.     }
  21.  
  22.     {
  23.         double ang = vectAngle - triangleAngle;
  24.         Point p = new Point(Math.Cos(ang), Math.Sin(ang));
  25.         p *= vectLength * Math.Abs(Math.Cos(triangleAngle));
  26.         line2 = new Line(targetPoint, targetPoint + p);
  27.     }
  28.  
  29.     Console.WriteLine("Line 1: {0}\nLine 2: {1}", line1, line2);
  30. }

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


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

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

14   голосов , оценка 3.857 из 5

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

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

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