smart_arrays_contour_finder 2.0.6

  • Readme
  • Changelog
  • Example
  • Installing
  • 65

Smart Arrays Contour Finder #

What the package can do for you #

The purpose of this package is to contour the three-dimensional surface represented by the values f(x,y) of a matrix with coordinate axes x and y. The detected contour lines are passed on to a user-provided renderer e.g. for graphical displaying the contours.

Example #

The major API functionalities #

  • Class ContourFinder with the method findContour to contour a matrix.

  • Abstract class ContourRenderer with the method drawContourLine to be provided by the user to render the found contours, e.g. on a graphics screen.

smart_arrays_base: Basic functions for 1D and 2D arrays

smart_arrays_numerics: Numerics with 1D and 2D arrays

smart_arrays_compress: Compress 1D and 2D arrays to a smaller size.

smart_arrays_sample_data: Computes 1D and 2D arrays containing sample data.

smart_arrays_dbstore: Store 1D and 2D arrays along with metadata on the local device.

smart_arrays_plot_polyline: Plot 1D arrays as polyline along with axes and more.

smart_arrays_peaks: Detect peaks in 1D and 2D arrays.

smart_arrays_lmfit: Fits (x, y) data given as arrays to a specified model function using the Levenberg-Marquardt algorithm.

smart_lorentz-gauss: Compute Lorentz-Gauss (pseudo-Voigt) line shapes.

smart_signal_processing: Fourier transform and more of arrays.

smart_dialogs: Easy-to-use dialogs in Web applications

Smart Dialogs for Web Apps #

Version history #

2.0.6 - 2019-10-01 Example now used the contour renderer of smart_arrays_plot_polyline

2.0.0 - 2019-08-24 First version available on pub.dev

2.0.1 - 2019-09-01 Documentation update

2.0.2 - 2019-09-14 Example now uses a function from package smart_arrays_sample_data.

2.0.3 - 2019-09-14 Account for changed "getters" in smart_arrays_sample_data

2.0.4 - 2019-09-15 Documentation update

2.0.5 - 2019-09-23 Breaking change: Changed signature of ContourRenderer.drawContourLine

example/example.dart

import 'dart:html';
import 'dart:typed_data';
import 'package:smart_arrays_contour_finder/smart_arrays_contour_finder.dart';
import 'package:smart_arrays_base/smart_arrays_base.dart';
import 'package:smart_lorentz_gauss/smart_lorentz_gauss.dart';
import 'package:smart_arrays_plot_polyline/smart_arrays_plot_polyline.dart';

/// Demonstrates searching for contours in a sample matrix consisting of
/// a sum of 2D Lorentz-Gauss functions with positive and negative amplitudes.
/// The result is displayed in the browser.
main() {
  // Create a sample 2D matrix to be contoured.
  LorentzGaussMatrix lg2D = LorentzGaussMatrix(
      rows_cols, amplitudes, centers, lineWidths, mixingFactors);

  // Compute equally spaced contour levels from the matrix's min/max values
  final int NLEVELS = 16;
  MinMax minmax = Array2D.getMinMax(lg2D.matrix);
  double levelDelta = (minmax.maxValue - minmax.minValue).abs() / (NLEVELS - 1);
  Float64List levels = Float64List(NLEVELS);
  for (int i = 0; i < NLEVELS; i++) {
    levels[i] = (minmax.minValue + i * levelDelta) * 0.98;
  }

  // construct a ContourFinder to find the contours and draw them using
  // the specified contour renderer
  ContourFinder contourFinder = ContourFinder(createSimpleContourRenderer());

  // Start contour search and rendering using [ContourRendererSample].
  contourFinder.findContour(
      lg2D.matrix, // search in this matrix
      0, // from this row
      lg2D.matrix.length - 1, // to this row
      0, // from this col
      lg2D.matrix[0].length - 1, // to this col
      lg2D.yRowCoordinates, // normalized row coordinates (0...1)
      lg2D.xColCoordinates, // normalized col coordinates (0...1)
      levels.length, // number of levels
      levels); // contour levels to draw
}

/// Data for the sample matrix
List<int> rows_cols = [200, 300];
List<double> amplitudes = [200.0, -160.0, 120, -150, 120, -130];
List<List<double>> centers = [
  [90, 50],
  [90, 50],
  [130, 150],
  [60, 130],
  [40, 180],
  [70, 250]
];
List<List<double>> lineWidths = [
  [15, 30],
  [40, 20],
  [50, 30],
  [15, 15],
  [30, 40],
  [40, 40]
];
List<List<double>> mixingFactors = [
  [0.0, 0.0],
  [0.0, 0.0],
  [1.0, 0.0],
  [0.0, 0.8],
  [1.0, 0.0],
  [0.5, 0.5]
];

