Я пишу конвертер для данных 2D геометрии.Одним из элементов, которые я должен преобразовать, является дуга.В исходной системе дуга описывается двумя выровненными по оси прямоугольниками.Первый прямоугольник является ограничительной рамкой для круга, частью которого является дуга.Второй прямоугольник является ограничительной рамкой для самой дуги.Ограничение состоит в том, что ограничивающий прямоугольник дуги должен пересекать два ребра ограничивающего прямоугольника круга.Я знаю координаты верхней левой и нижней правой точек каждого прямоугольника.
Система целей описывает дугу следующим образом: Прямоугольник - это ограничивающий прямоугольник, вокруг круга, частью которого является дуга.Пока это так же, как указано выше.Тогда у меня есть две точки, обозначающие начальную и конечную точки дуги.Обе точки должны находиться точно на «краю» круга.
Вопрос: видите ли вы простой способ вычислить начальную и конечную точку дуги?Я уже видел этот вопрос , но он кажется действительно сложным.Возможно, есть более простой способ сделать это ...
Мои мысли пока:
Кажется, я должен вычислить пересечения краев ограничительной рамки дуги с кругом.Возможны два случая (из-за упомянутых выше ограничений): только одно ребро пересекается с окружностью или два ребра пересекаются с окружностью.Кроме того, все остальные ребра всегда будут за пределами круга.
Обновление: начальная и конечная точки разрезают круг на две части.Какая из двух частей нарисована как дуга, определяется порядком начальной и конечной точек.Дуга всегда рисуется против часовой стрелки от начальной к конечной точке.