The cursor now initially aligns with the grid, and tries to avoid points
where the function is not defined.
Change-Id: Ie3b304281f5848102c2f3c0aa5c031b351418186
When entering the Navigate menu, a portion of the Y axis is memoized to
preserve the grid units.
However, this portion was not modified when zooming, causing some
glitches.
Change-Id: I06b4ee044eaa75d48b8f338c9ef6ea33bb299e39
If the user opens the Navigate menu, then closes it immediately, the
Auto status is not turned off.
Change-Id: I2d1ca0cfdae1b9c957dede7bf9f3c2890dea1bb0
When using the Navigate menu on graphs, the grid units are computed
using the normal graph's range, so that the units won't change.
Change-Id: I8ff8853868e5c90319619a6271d6a7d87ae82ab0
Scenario: (with the current auto zoom algorithm)
Graph f(x) = x! -> Auto axes are x=[-13,17647;13,17647],
y=[3628793;2628807]
Press "0" "EXE" to go to x = 0 -> Axes are x=[-13,17647;13,17647],
y=[-0.8612717;13.13873]
Press auto
Press "0" "EXE" to go to x = 0 -> the assertion about KDCoordinates
breaks.
Fixes the following bug :
- Plot ln(x) (or any other curve that's normlalized by default)
- Go back and replace ln(x) with log(x) (or any other curve that's NOT
normalized by default)
--> The 'Equal Axes' button is still on.
Change-Id: I0ef50dc9866e908894bd4f5c3ade198f9b3ea318
Checking wether the range that has been computed is suitable is now
done in Poincare::Zoom by SanitizeRange.
Change-Id: Ib7ff73a3beae29996b1a773744021ad85c6ba946
This method, that prevented the graph from panning when moving the
cursor for the first time, caused more problems than it solved.
For instance, the graph for 1/(1-x) was not symmetrical because of it.
Change-Id: Ibb22e38ec0ace6b219c0e42dda481c98b5f717f0
Rework the logic so that :
- an undefined function will be displayed with a clealry defined
null range.
- display both an undefined function and a correct function at the
same time will not affect the correct range.
Change-Id: Ife9dc0d2ace667cab5a6b8826347078fca33e4d5
Method yForCursorFirstMove is supposed to expand the window so that the
first move of the cursor won't cause it to pan. It now filters extreme
values to prevent the original window to be totally squashed, such as
with the drawing of e^x and (x-100)(x+10) at the same time.
Change-Id: Icd6c26b01475a112c4231f293e03ab31d80d5e51
Added a tolerance when checking orthonormality, so that ranges that are
nearly orthonormal will be made orthonormal.
Change-Id: Ie3bf076086561e3ff6374e7daa9dd1a884c52d5a
Restore the permanence of the cursor between accesses to the graph
window.
The cursor used to be reset when the models had been modified. As there
is no longer a system in place to track these modifications, we manually
check if there is a curve beneath the cursor before reseting it.
Change-Id: I6f71fc17744b5bf1ee552c82126bb4a08b823629
The normalized status would not be refreshed after a call to setDefault
triggered by InteractiveCurveViewController::viewWillAppear.
Change-Id: I923ef3ca0585dbcc1f32b992d7dd1f4a3a206532
The method FunctionGraphController::yRangeForCursorFirstMove expands the
Y range to include the values of the first cursor moves on the left and
the right of the center. It has been modified to preserve
orthonormality.
Change-Id: I898ab9721e45e2acde261f8b94b80cab81b39a92
Added a method to Zoom to set a range to a specific ratio. This method
is used by InteractiveCurveViewRange::normalize.
Change-Id: Id3029439294ece02ea19fb6c6de90b9edc85d771
The ability to perform a range search without changing the X range was
only there to accomodate the Yauto feature.
Change-Id: I8c2b61b447fbd3dc1f4e303dff06d1a8d6e7a4f2
The Auto mode for curve ranges must be deactivated when moving the
cursor outside the screen and when activating navigation (formerly
Zoom).
Change-Id: I281a1d069c2ebcc30e7ead469c4f48438054d7c2
This method of InteractiveCurveViewRangeDelegate was only used to
compute the Y range when Yauto was on.
Change-Id: I9b688a87e16fc58c7d2b00eb071076b98f945df6
The graph range used to be reset to default whenever all functions were
modified. As we no longer want to reset the range without the user's
input, we do not need to track whether the functions changed at all.
/!\ As of this commit, there is no longer a way to restore the default
zoom, until a new automatic zoom button is added.
Change-Id: Ie74e8fd61e13055fa6ce2b2d1e883182d4ecffce