_performStep(nodeId) {
    const node = this.body.nodes[nodeId];
    const force = this.physicsBody.forces[nodeId];

    if (this.options.wind) {
      force.x += this.options.wind.x;
      force.y += this.options.wind.y;
    }

    const velocity = this.physicsBody.velocities[nodeId];

    // store the state so we can revert
    this.previousStates[nodeId] = {
      x: node.x,
      y: node.y,
      vx: velocity.x,
      vy: velocity.y,
    };

    if (node.options.fixed.x === false) {
      velocity.x = this.calculateComponentVelocity(
        velocity.x,
        force.x,
        node.options.mass
      );
      node.x += velocity.x * this.timestep;
    } else {
      force.x = 0;
      velocity.x = 0;
    }

    if (node.options.fixed.y === false) {
      velocity.y = this.calculateComponentVelocity(
        velocity.y,
        force.y,
        node.options.mass
      );
      node.y += velocity.y * this.timestep;
    } else {
      force.y = 0;
      velocity.y = 0;
    }

    const totalVelocity = Math.sqrt(
      Math.pow(velocity.x, 2) + Math.pow(velocity.y, 2)
    );
    return totalVelocity;
  }
Perform the actual step
@param {Node.id} nodeId
@returns {number} the new velocity of given node
@private