#include "complex_model.h" namespace Calculation { ComplexModel::ComplexModel(std::complex c) : Shared::CurveViewRange(), std::complex(c) { } float ComplexModel::rangeBound(float direction, bool horizontal) const { float minFactor = k_minVerticalMarginFactor; float maxFactor = k_maxVerticalMarginFactor; float value = imag(); if (horizontal) { minFactor = k_minHorizontalMarginFactor; maxFactor = k_maxHorizontalMarginFactor; value = real(); } float factor = direction*value >= 0.0f ? maxFactor : minFactor; if (std::isnan(value) || std::isinf(value) || value == 0.0f) { return direction*factor; } return factor*value; } float ComplexModel::xMin() const { return rangeBound(-1.0f, true); } float ComplexModel::xMax() const { return rangeBound(1.0f, true); } float ComplexModel::yMin() const { return rangeBound(-1.0f, false); } float ComplexModel::yMax() const { return rangeBound(1.0f, false); } }