API Docs for: 0.7.1
Show:

GSSolver Class

Extends Solver

高斯-赛德尔迭代约束方程求解

构造器

GSSolver

(
  • [options]
)

参数:

  • [options] Object 可选
    • [iterations=10] Number 可选
    • [tolerance=0] Number 可选

Methods

addEquation

(
  • eq
)

添加一个用于求解的方程

参数:

addEquations

(
  • eqs
)

添加多个方程,作用同 .addEquation,但参数为包含多个方程的数组

参数:

  • eqs Array

emit

(
  • event
)
EventEmitter

触发一个事件

参数:

  • event Object
    • type String

Returns:

EventEmitter:

自身,用于链式调用

has

(
  • type
  • listener
)
Boolean

检查这一事件监听器是否添加

参数:

  • type String
  • listener Function

Returns:

Boolean:

off

(
  • type
  • listener
)
EventEmitter

移除这一事件监听器

参数:

  • type String
  • listener Function

Returns:

EventEmitter:

自身,用于链式调用

on

(
  • type
  • listener
)
EventEmitter

添加一个事件监听器

参数:

  • type String
  • listener Function

Returns:

EventEmitter:

自身,用于链式调用

removeAllEquations

()

移除当前所有的方程

removeEquation

(
  • eq
)

移除给定的方程

参数:

solve

(
  • h
  • world
)

Inherited from Solver but overwritten in src/solver/GSSolver.js:77

解方程组

参数:

  • h Number

    Time step

  • world World

    World to solve

solveIsland

(
  • dt
  • island
)

求解所有给定岛屿(参见island 类)上的约束

参数:

sortEquations

()

使用 .equationSortFunction将所有方程排序,应在求解前被子类调用

Properties

equations

Array

求解器中当前的所有方程

equationSortFunction

Function | Boolean

用于将所有方程在求解前进行排序的函数

frictionIterations

Number

用于估算摩擦(F_friction = mu * F_normal)使用的法向力的求解迭代次数, 这些摩擦力将抵消设置的其他摩擦力。如果你将frictionIterations 设置为0, 则这一功能将被禁用

仅在法向力估值(F_normal = mass * gravity)不够适合的情况下使用 frictionIterations > 0,例如在太空游戏中,重力为0,或在堆叠时,下部的法向力大而上部的法向力小;

Default: 0

iterations

Number

求解时的最大迭代次数,越大结果越好,但性能开销越大

tolerance

Number

每个约束的容差,如果总误差低于此值,求解器将停止迭代,设置为0能尽可能的得到更精确的结果,但大于0时计算速度会更快

Default: 1e-7

usedIterations

Number

最后一次求解过程中产生的迭代次数,如果.tolerance 为0,那么该值总是等于.iterations,但如果.tolerance 大于0时,求解器会更早退出,那么这个数字将介于1 - .iterarions 之间

useZeroRHS

Boolean

设置为true 会在求解时将所有右侧项设置为0, 对于小型应用来说很方便