Я пытаюсь написать трехмерное изображение на фортране 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, пожалуйста?
Например, следуя комментарию Владимира F, я скачал Paraview . Я нашел этот вопрос , который очень похож на то, где я стою сейчас.
Но я не понимаю, что именно мне нужно записать в файл, если я решу записать его в формате UCD. Я не нашел объяснений по inte rnet и ссылка, приведенная в вопросе там не работает.
Приложение 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