Skip to content

Latest commit

 

History

History
35 lines (23 loc) · 1.18 KB

README.md

File metadata and controls

35 lines (23 loc) · 1.18 KB

Automatic Constraint Network · 自动约束网络

这个库能够处理一组相互关联的变量,并且在修改其中某个的值时同步更改其余的值以满足约束。

详细原理见我的博客

安装方式

$ npm i @nianyi-wang/automatic-constraint-cluster

使用例

下面的例子展示了一个简单的温标转换器。 调整一种温标的数值时,其他温标的数值会随着变化。

import { AutomaticConstraintCluster, RealVariable } from '@nianyi-wang/automatic-constraint-cluster';

const cluster = new AutomaticConstraintCluster();

const kelvin = cluster.AddVariable('kelvin', new RealVariable(0));
const fahrenheit = cluster.AddVariable('fahrenheit', new RealVariable(0));
const celsius = cluster.AddVariable('celsius', new RealVariable(0));

cluster.AddConstraint(fahrenheit, celsius, (f, c) => Math.abs(1.8 * c + 32 - f));
cluster.AddConstraint(kelvin, celsius, (k, c) => Math.abs(k - 273 - c));

if(!cluster.SetValue(fahrenheit, 32))
	console.error('Failed to set variable');
else
	console.log(`${kelvin.value}K = ${celsius.value}C = ${fahrenheit.value}F`);