~ubuntu-branches/ubuntu/saucy/sgt-puzzles/saucy

« back to all changes in this revision

Viewing changes to penrose.h

  • Committer: Bazaar Package Importer
  • Author(s): Ben Hutchings
  • Date: 2011-07-11 03:56:55 UTC
  • mfrom: (1.1.13 upstream) (3.1.14 sid)
  • Revision ID: james.westby@ubuntu.com-20110711035655-bfr08qpm3dm3unnq
Tags: 9179-1
* New upstream version:
  - Remove unused-but-set variables - closes: #625425
  - Avoid infinite loop in Loopy at Easy level
  - Add Penrose tilings to Loopy
* Update German translation, thanks to Helge Kreutzmann
* Do not compile with -Werror

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* penrose.h
 
2
 *
 
3
 * Penrose tiling functions.
 
4
 *
 
5
 * Provides an interface with which to generate Penrose tilings
 
6
 * by recursive subdivision of an initial tile of choice (one of the
 
7
 * four sets of two pairs kite/dart, or thin/thick rhombus).
 
8
 *
 
9
 * You supply a callback function and a context pointer, which is
 
10
 * called with each tile in turn: you choose how many times to recurse.
 
11
 */
 
12
 
 
13
#ifndef _PENROSE_H
 
14
#define _PENROSE_H
 
15
 
 
16
#ifndef PHI
 
17
#define PHI 1.6180339887
 
18
#endif
 
19
 
 
20
typedef struct vector vector;
 
21
 
 
22
double v_x(vector *vs, int i);
 
23
double v_y(vector *vs, int i);
 
24
 
 
25
typedef struct penrose_state penrose_state;
 
26
 
 
27
/* Return non-zero to clip the tree here (i.e. not recurse
 
28
 * below this tile).
 
29
 *
 
30
 * Parameters are state, vector array, npoints, depth.
 
31
 * ctx is inside state.
 
32
 */
 
33
typedef int (*tile_callback)(penrose_state *, vector *, int, int);
 
34
 
 
35
struct penrose_state {
 
36
    int start_size;  /* initial side length */
 
37
    int max_depth;      /* Recursion depth */
 
38
 
 
39
    tile_callback new_tile;
 
40
    void *ctx;          /* for callback */
 
41
};
 
42
 
 
43
enum { PENROSE_P2, PENROSE_P3 };
 
44
 
 
45
extern int penrose(penrose_state *state, int which, int angle);
 
46
 
 
47
/* Returns the side-length of a penrose tile at recursion level
 
48
 * gen, given a starting side length. */
 
49
extern double penrose_side_length(double start_size, int depth);
 
50
 
 
51
/* Returns the count of each type of tile at a given recursion depth. */
 
52
extern void penrose_count_tiles(int gen, int *nlarge, int *nsmall);
 
53
 
 
54
/* Calculate start size and recursion depth required to produce a
 
55
 * width-by-height sized patch of penrose tiles with the given tilesize */
 
56
extern void penrose_calculate_size(int which, int tilesize, int w, int h,
 
57
                                   double *required_radius, int *start_size, int *depth);
 
58
 
 
59
#endif