Другие языки программирования и технологии

кривые Безье и геометрия

Дана окружность диаметром 100 см, на ней отложено 100 точек через одинаковое расстояние, внутри этой окружности нарисована произвольная фигура иписанная кривыми Безье, нужно провести все возможные касательные к этой фигуре, при условии что касательные должны проходить через 2 точки на окружности.
Кривые Безье могут быть нескольких порядков:

Первого — Для отрезка касательные можно строить только для его концов. Поэтому, вероятно, такие линии в вашей фигуре отсутствуют.

Второго — Для этих линий, собственно, само построение — это и есть движение точки по касательным… Т. е. для проведения всех касательных, нужно воспроизвести формулу построения самой кривой и получить набор крайних точек, через которые можно провести прямую.
Эти расчёты очень легко воспроизвести только для выпуклой фигуры.
Если же фигура будет иметь разнонаправленные повороты, то необходимо будет ещё выполнять поворот системы координат и рассчёт квадратных уравнений для всех остальных отрезков, чтобы найти точки пересечения касательной прямой и отрезков…

Третьего и четвёртого — тут задача стоит ещё более грандиозная!

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

А, собственно, в чём суть вопроса?
Математические выкладки или реализация алгоритма подобного задания — это дело не 15 минут…
Поэтому, лично я их делать «за спасибо» не буду!
Роман Минов
Роман Минов
52 316
Лучший ответ
Касательная к ЛЮБОЙ точке на кривой, не касающейся окружности, .будет проходить ровно через две точки окружности.

Если кривая замкнута, то через ЛЮБУЮ точку плоскости вне кривой будет проходить касательная к этой кривой. Если кривая не выпукла, касательные будут проходить и через часть фигуры, ограниченной кривой.

Если кривая не замкнута, то вполне вероятно (но не обязательно), что на плоскости останутся сектора, не занятые касательными.

Берёшь две соседние точки кривой, считаешь касательные, закрашиваешь пространство между этими касательными. Сдвигаешься на одну точку, повторяешь процедуру...

Если же нужно, чтобы касательная проходила через 2 из 100 заданных точек, то просто берёшь каждую из 4950 возможных прямых и проверяешь, является ли она касательной к фигуре.