diff options
| author | Simon Robertshaw <simon@hardwired.org.uk> | 2011-06-27 17:16:25 (GMT) |
|---|---|---|
| committer | Simon Robertshaw <simon@hardwired.org.uk> | 2011-06-27 17:16:25 (GMT) |
| commit | 3fe82bf525584bfe333013da218b530fd2f277f2 (patch) | |
| tree | a6959acf85a73214a5fa70ff5fae0462e15dc5b2 /src | |
| parent | 36ee81fc6b472ef956ad742ea3e626417c5317fe (diff) | |
| download | powder-3fe82bf525584bfe333013da218b530fd2f277f2.zip powder-3fe82bf525584bfe333013da218b530fd2f277f2.tar.gz | |
Jagged arcs
Diffstat (limited to 'src')
| -rw-r--r-- | src/powder.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/powder.c b/src/powder.c index 016b54b..c048e97 100644 --- a/src/powder.c +++ b/src/powder.c @@ -1244,6 +1244,40 @@ int nearest_part(int ci, int t) return id; } +void create_arc(int sx, int sy, int dx, int dy, int midpoints, int variance, int type) +{ + int i; + float xint, yint; + int *xmid, *ymid; + int voffset = variance/2; + xmid = calloc(midpoints + 2, sizeof(int)); + ymid = calloc(midpoints + 2, sizeof(int)); + xint = (float)(dx-sx)/(float)(midpoints+1.0f); + yint = (float)(dy-sy)/(float)(midpoints+1.0f); + xmid[0] = sx; + xmid[midpoints+1] = dx; + ymid[0] = sy; + ymid[midpoints+1] = dy; + + for(i = 1; i <= midpoints; i++) + { + ymid[i] = ymid[i-1]+yint; + xmid[i] = xmid[i-1]+xint; + } + + for(i = 0; i <= midpoints; i++) + { + if(i!=midpoints) + { + xmid[i+1] += (rand()%variance)-voffset; + ymid[i+1] += (rand()%variance)-voffset; + } + create_line(xmid[i], ymid[i], xmid[i+1], ymid[i+1], 0, 0, type); + } + free(xmid); + free(ymid); +} + //the main function for updating particles void update_particles_i(pixel *vid, int start, int inc) { |
