Как я могу перемещаться по стеку изображений в файле DICOM, используя ami.js? - PullRequest
0 голосов
/ 10 мая 2019

Я пытаюсь создать визуализатор DICOM в React, используя ami.js, но я не могу перемещаться по стопке изображений.В идеале я бы перемещался по стеку с помощью колесика мыши, но сейчас я бы согласился с перемещением по нажатию кнопки и позже начал работать с колесом.

Я сделал функцию события, но для этого нужнополучить stackHelper для работы (в противном случае я получаю «stackHelper не определен»).

  changeIndex = stackHelper => {
    stackHelper.index = stackHelper.index + 1;
    console.log(stackHelper.index);
  };

Я также сделал простую кнопку при рендеринге: <button onClick={this.changeIndex}> Advance </button>

Но стек не будет двигаться,вероятно, потому что stackHelper исчезает после того, как загрузчик заканчивает свою работу.Вместо этого я получаю NaN в консоли.

Это мой загрузчик, размещенный внутри componentDidMount ()

var loader = new AMI.VolumeLoader();
    loader
      .load(archivodos)
      .then(() => {
        const series = loader.data[0].mergeSeries(loader.data);
        const stack = series[0].stack[0];
        loader.free();
        const stackHelper = new StackHelper(stack);
        stackHelper.index = 0;
        stackHelper.bbox.visible = false;
        stackHelper.border.color = 0x000000; 
        this.scene.add(stackHelper); // Adds DICOM to the scene.

        const centerLPS = stackHelper.stack.worldCenter(); // Gets the center of the bounding box

        /* Moves the camera so that the DICOM file is always looked at, and not too big or too small, taking into account the possibility that the image is very wide or very tall */
        var alto =
          centerLPS.y / Math.tan((45 * Math.PI) / 180) + centerLPS.z + 20;
        var ancho =
          centerLPS.x / Math.tan((45 * Math.PI) / 180) + centerLPS.z + 20;
        var posZ;
        if (alto > ancho) {
          posZ = alto;
        } else {
          posZ = ancho;
        }

        this.camera.position.x = centerLPS.x;
        this.camera.position.y = centerLPS.y;
        this.camera.position.z = posZ;

        this.camera.updateProjectionMatrix();
      })
      .catch(error => {
        window.console.log("oops... something went wrong...");
        window.console.log(error);
      });
...