Thanks for your answer! I actually have to convert the following f90 function in C++, what is the best way to do?
subroutine Display_3D(field,mesh1,mesh2,mesh3,dim1,dim2)
include "common_graphics.h"
include "xdisplay.h"
integer dim1,dim2,maxdim,istepi,istepj
real Points(3,dim1,dim2)
real ColorP(4,dim1,dim2)
real Normal(3,dim1,dim2)
real tmp_Points(3,dim1**2)
real tmp_ColorP(4,dim1**2)
real tmp_Normal(3,dim1**2)
integer eee(2,9)
real V1(3),V2(3),dst
real field(dim1,dim2)
real mesh1(dim1,dim2),mesh2(dim1,dim2),mesh3(dim1,dim2)
integer np,id1,id2,in1,in2,in3,in4
real maxf,minf,vc,dl
integer i,j,k,d,last1,last2,istep,jstep
real val,Ptmin1,Ptmax1,Ptmin2,Ptmax2,Ptmax3,Ptmin3
c write(*,*)'dim1,dim2',dim1,dim2
c initializations
Points=0.0
ColorP=0.0
Normal=0.0
tmp_Points=0.0
tmp_ColorP=0.0
tmp_Normal=0.0
eee=0.0
V1=0.0
V2=0.0
c sets the min and max of the field to display (between -1 and 1)
maxf = max(abs(mindisp),abs(maxdisp))
minf = -max(abs(mindisp),abs(maxdisp))
c sets the min and max of the mesh
Ptmax1=maxx
Ptmax2=maxy
Ptmax3=maxz
Ptmin1=minx
Ptmin2=miny
Ptmin3=minz
dl = max(Ptmax1-Ptmin1,Ptmax2-Ptmin2,Ptmax3-Ptmin3)
c normalize points and normals and initialize colors
do j=1,dim2
do i=1,dim1
c for a non uniform grid
Points(1,i,j) = ((mesh1(i,j)-Ptmin1)/dl)*2.0-1.0
Points(2,i,j) = ((mesh2(i,j)-Ptmin2)/dl)*2.0-1.0
Points(3,i,j) = ((mesh3(i,j)-Ptmin3)/dl)*2.0-1.0
Normal(1,i,j) = 0.0
Normal(2,i,j) = 0.0
Normal(3,i,j) = 1.0
ColorP(alpha,i,j) = 1.0
ColorP(red,i,j) = 0.0
ColorP(green,i,j) = 0.0
ColorP(blue,i,j) = 0.0
enddo
enddo
...