Нахождение квадрата в координатной плоскости описывающего окружность - C#
Формулировка задачи:
Добрый день, Уважаемые,
Вроде и с математикой у меня не так уж и плохо, но все же к решению не могу прийти!?
На самом деле у меня не окружность, а дуга. Известны начальная и конечная точка, и коэффициент кривизны, т.е. Собственно дальше не догоню как искать квадрат описывающий дугу?!
тангенс четверти угла
стянутого дуговым сегментом. Четверть угла лишь для того чтобы тангенснеобрывался
если модуль угла больше Пи/2 А тангенс нужендля того что бы определить в какую сторону дуга выпуклая
от отрезка соединяющего те две точки.Point a = new Point(4, 1); Point b = new Point(8, 3); // Тангенс четверти угла стянутого дуговым сегментом double bulge = 2.414213562373094; // Угол стянутый дуговым сегментом double L = Math.Atan(bulge) * 4; // Для отрезка соединяющего начальну и конечную точки дуги double AB = Math.Sqrt(Math.Pow(a.X - b.X, 2.0) + Math.Pow(a.Y - b.Y, 2.0)); // Радиус кривизны дуги double R = AB / (Math.Sqrt(2 - 2 * Math.Cos(L)));
Решение задачи: «Нахождение квадрата в координатной плоскости описывающего окружность»
textual
Листинг программы
Point a = new Point(4, 1); Point b = new Point(8, 3); // Тангенс четверти угла стянутого дуговым сегментом double bulge = 2.414213562373094; // Угол стянутый дуговым сегментом double L = Math.Atan(bulge) * 4; // Для отрезка соединяющего начальну и конечную точки дуги double AB = Math.Sqrt(Math.Pow(a.X - b.X, 2.0) + Math.Pow(a.Y - b.Y, 2.0)); // Радиус кривизны дуги double R = AB / (Math.Sqrt(2 - 2 * Math.Cos(L))); // Растояние от АВ до Центра окружности double h = R - AB * bulge; // Координаты вектора AB double ABx = b.X - a.X; double ABy = b.Y - a.Y; //Находим перпендикуляр: double Px = -ABy; double Py = ABx; //Длина перпендикуляра: double LenP = Math.Sqrt(Math.Pow(Px, 2.0) + Math.Pow(Py, 2.0)); //Нормализуем вектор P (приводим к единичной длине): Px = Px / LenP; Py = Py / LenP; //Находим нужные координаты центра окружности: double Hx = (a.X + b.X) / 2 + Px * h; double Hy = (a.Y + b.Y) / 2 + Py * h;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д