Я иногда попиливаю свой helper-for-use-only-by-me пакет и вот недавно захотелось добавить простую функциональность из аналитической геометрии(раньше я думал что это просто школьная геометрия, но тут мне открыли глаза:)). Нет, я и раньше добавлял кое какую простую математику в свои проекты, но то было довольно примитивные задачи. Я искал руками решение уравнения и забивал это решение в код, где с одной стороны было неизвестное, а с другой полностью вычислимое, на момент вызова.
Так вот, на данный момент мне надо решить систему 3х уравнений с 2 неизвестными. Итого получается для нахождения 1 неизвестного относительно другого нужно составить 9 уравнений. Это много, ведь так? Вопрос к практикующим в программировании математику, как вы решаете такие задачи? Вот система, в которой l и m - искомые переменные:
[ x0+l*p = x1+m*p1
[ y0+l*q = y1+m*q1
[ z0+l*r = z1+m*r1
+-----+-----------------+------------------+-----------------+---------------+
| | m | p | q | r |
+-----+-----------------+------------------+-----------------+---------------+
| l | | (x1+m*p1-x0)/p | (y1+m*q1-y0)/q |(z1+m*r1-z0)/r |
+-----+-----------------+------------------+-----------------+---------------+
| p1 | (x0+l*p-x1)/p1 | | | |
+-----+-----------------+------------------+-----------------+---------------+
| q1 | (y0+l*q-y1)/q1 | | | |
+-----+-----------------+------------------+-----------------+---------------+
| r1 | (z0+l*r-z1)/z1 | | | |
+-----+-----------------+------------------+-----------------+---------------+
Пока в голову приходит сделать реактивную систему для решения таких систем уравнений, но останавливает 1 - заметная тормознутость по сравнению с решением в лоб, 2 - сложность создания выше чем решение основной задачи