class CTioga2::Graphics::CoordinateTransforms
Deals with transforming the coordinates of all datasets
todo
-
offsets
-
scales
-
x/y log
-
non-linear transformations ?
-
the possibility to provide locations using this.
-
conversion of datasets.
todo Shouldn't this facility be axis-local ? Non-linear transformations definitely belong there as well (and that would be almost trivial to write !).
@todo For now, this is a mess: these things completely mess up the data processing… This is a complex problem:
-
if the Dataset are modified in place, this is a nightmare for data processing
-
on the other hand, if they are not modified in place, this means that things that work on data sets and show things on the plot (think TangentPrimitive, for instance) will have to do additional things to get the target coordinates. This is probably the best way to go, though… This would need some functions to work directly on XY coordinates.
Attributes
Whether to use logarithmic coordinates
An offset for coordinates
A scaling factor for coordinates:
Whether to use logarithmic coordinates
An offset for coordinates
A scaling factor for coordinates:
Public Class Methods
Creates a CoordinateTransformations object.
# File lib/ctioga2/graphics/coordinates.rb, line 60 def initialize end
Public Instance Methods
Apply a transformation to a Data::Dataset
holding 2D signals. Modifies the dataset in place.
# File lib/ctioga2/graphics/coordinates.rb, line 65 def transform_2d!(dataset) for w in [:x , :y] if v = self.send("#{w}_scale") dataset.send(w).apply do |x| x.mul!(v) end end if v = self.send("#{w}_offset") dataset.send(w).apply do |x| x.add!(v) end end if v = self.send("#{w}_log") dataset.send(w).apply do |x| x.safe_log10! end end end end