Plotting программного обеспечения, как правило, не беспокоит определение домена; он просто оценивает функцию в любой видимой позиции и пропускает рисование любых строк, если результат был «undefined»/«NaN»/etc. Вот ваш код изменен, чтобы сделать что пропуск (непроверенным, и я не соответствовать вашему стилю скобки, потому что я терпеть не могу):
QPainterPath p();
double previousY = 1/0 /* NaN */;
m_painter->setPen(m_functionPen);
for(double x=-m_w/2, y; x<m_w/2; x++) {
y = f(x/100);
if (y == y /* not-NaN test */) {
if (previousY == previousY) {
p.lineTo(x,y*100);
} else {
p.moveTo(x,y*100);
}
}
previousY = y;
}
m_painter->drawPath(p);
(я предполагаю, что QPainterPath p()
построит пустой путь. Я не знаком с библиотекой, которую вы используете.) Обратите внимание, что теперь это относится к первой точке, как и другие точки для простоты кодирования.
(Кроме того, эта стратегия не даст правильного графика, если вы оцениваете функцию, такую как f(x) = 1/(x + 0.00005)
, потому что неопределенная точка будет просто пропущена, и вы получите вертикальную линию. проблема.)
с другой стороны, если вы пытаетесь найти разумные границы для вашего графика (ваш m_w
переменных), затем определяет область является проблемы. В этом случае это будет зависеть от того, какие функции у вас есть и как они представлены.
Звучит как вопрос для [Математика] (http://math.stackexchange.com/). –
Можете ли вы дать более подробную информацию о том, что вы пытаетесь выполнить и что вы пробовали? – Nope