graphics/field.cpp
/*******************************************************
* Copyright (c) 2014, ArrayFire
* All rights reserved.
*
* This file is distributed under 3-clause BSD license.
* The complete license agreement can be obtained at:
* http://arrayfire.com/licenses/BSD-3-Clause
********************************************************/
#include <arrayfire.h>
#include <math.h>
#include <cstdio>
using namespace af;
const static float MINIMUM = -3.0f;
const static float MAXIMUM = 3.0f;
const static float STEP = 0.18f;
int main(int, char**) {
try {
af::Window myWindow(1024, 1024, "2D Vector Field example: ArrayFire");
myWindow.grid(1, 2);
array dataRange = seq(MINIMUM, MAXIMUM, STEP);
array x = tile(dataRange, 1, dataRange.dims(0));
array y = tile(dataRange.T(), dataRange.dims(0), 1);
x.eval();
y.eval();
float scale = 2.0f;
do {
array points = join(1, flat(x), flat(y));
array saddle = join(1, flat(x), -1.0f * flat(y));
array bvals = sin(scale * (x * x + y * y));
array hbowl = join(1, constant(1, x.elements()), flat(bvals));
hbowl.eval();
myWindow(0, 0).vectorField(points, saddle, "Saddle point");
myWindow(0, 1).vectorField(
points, hbowl, "hilly bowl (in a loop with varying amplitude)");
myWindow.show();
scale -= 0.0010f;
if (scale < -0.01f) { scale = 2.0f; }
} while (!myWindow.close());
} catch (af::exception& e) {
fprintf(stderr, "%s\n", e.what());
throw;
}
return 0;
}
Window object to render af::arrays.
Definition: graphics.h:37
An ArrayFire exception class.
Definition: exception.h:22
virtual const char * what() const
Returns an error message for the exception in a string format.
Definition: exception.h:46
AFAPI array sin(const array &in)
C++ Interface for sin.
array constant(T val, const dim4 &dims, const dtype ty=(af_dtype) dtype_traits< T >::ctype)
AFAPI void info()
void vectorField(const array &points, const array &directions, const char *const title=NULL)
Renders the input arrays as a 2D or 3D vector field plot to the window.
bool close()
Check if window is marked for close.
void show()
This function swaps the background buffer to current view and polls for any key strokes while the win...
void grid(const int rows, const int cols)
Setup grid layout for multiview mode in a window.
AFAPI array flat(const array &in)
AFAPI array join(const int dim, const array &first, const array &second)
Join 2 arrays along dim.
AFAPI array tile(const array &in, const unsigned x, const unsigned y=1, const unsigned z=1, const unsigned w=1)
static af::array array(af::dim4 idims, cl_mem buf, af::dtype type, bool retain=false)
Create an af::array object from an OpenCL cl_mem buffer.
Definition: opencl.h:327
AFAPI array scale(const array &in, const float scale0, const float scale1, const dim_t odim0=0, const dim_t odim1=0, const interpType method=AF_INTERP_NEAREST)
C++ Interface for scaling an image.
Definition: algorithm.h:15