Commit Graph

43 Commits

Author SHA1 Message Date
Hugo Saint-Vignes
990c45b661 [apps/shared] Prevent label method from being called on uninitialized chars 2021-01-05 11:38:21 +01:00
Gabriel Ozouf
89c50509d8 [shared] InteractiveCurveViewRange::isOrthonormal
The old method isOrthonormal has been split into two :
  - shouldBeNormalized tests whether the range is close enough to a
    normal range
  - isOrthonormal tests whether the range is strictly orthonormal, but
    takes into account imprecisions of floating-point arithmetic
2021-01-05 11:01:45 +01:00
Gabriel Ozouf
ea4770fc81 [shared/interactive_curve_view_range] Change normalization tolerance
The loss of significance that occurs when subtracting the bounds of the
axes must be taken into account when asserting whether the range is
orthonormal.
2020-12-29 09:47:29 +01:00
Gabriel Ozouf
ffebd2e987 [shared] Rename methods 2020-12-07 15:58:56 +01:00
Gabriel Ozouf
316d054935 [sequence] Restore margins on the sequence graph 2020-12-07 15:58:56 +01:00
Gabriel Ozouf
6e9195fafa [shared] Add forceChangeY parameter to normalize()
Change-Id: Iff5417cd765f3fd09825b81cb41f883530b39233
2020-12-07 15:58:56 +01:00
Gabriel Ozouf
41778433b1 [graph] Fix a bug when zooming
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
2020-11-16 16:50:21 +01:00
Gabriel Ozouf
4233f197d3 [shared] Keep graph units when using navigation
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
2020-11-13 10:50:31 +01:00
Gabriel Ozouf
9e9033537c [WIP][interactive_curve_view_range] Tweak tolerance
Change-Id: Iacfb7de81a4ab8a7fb73770053e189d596016201
2020-11-04 15:58:37 +01:00
Gabriel Ozouf
82a77df088 [interactive_curve_view_range] Missing resets
Added some missing resets of the Auto and Normalize statuses

Change-Id: I5514a2566c1f6ba73d04b526402b428b2edce4b4
2020-11-04 15:58:31 +01:00
Hugo Saint-Vignes
bb8a28ade0 [poincare/zoom] Simplify plot ranges after adding margins
Change-Id: If8904ca4e7d306376de785a125fe5fba168de718
2020-11-04 15:58:26 +01:00
Hugo Saint-Vignes
2f97dab6d1 [apps/shared] Add toggle buttons in Graph view
Change-Id: I7548d11fb114b2605ce34d3bda0776277b79ff9d
2020-11-04 15:58:25 +01:00
Gabriel Ozouf
c4cd3ecffa [poincare/zoom] Factor range sanitation
Checking wether the range that has been computed is suitable is now
done in Poincare::Zoom by SanitizeRange.

Change-Id: Ib7ff73a3beae29996b1a773744021ad85c6ba946
2020-11-04 15:58:22 +01:00
Gabriel Ozouf
3ba4f974f7 [interactive_curve_view_range] Move status update
The methods setDefault and normalize now update the zoomAuto and
zoomNormalize status.

Change-Id: I0400c22816c17d38fd1b3dee5c8a2f1ccfa79340
2020-11-04 15:58:21 +01:00
Gabriel Ozouf
958b172d08 [poincare/zoom] Handle undefined functions
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
2020-11-04 15:58:21 +01:00
Gabriel Ozouf
8ce9f363ad [interactive_curve_view_range] Force equal axes
Added a tolerance when checking orthonormality, so that ranges that are
nearly orthonormal will be made orthonormal.

Change-Id: Ie3bf076086561e3ff6374e7daa9dd1a884c52d5a
2020-11-04 15:58:19 +01:00
Gabriel Ozouf
bcb4b3095b [function_graph_controller] Fix Y range expansion
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
2020-11-04 15:58:16 +01:00
Gabriel Ozouf
5d9c7b0c1f [interactive_curve_view_range] isOrthonormal
Change-Id: I154487908d1a2a11e01b2a4e51ef867e235babab
2020-11-04 15:58:15 +01:00
Gabriel Ozouf
d642339963 [interactive_curve_view_range] Normal ratio
The method NormaRatio returns the screen ratio for an orthonormal
range.

Change-Id: Ib834f9934232866646da16c78447782cdbdc0af2
2020-11-04 15:58:15 +01:00
Gabriel Ozouf
26754a3230 [graph] Force same grid unit on orthonormal graphs
Change-Id: I2abca9eb1c4a14057323ee97e1044715f89620ff
2020-11-04 15:58:13 +01:00
Gabriel Ozouf
e2725c8e61 [apps/interactive_curve_view_range] Status markers
Add member variable m_zoomAuto and m_zoomNormalized to remember the
interactive range's status.

Change-Id: I77c43ddd683d3c6011742801139d23f5e20c99fe
2020-11-04 15:58:10 +01:00
Gabriel Ozouf
1a5661fd4c [apps/range_parameter_controller] Remove YAuto
This allows for a great deal of simplifications in the class
RangeParamterController.

