C++ для начинающих провести касательную к окружности

Построение касательной к окружности. Дана точка и окружность, построить касательную.

Реализовано с помощью алгоритма указанного на сайте
http://studentps.narod.ru/graph_kasy.html

  Написание этого материала — это мой личный успех, небольшой прорыв и приобретение так нужных знаний.

  Итак. Чтобы приступить к написанию программы, нужно определиться, что вообще потребуется. Надо размыслить над теми ситуациями когда касательную построить можно и когда нельзя. Мысленный анализ задачи должен привести к тому, что станет понятно: «Точка может лежать на окружности, внутри неё и на ней». Значит первым шагом будет написание программы, которая в зависимости от положения точки будет реагировать по разному. В принципе, написать отдельную функцию для этого несложно.

  Вторая ступень развития — это изучение определений, чтение теории и поиск разных формул. При чтении теории нужно выкопать важную зацепку. Из определения касательных можно выцепить, что касательная окружности всегда перпендикулярна её радиусу. Теперь напрягаемся и увеличиваем силу мыслительных процессов. Если случится чудо и мозг проявит хоть какое-то содействие, то он может подсказать, что три точки — это треугольник, а если там есть перпендикуляр, то Теорема Пифагора. Но не всё так просто и если ваш мозг направил вас в это русло мыслительных рек, то он просто издевается над вами. Чертим на бумаге рисунок, убеждаемся в ошибке предположений и материм свой разум. Хорошо проматерившись на никчемность своей головы, прибегаем к поиску нахождения точек касания используя всю доступную литературу и интернет.
  В процессе поиска находим разные способы и обдумываем можем ли мы применить хоть что-то из того что нарыли. Мозг в это время живет отдельно от нашего тела и думает о посторонних вещах, не желая помочь своему обладателю. Только чудо может спасти. Проявляем упорство и надеемся на удачу. В моем случае удача помогла найти способ определения точек касания через дополнительное построение окружности и я решил использовать это.

  Как оказалось, вторая ступень вышла какой-то неожиданное напряженно-геморойной, но несмотря на это пришлось её преодолеть. Следующая ступенька — построение второй окружности и написание функций поиска пересечения точек. Эта ступень не такая тяжелая как вторая, но ели не знаем ничего, то приходится прибегать к поиску координат пересечения окружностей (где нарыл, сам не знаю, но нарыл в интернете). Несмотря на более легкое решение, оказывается тратим свое время и оставшиеся нервы. После построения второй окружности выводим обе окружности на экран. Отмечаем точку от которой строить касательную и проверяем линейкой верность. Если все правильно, то радуемся, что этот шаг был проще чем предыдущие.

  Дальше идет этап, на котором нужно определится порядок построения (две или одну). Логически одну прямую построить проще, поэтому отталкиваемся от нее. На этой стадии вспоминаем то за что материли мозг. Касательная это перпендикуляр к радиусу. Прикидываем на листе бумаги и видим, что нужно построить перпендикуляр от радиуса. (честно говоря я еле смог придумать как строить перпендикулярные прямые по трем точкам), но если вы это читаете, то можете не изобретать велосипед, а просто проанализировать функцию для такого построения. Три точки есть (основная совпадает с точкой касания и еще центр окружности). функция написана (перпендикуляр можно построить по трем точкам, поэтому лучше использовать три параметра). В дальнейшем может проявится то, что знаменатели дроби могут быть нолями (я это не сразу заметил), поэтому это надо учесть и запомнить на будущее. (смотрите код)

  После написания функции сразу тестируем ее правильность при различных положениях точки. Возникает ситуация — не можем положить точку на окружность в произвольном месте. Пытаемся применить формулу окружности. Наткнутся можно на разные и если пробуем применить общую формулу — снова материм мозг, будим соседа в 3 часа ночи, рвем волосы на своей голове, рвем волосы и на голове соседа из-за того что что-то не получается. Успокоившись пробуем тригонометрическую. Тригонометрическая должна помочь.

  После всех мучений собираем воедино построение касательной если точка лежит на окружности.

  Следующий шаг — построение прямых по двум точкам. Найти пример такого построения можно найти у меня в блоге.

  Наводим красивости.

Код C++ Построить касательную к окружности


  Изменить способ ввода данных не должен составлять труда. Изменять нужно только координаты точки, координаты центра окружности и радиус.
Например так

   Я старался подробно объяснить, но даже несмотря на это достаточно много моментов упущено и если их описывать, то это будет очень много лишних слов, поэтому статья получидась такой какой вы её прочитали.
Слова о никчемности кто-то может воспринять близко к сердцу, уверяю вас я писал сориентировавшись на свой ум и на свою голову, чтобы придать немного художественной краски к технической литературе
Все комментарии на сайте проверяются, поэтому ваш комментарий может появиться не сразу. Для вставки кода в комментарий используйте теги: [php]ВАШ_КОД[/php]

Один комментарий: C++ для начинающих провести касательную к окружности

Добавить комментарий

Ваш e-mail не будет опубликован.

Поиск

 
     

Случайная книга в электронном формате

https://www.litres.ru/denis-kolisnichenko/programmirovanie-dlya-android-samouchitel/?lfrom=15589587
Яндекс.Метрика
НАГРАДИ АВТОРА САЙТА
WEBMONEY
R375024497470
U251140483387
Z301246203264
E149319127674

- Сынок, сходи в магазин? - А волшебное слово? - Отключу интернет! - Уже бегу!

Выражаю свою признательность

  • Максиму очень признателен за указание на мои ошибки и неточности.
  • Sergio ===> за оказание помощи в исправлении моих ошибок
  • Gen ===> за правильное стремление помочь другим новичкам и выявления моих ошибок