Как написать 3D изображение из матрицы 3х3, написанной на фортране 90?

Я пытаюсь написать 3D-изображение в фортране 90.

Код объекта, который я хочу видеть на изображении:

Вот код куба на фортране:

       PROGRAM myimage
       integer xmax,ymax,zmax
       parameter (xmax=10,ymax=10,zmax=10)
       INTEGER mytable(1:xmax,1:ymax,1:zmax)

       do 1 i1=1,xmax
       do 2 i2=1,ymax
       do 3 i3=1,zmax
           mytable(i1,i2,i3)=0
           if ((i1.ge.3).and.(i1.le.6).and.(i2.ge.3).and.(i2.le.6).and.(i3.ge.3).and.(i3.le.6)) then 
           mytable(i1,i2,i3)=1
           endif
    3  continue
    2  continue
    1  continue

       end

Тип изображения, которое я хотел бы получить:

Тип изображения, который я хочу, выглядит следующим образом:

введите здесь описание изображения

Куб будет моими пикселями mytable=1, а вокруг него будут пиксели: mytable=0

Что я пробовал:

Сначала я попытался написать код для создания изображения прямо на фортране, но оказалось, что выдаваемое изображение не является 3D-изображением, как я хотел (см. Приложение 1).

Вопрос:

Не могли бы вы объяснить мне, как просмотреть этот тип объекта в 3D, пожалуйста?

Например, следуя комментарию Владимира Ф., я скачал Paraview. Я нашел этот вопрос это очень похоже на то, где я стою сейчас.

Но я не понимаю, что именно я должен написать в файле, если я выберу запись в формате UCD. Я не нашел объяснений в Интернете и ссылку, приведенную в вопросе здесь не работает.

Приложение 1:

Вот код для 2D-изображения и для 3D-изображения, которое я пытался закодировать.

Сначала я написал 2D-изображение, которое работает. Я попытался обобщить это на 3D. Я хотел бы просмотреть объект, где mytable=1 в 3D.

       subroutine image2d(mytable,xmax,ymax,zmax)
       integer xmax,ymax,zmax,mytable(1:xmax,1:ymax,1:zmax)
       character*15 fname

       WRITE(fname,'(a)')'myimage2d.ppm' 
           open (100,file=fname,form='formatted')
           write(100,'(a)') 'P3'
           write(100,*) '#'
           write(100,*) xmax,ymax
           write(100,*) 2

       do 10 i10=1,xmax
       do 20 i20=1,ymax

                if (mytable(i10,i20,5).eq.0) then
                write(100,*) '2 2 2'
                else if (mytable(i10,i20,5).eq.1) then
                write(100,*) '0 0 0'
                end if
20   continue
10   continue

       end

       !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

       subroutine image3d(mytable,xmax,ymax,zmax)
       integer xmax,ymax,zmax,mytable(1:xmax,1:ymax,1:zmax)
       character*15 fname

       WRITE(fname,'(a)')'myimage3d.ppm' 
           open (200,file=fname,form='formatted')
           write(200,'(a)') 'P3'
           write(200,*) '#'
           write(200,*) xmax,ymax,zmax
           write(200,*) 3

       do 11 i10=1,xmax
       do 21 i20=1,ymax
       do 31 i30=1,ymax
                if (mytable(i10,i20,i30).eq.0) then
                write(200,*) '2 2 2'
                else if (mytable(i10,i20,i30).eq.1) then
                write(200,*) '0 1 2'
                end if
31   continue
21   continue
11   continue          

           end

person JoA    schedule 13.02.2020    source источник
comment
Что значит 3D изображение? Я просто не понимаю этого. Где документация для такого формата файла в 3D? Где кто-то говорит, что GIMP должен открывать такой 3D-файл?   -  person Vladimir F    schedule 13.02.2020
comment
Я пытаюсь сделать изображение объекта в 3D. Но я должен сказать, что не нашел никакой документации о том, как это сделать. Я просто видел, что в некоторых статьях люди делали это с помощью фортрана.   -  person JoA    schedule 13.02.2020
comment
Не подскажете, где посмотреть, как сделать изображение матрицы, где 0 пикселей прозрачные, а 1 черные?   -  person JoA    schedule 13.02.2020
comment
Это безнадежное усилие. Сначала вам нужно определиться с форматом файла. Вам нужно знать о каком-то инструменте, который может визуализировать ваши данные. Увы, в Paraview можно открыть даже текстовый файл с данными x y z и другими значениями. Вы можете создавать данные в Excel, на Фортране, где угодно, но сначала вы должны узнать что-то о данных, ТОЛЬКО ПОСЛЕ ТОГО, что пытаетесь что-то запрограммировать. Попробуйте несколько примеров, которые есть в Интернете. ИЛИ, если вам нужна 2D-поверхность, прочитайте о форматах файлов сетки. Например, STL, OFF, OBJ и многие другие форматы, используемые для 3D-печати.   -  person Vladimir F    schedule 13.02.2020
comment
Вы можете попробовать использовать python, если вы его знаете. Вы можете использовать VPython для трехмерной графики.   -  person Natsfan    schedule 14.02.2020