public PicturePanel() {
        this.setVisible(true);
        this.setSize(PANEL_SIZE, PANEL_SIZE);
        numberOfPoints = IntroFrame.POINTS_NUMBER;

        speedX = new JTextField("0", 3);
        speedY = new JTextField("0", 3);
        speedZ = new JTextField("0", 3);

        speedX.getDocument().addDocumentListener(new DocumentListener() {
            @Override
            public void insertUpdate(DocumentEvent e) {
                check();
            }

            @Override
            public void removeUpdate(DocumentEvent e) {
                check();
            }

            @Override
            public void changedUpdate(DocumentEvent e) {
                check();
            }

            public void check() {
                String text = speedX.getText();

                if (text == null || text.isEmpty()) {
                    rotationSpeedX = 0;
                } else {
                    rotationSpeedX = getNumber(text, "X");
                }
            }
        });

        speedY.getDocument().addDocumentListener(new DocumentListener() {
            @Override
            public void insertUpdate(DocumentEvent e) {
                check();
            }

            @Override
            public void removeUpdate(DocumentEvent e) {
                check();
            }

            @Override
            public void changedUpdate(DocumentEvent e) {
                check();
            }

            public void check() {
                String text = speedY.getText();

                if (text == null || text.isEmpty()) {
                    rotationSpeedY = 0;
                } else {
                    rotationSpeedY = getNumber(text, "Y");
                }
            }
        });

        speedZ.getDocument().addDocumentListener(new DocumentListener() {
            @Override
            public void insertUpdate(DocumentEvent e) {
                check();
            }

            @Override
            public void removeUpdate(DocumentEvent e) {
                check();
            }

            @Override
            public void changedUpdate(DocumentEvent e) {
                check();
            }

            public void check() {
                String text = speedZ.getText();

                if (text == null || text.isEmpty()) {
                    rotationSpeedZ = 0;
                } else {
                    rotationSpeedZ = getNumber(text, "Z");
                }
            }
        });


        speedX.setVisible(true);
        speedY.setVisible(true);
        speedZ.setVisible(true);

        arrayOfPoints = GeneratePoints.generateList(numberOfPoints);

        arrayOfTriangles = new CopyOnWriteArrayList<Triangle>(); // TODO: find the max number of triangles

        this.add(speedX);
        this.add(speedY);
        this.add(speedZ);
    }