37 std::vector<double> x(Nx);
38 std::vector<double> y(Ny);
39 std::vector<double> z(Nx*Ny);
40 std::vector<double> u(Nx*Ny);
41 std::vector<double> v(Nx*Ny);
44 const double x_low = -2.5;
45 const double x_upp = 1.5;
46 const double y_low = -2.5;
47 const double y_upp = 4;
48 const double dx = (x_upp-x_low)/(Nx-1);
49 const double dy = (y_upp-y_low)/(Ny-1);
65 for (
int i=0; i<Nx; i++)
68 for (
int i=0; i<Ny; i++)
75 double t0=(double)clock()/(double)CLOCKS_PER_SEC;
79 griddata->SetRectilinearGrid(x,y);
80 griddata->SetPointScalar(z ,
"v");
81 griddata->SetPointVector(u,v ,
"grad");
84 contour->SetData(griddata,
"v");
85 contour->SetSurfaceRGBTable(colors,255);
86 contour->ShowIsolines(
false);
89 quiver->SetData(griddata,
"grad");
90 quiver->SetQuiverGrid(10,10);
95 frame->AddFigure(contour);
96 frame->AddFigure(quiver);
102 for (
int i=0; i<Nx; i++)
103 for (
int j=0; j<Ny; j++)
105 z[j*Nx+i] =
G(x[i],y[j],t);
106 u[j*Nx+i] =
dGdx(x[i],y[j],t);
107 v[j*Nx+i] =
dGdy(x[i],y[j],t);
110 griddata->SetPointScalar(z ,
"v");
111 griddata->SetPointVector(u,v ,
"grad");
116 frame->WritePNG(
"example-quiver2d.png");
119 double t1=(double)clock()/(double)CLOCKS_PER_SEC;
123 printf(
"Frame rate: %.2f fps\n",(
double)(i1-i0)/4.0);
124 t0=(double)clock()/(double)CLOCKS_PER_SEC;
double dGdy(double x, double y, double t)
static std::shared_ptr< Frame > New()
Create frame with multiple subframes.
static std::shared_ptr< ScalarView > New()
static std::shared_ptr< DataSet > New()
Static constructor of an empty instance.
double dGdx(double x, double y, double t)
std::vector< RGBPoint > RGBTable
static std::shared_ptr< VectorView > New()
double G(double x, double y, double t)