2012-06-25 5 views
0

Предполагая, что разбор уравнения не будет проблемой, как я могу сделать алгоритм для построения произвольного уравнения с учетом конкретного размера холста? Как и в том, чтобы выделить координаты всех пикселей?Как построить график/график произвольного уравнения

Я пробовал просто многократно вычислять Y, учитывая, что X, но он выглядит неаккуратно.

Это не вопрос домашней работы.

По сюжету, я имею в виду график, как графический калькулятор вычисляет уравнение.

+2

Что вы подразумеваете под словом "looking sloppy"? –

+0

Откуда берутся ваши уравнения? Как вы разбираете их во что-то, что может быть понято программой? – Oded

+0

Вы просматривали любые библиотеки графиков? нет необходимости повторно изобретать колесо. –

ответ

0

Рассмотрите возможность использования библиотеки данных DataVisualization (Windows Forms), содержащейся в .NET Framework 4. Документация API here и технические справочные страницы here.

1

Вместо того, чтобы рисовать каждый пиксель отдельно, вы можете рассмотреть использование сплайновой кривой. Например, System.Drawing.Graphics имеет метод DrawCurve, который рисует сглаженную кривую (сплайн) через несколько точек. Кроме того, установите SmoothingMode в AntiAlias

e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; 

Рассматривают передавая функции, как лямбда-выражения, если это возможно. Это проще, чем разбор выражения, заданного как строка.

public void DrawCurve(PointF[] points, Func<float,float> f) 
{ 
    ... 
    float y = f(x); 
    ... 
} 

E.g.

DrawCurve(points, x => (float)Math.Sin(x)/(x * x + 1);