diff options
author | Anthony LaTorre <tlatorre9@gmail.com> | 2011-09-02 12:12:38 -0400 |
---|---|---|
committer | Anthony LaTorre <tlatorre9@gmail.com> | 2011-09-02 12:12:38 -0400 |
commit | 707ca1b366f11032682cc864ca2848905e6b485c (patch) | |
tree | e0e66c498cb29168acb0f8fab8479b12489b2f30 /src/transform.cu | |
parent | 7e2a7e988031c22898249f3801aa0d3c690bb729 (diff) | |
download | chroma-707ca1b366f11032682cc864ca2848905e6b485c.tar.gz chroma-707ca1b366f11032682cc864ca2848905e6b485c.tar.bz2 chroma-707ca1b366f11032682cc864ca2848905e6b485c.zip |
update event structure. break gpu.GPU class into separate smaller independent classes.
Diffstat (limited to 'src/transform.cu')
-rw-r--r-- | src/transform.cu | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/transform.cu b/src/transform.cu new file mode 100644 index 0000000..57bd509 --- /dev/null +++ b/src/transform.cu @@ -0,0 +1,47 @@ +//-*-c-*- + +#include "linalg.h" +#include "rotate.h" + +extern "C" +{ + +/* Translate the points `a` by the vector `v` */ +__global__ void translate(int nthreads, float3 *a, float3 v) +{ + int id = blockIdx.x*blockDim.x + threadIdx.x; + + if (id >= nthreads) + return; + + a[id] += v; +} + +/* Rotate the points `a` through an angle `phi` counter-clockwise about the + axis `axis` (when looking towards +infinity). */ +__global__ void rotate(int nthreads, float3 *a, float phi, float3 axis) +{ + int id = blockIdx.x*blockDim.x + threadIdx.x; + + if (id >= nthreads) + return; + + a[id] = rotate(a[id], phi, axis); +} + +/* Rotate the points `a` through an angle `phi` counter-clockwise + (when looking towards +infinity along `axis`) about the axis defined + by the point `point` and the vector `axis` . */ +__global__ void rotate_around_point(int nthreads, float3 *a, float phi, float3 axis, float3 point) +{ + int id = blockIdx.x*blockDim.x + threadIdx.x; + + if (id >= nthreads) + return; + + a[id] -= point; + a[id] = rotate(a[id], phi, axis); + a[id] += point; +} + +} // extern "c" |