Я создал графический калькулятор, который работает для большинства функций . Он принимает инфиксное выражение пользовательской строки и преобразует его в постфиксное для упрощения вычислений. Затем я перебираю и передаю значения x в постфиксное выражение, чтобы получить значение Y для построения графиков с помощью pygame.
Первая проблема, с которой я столкнулся, заключалась в расчетах невозможных чисел. вещи. (например, деление на ноль, квадратный корень из -1, 0 ^ неположительное число). Если бы произошло что-то подобное, я бы вывел None, и этот пиксель не был бы добавлен в список точек для построения графика.
* Я показал все различные попытки, которые я предпринял, чтобы помочь вам понять, откуда я пришел. Если вы хотите видеть только мой самый последний код и метод, перейдите туда, где написано «текущий».
Метод 1
Мой первый метод заключался в том, что после получения всех значений пикселей я рисовал их с помощью функции pygame aalines. Это работало, за исключением того, что оно не работало, когда между фактическими точками были пропущенные точки, потому что это просто рисовало линию через точки. (1/x не будет работать, но что-то вроде 0^x будет)
Вот как выглядит 1/x с использованием метода aalines

Метод 1.1
Моей следующей идеей было разделить строку на две строки каждый раз, когда обратно печаталось None. Это работало для 1/x, но я быстро понял, что это будет работать только в том случае, если одно из переданных значений X точно соответствует значению Y, равному None. 1/x может сработать, но 1/(x+0,0001) не сработает.
Метод 2
Мой следующий метод заключался в преобразовании значения x каждого пикселя в соответствующее значение точки x в окне (например, (0,0) в графическом окне на самом деле будет пикселем (249,249) в окне программы 500x500). Затем я вычислял каждое значение y с помощью только что созданных значений x. Это будет работать для любой линии, наклон которой не превышает 1 или
Подробнее здесь: https://stackoverflow.com/questions/290 ... python-2-7