linear-converter

WebJar for linear-converter

Лицензия

Лицензия

MIT
Группа

Группа

org.webjars.bower
Идентификатор

Идентификатор

linear-converter
Последняя версия

Последняя версия

1.1.3
Дата

Дата

Тип

Тип

jar
Описание

Описание

linear-converter
WebJar for linear-converter
Ссылка на сайт

Ссылка на сайт

http://webjars.org
Система контроля версий

Система контроля версий

https://github.com/javiercejudo/linear-converter

Скачать linear-converter

Как подключить последнюю версию

<!-- https://jarcasting.com/artifacts/org.webjars.bower/linear-converter/ -->
<dependency>
    <groupId>org.webjars.bower</groupId>
    <artifactId>linear-converter</artifactId>
    <version>1.1.3</version>
</dependency>
// https://jarcasting.com/artifacts/org.webjars.bower/linear-converter/
implementation 'org.webjars.bower:linear-converter:1.1.3'
// https://jarcasting.com/artifacts/org.webjars.bower/linear-converter/
implementation ("org.webjars.bower:linear-converter:1.1.3")
'org.webjars.bower:linear-converter:jar:1.1.3'
<dependency org="org.webjars.bower" name="linear-converter" rev="1.1.3">
  <artifact name="linear-converter" type="jar" />
</dependency>
@Grapes(
@Grab(group='org.webjars.bower', module='linear-converter', version='1.1.3')
)
libraryDependencies += "org.webjars.bower" % "linear-converter" % "1.1.3"
[org.webjars.bower/linear-converter "1.1.3"]

Зависимости

Библиотека не имеет зависимостей. Это самодостаточное приложение, которое не зависит ни от каких других библиотек.

Модули Проекта

Данный проект не имеет модулей.

linear-converter

Build Status Coverage Status Code Climate Inline docs

Sauce Test Status

Flexible linear converter

Table of contents

Installation

npm

npm i linear-converter

Bower

bower install linear-converter

To use it in the browser, include the following on your site:

<script src="bower_components/linear-converter/dist/linear-converter.min.js"></script>

Basic usage

linear-converter uses the arbitrary-precision package to support arbitrary precision. See all available adapters.

var Decimal = require('arbitrary-precision')(require('floating-adapter'));
var lc = require('linear-converter')(Decimal);

// 0°C and 100°C are 32°F and 212°F
var celsiusToFahrenheit = [[0, 100], [32, 212]];

lc.convert(celsiusToFahrenheit, 25); // => new Decimal('77')

// also accepts Decimals
lc.convert(celsiusToFahrenheit, new Decimal('25'));

Ready-to-use conversions can be found in the linear-presets package.

For a quick interactive intro, see CodePen example.

Variants:

Conversion inversion

var fahrenheitToCelsius = lc.invertConversion(celsiusToFahrenheit);

lc.convert(fahrenheitToCelsius, 77); // => 25 (as decimal)

Conversions composition

var kelvinToCelsius = [[273.15, 373.15], [0, 100]];
var kelvinToFahrenheit = lc.composeConversions(kelvinToCelsius, celsiusToFahrenheit);

lc.convert(kelvinToFahrenheit, 293.15); // => 68 (as decimal)

Custom conversions

Custom conversions are achieved by passing an array with 2 scales, each of those an array with 2 values. For example, [[0, 1], [0, 2]] means that 0 and 1 in the first scale map to 0 and 2 in the second scale respectively; in short, it multiplies by 2. Any linear conversion can be described that way:

// f(x) = ax + b
lc.convert([[0, 1], [b, a+b]], x); // => ax + b (as Decimal)
lc.convert([[1/a, -b/a], [b+1, 0]], x); // => ax + b (as Decimal)

For an arbitrary f(x) = ax + b, any [[x1, x2], [f(x1), f(x2)]] is a valid conversion.

More examples:

// degrees to radians
lc.convert([[0, 180], [0, Math.PI]], 240); // => 4 * Math.PI / 3 (as Decimal)

// f(x) = 3x
lc.convert([[0, 1/3], [0, 1]], 5); // => 15 (as Decimal)

// f(x) = -2x - 46
lc.convert([[0, 1], [-46, -48]], -23); // => 0 (as Decimal)

Coefficients

// f(x) = 2x + 1
lc.getCoefficientA([[0, 1], [1, 3]]); // => 2 (as Decimal)
lc.getCoefficientB([[0, 1], [1, 3]]); // => 1 (as Decimal)

// f(x) = ax + b
lc.getCoefficientA([[x1, x2], [f(x1), f(x2)]]); // => a (as Decimal)
lc.getCoefficientB([[x1, x2], [f(x1), f(x2)]]); // => b (as Decimal)

Conversion equivalence

// f(x) = -3x + 6
lc.equivalentConversions(
  [[1, 5], [3, -9]],
  [[-1, 100], [9, -294]]
); // => true

lc.equivalentConversions(
  [[0, 1], [0, 2]], // f(x) = 2x
  [[0, 1], [0, 3]]  // f(x) = 3x
); // => false

Arbitrary precision

Arbitrary precision support is provided via the arbitrary-precision package. See all available adapters.

// without arbitrary precision (very lightweight)
var Decimal = require('arbitrary-precision')(require('floating-adapter'));
var lc = require('linear-converter')(Decimal);

lc.getCoefficientA([[0, 0.1], [0.1, 0.3]]); // => 1.9999999999999998 (as Decimal)

// with arbitrary precision
var Decimal = require('arbitrary-precision')(require('bigjs-adapter'));
var lc = require('linear-converter')(Decimal);

lc.getCoefficientA([[0, 0.1], [0.1, 0.3]]); // => 2 (as Decimal)

See CodePen example.

Currying

var convert = require('lodash.curry')(lc.convert);

convert(celsiusToFahrenheit, 25); // => 77 (as Decimal)

var cToF = convert(celsiusToFahrenheit);

cToF(25); // => 77 (as Decimal)

See CodePen example.

See more

Related projects

Версии библиотеки

Версия
1.1.3