/// A sample contour renderer drawing the contours into 2D html canvas element
/// defined in [example.html]. By default, negative contours are drawn in
/// magenta, positive ones in blue.
SimpleContourRenderer createSimpleContourRenderer() {
  /// Sets up the graphics 2D context to which drawing will be performed.
  Element ccel = document.getElementById("contour_canvas");
  CanvasElement contourCanvas = ccel; // cast
  contourCanvas.style
    ..position = "absolute"
    ..backgroundColor = "transparent";

  SimpleContourRenderer sctr = SimpleContourRenderer(
      contourCanvas, contourCanvas.width,  contourCanvas.height, 0, 0, null);
  return sctr;
}

Use this package as a library

1. Depend on it

Add this to your package's pubspec.yaml file:


dependencies:
  smart_arrays_contour_finder: ^2.0.6

2. Install it

You can install packages from the command line:

with pub:


$ pub get

with Flutter:


$ flutter pub get

Alternatively, your editor might support pub get or flutter pub get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:


import 'package:smart_arrays_contour_finder/smart_arrays_contour_finder.dart';
  
Popularity:
Describes how popular the package is relative to other packages. [more]
31
Health:
Code health derived from static analysis. [more]
100
Maintenance:
Reflects how tidy and up-to-date the package is. [more]
100
Overall:
Weighted score of the above. [more]
65
Learn more about scoring.

We analyzed this package on Nov 15, 2019, and provided a score, details, and suggestions below. Analysis was completed with status completed using:

  • Dart: 2.6.0
  • pana: 0.12.21

Platforms

Detected platforms: Flutter, web, other

No platform restriction found in primary library package:smart_arrays_contour_finder/smart_arrays_contour_finder.dart.

Dependencies

Package Constraint Resolved Available
Direct dependencies
Dart SDK >=2.5.0 <3.0.0
build_runner ^1.6.2 1.7.2
build_web_compilers ^2.1.4 2.7.1
pedantic ^1.7.0 1.8.0+1
smart_arrays_base ^2.0.9 2.1.0
smart_arrays_plot_polyline ^2.1.7 2.2.1
smart_lorentz_gauss ^2.1.2 2.1.2
Transitive dependencies
_fe_analyzer_shared 1.0.0
analyzer 0.39.1
archive 2.0.11
args 1.5.2
async 2.4.0
bazel_worker 0.1.23
build 1.2.2
build_config 0.4.1+1
build_daemon 2.1.2
build_modules 2.7.0
build_resolvers 1.3.0
build_runner_core 4.2.0
built_collection 4.3.0
built_value 7.0.0
charcode 1.1.2
checked_yaml 1.0.2
code_builder 3.2.1
collection 1.14.12
convert 2.1.1
crypto 2.1.3
csslib 0.16.1
dart_style 1.3.3
fixnum 0.10.11
front_end 0.1.29
glob 1.2.0
graphs 0.2.0
html 0.14.0+3
http 0.12.0+2
http_multi_server 2.1.0
http_parser 3.1.3
io 0.3.3
js 0.6.1+1
json_annotation 3.0.0
kernel 0.3.29
logging 0.11.3+2
matcher 0.12.6
meta 1.1.8
mime 0.9.6+3
node_interop 1.0.3
node_io 1.0.1+2
package_config 1.1.0
package_resolver 1.0.10
path 1.6.4
pool 1.4.0
protobuf 1.0.1
pub_semver 1.4.2
pubspec_parse 0.1.5
quiver 2.1.2+1
scratch_space 0.0.4+1
shelf 0.7.5
shelf_web_socket 0.2.3
smart_arrays_compress 2.1.0
smart_arrays_numerics 2.1.1
smart_arrays_sample_data 2.0.5
source_maps 0.10.8
source_span 1.5.5
stack_trace 1.9.3
stream_channel 2.0.0
stream_transform 0.0.20
string_scanner 1.0.5
term_glyph 1.1.0
timing 0.1.1+2
typed_data 1.1.6
watcher 0.9.7+12
web_socket_channel 1.1.0
yaml 2.2.0