Change-Id: I5de55d4e8e1f598eb13b08fb8f042907f55b2fa8
2020-11-04 15:58:08 +01:00
Gabriel Ozouf
5a07db3452 [apps] Remove "Preadjustments" menu for curves
Change-Id: I1a30efd502c5db36325d87fa0f1dffacc37a4f1c
2020-11-04 15:58:08 +01:00
Gabriel Ozouf
4007f4d452 [apps] Tweaked panning for better cache alignement
Method InteractiveCurveViewRange::panToMakePointVisible now moves the
range of a whole number of pixels when panning horizontally. This allows
the cache of cartesian functions not to be invalidated.

Change-Id: Idb9904fef134dd13458e1f2287b0fe5145e8aec7
2020-11-04 14:45:35 +01:00
Léa Saviot
97b495a4dc [apps/interactive_curve_view_range] Orthonormal keep max grid unit
When setting the axes then putting on the orthnormalization, 2 * (max of
the two axes units) is put to 1 cm instead of doing 2 units = 1cm. This
roughly keeps the configuration of the window.
2020-02-12 15:13:21 +01:00
Émilie Feral
45d42287e2 [apps/shared] MemoizedCurveViewRange is composed of two Range1D to
factorize setters and getters
2019-09-03 15:34:35 +02:00
Ruben Dashyan
d4afcfd9fd [apps/*_curve_view_range] Mark accessors const 2019-08-08 17:22:04 +02:00
Ruben Dashyan
67f9f79322 [apps] Implement InteractiveCurveViewController::isCursorVisible
It was a pure virtual method implemented in derived classes
  Shared::FunctionGraphController,
  Regression::GraphController.
InteractiveCurveViewRange does not need anymore to hold CurveViewCursor
* m_cursor.
2019-05-03 15:54:21 +02:00
Léa Saviot
d76c77f323 [apps] Prevent too much zooming on curve views
This removes curve drawings that are ugly because of float imprecision,
such as cos(x)^2+sin(x)^2
2019-01-10 11:42:02 +01:00
Léa Saviot
cea413e91d [apps] Fix Orthonormal setting in graphs
It was not perfectly orthormal.
2019-01-10 11:42:02 +01:00
Léa Saviot
404db60a3d [apps/shared] Code cleaning and inlining 2019-01-10 11:42:02 +01:00
Émilie Feral
d6528d84a9 [apps/shared] Change zoom to ensure to keep the same cusor position
Change-Id: Ie24fcdda2aad7da8872915511fcd2e71d19ff8a6
2017-06-09 11:35:53 +02:00
Émilie Feral
39f422a95a [apps/shared] In interactive curve view controller, repaire bugs due to
wrong initialisation of the range

Change-Id: I2222e27df19b8130ddb3926eba584f7e6d90b7ba
2017-06-05 11:17:17 +02:00
Émilie Feral
a54e45e8ef [apps.shared] In interactive curve view range, avoid inconsistent window
range

Change-Id: Iaa787b0c96b3ccdc34249c9649f3378182cf7f69
2017-06-02 14:07:56 +02:00
Émilie Feral
6b2ae04a13 [apps/sequence][apps/regression][apps/graph] Move ranges and cursor in
snapshot

Change-Id: I3e5a163ae4b3a6860969ef12d939513cffed7710
2017-05-18 14:16:41 +02:00
Émilie Feral
0ec90c36f8 [apps/shared] In range, never set NAN values
Change-Id: I7511952acafdedb5b85aeee38232abe153523a49
2017-04-13 16:04:49 +02:00
Émilie Feral
e95ea50d3c [apps/shared] Fix bug in go to parameter controllers
Change-Id: I196378c4921583af42dc4a2e64e3a6c32038f9d1
2017-03-29 18:36:47 +02:00
Émilie Feral
ffd6e61328 [apps/shared] In range, fix bug when clipping range values
Change-Id: Ibd6dd8bf5668aaabc9f47c781a606b41cb64e6db
2017-03-29 18:36:46 +02:00
Émilie Feral
bb718b07c7 [apps/sequence] Clip default range initialisation to 0 on X range for
sequences

Change-Id: I501a397ce3016ba605bd9aca950b87a2ca295000
2017-03-28 14:49:27 +02:00
Émilie Feral
dc6acc0d48 [apps/shared] Clip displayed range in graph view in interactive curve
view range

Change-Id: I4654a1f9c06420d6ade8a86a13c0d89f025f324f
2017-03-20 14:55:59 +01:00
Émilie Feral
e5e9f7cc41 [poincare][apps] Make preferences a const object accessible from
anywhere (poincare and apps)

Change-Id: I49cc6bf940d1efeb6b153daac949ffcb23999a8d
2017-02-20 09:39:24 +01:00
Émilie Feral
23026b6718 [apps/shared] Namespace shared
Change-Id: I6dec7ce900bb4e801a25c567fe5e242cb744cf29
2017-02-13 17:15:06 +01:00
Émilie Feral
b06c54856f [apps\shared] Create a folder shared/
Change-Id: I94e4474ff5ab3bf9db7afd5b3be57b985755ecdf
2017-02-13 17:15:06 +01:00