Комментарии это здорово.
Полез в код пяти летней давности. Нашел в комментариях объяснение работы алгоритма. Примерно, после пятого вдумчивого прочтения, с каранадашом в зубах и листом бумаги, в голове наконец сложилась картина пятилетней давности.
Из данных точек построим две касательных к окружности. Сложим вектора получившиеся из центра окружности к касательным. Получим вектор биссектрисы угла образованного этими векторами. Найдем точку окружности лежащую на этом векторе, отложим из неё нормаль к биссектриссе. и найдем пересечение нормали с векторами касательной из первой и из второй точки.
Вообщем если кому охота будет поломать голову — добро пожаловать.
В комментариях можно высказывать предположения откуда это и для чего может быть применимо.
Сильно не вникал (на работе все таки), но у меня похожие вычисления были при программировании расцентровок узлов в ГСП фермах.
Comments are good, but a diagram is even better. But even better than all of that is code with good variables and method names!
That’s for sure! Actually I’m trying to follow approach which shown in this series of articles:
Csharp-BAD-PRACTICES-Learn-how-to-make-a-good-code
It’s realy inspiring.
However, my last project shows that the good coding is not the same as a good program.
This discovery is confusing actually. For example: I compare solution which I made, with source code of previous program on the project.
I found out that my quite ugly, from the coding point of view, solution which was written by the left hand in a free time from other duties — works 20 times faster and takes 20 times less space.
At the same time the source code of the previous solution is brilliant — was used all the c # techniques, all classes and methods were properly named. Each method could be read from one screen. Serialization, reflection, linq, all was used.
But result was embarrassing.
не работают ваши формулы -неверный результат и можно добавить что касательных две и для какой из них ваше решение не понятно.Например для точки(1,1) и центра окружности в(5,3) с радиусом 2.
Результат получаем 2.4 что не применимо.