chiark
/
gitweb
/
~ian
/
moebius2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
3d works
[moebius2.git]
/
mgraph.h
diff --git
a/mgraph.h
b/mgraph.h
index 9f02e88c418438c682321d6d30ea916c0ac0ca9e..a33014b3dfe345f27c91a76758ab1b708cfaa8ae 100644
(file)
--- a/
mgraph.h
+++ b/
mgraph.h
@@
-1,3
+1,6
@@
+/*
+ * Graph topology
+ */
/*
* Vertices in strip are numbered as follows:
*
/*
* Vertices in strip are numbered as follows:
*
@@
-49,6
+52,8
@@
#ifndef MGRAPH_H
#define MGRAPH_H
#ifndef MGRAPH_H
#define MGRAPH_H
+#include "common.h"
+
#define XBITS 4
#define X (1<<XBITS)
#define YBITS 4
#define XBITS 4
#define X (1<<XBITS)
#define YBITS 4
@@
-62,11
+67,11
@@
#define XMASK (X-1)
#define YSHIFT XBITS
#define Y1 (1 << YSHIFT)
#define XMASK (X-1)
#define YSHIFT XBITS
#define Y1 (1 << YSHIFT)
-#define YMASK (
Y-1
<< YSHIFT)
+#define YMASK (
(Y-1)
<< YSHIFT)
-#define
V6 6
+#define
DIM (N*D3)
-#define
D3 3
+#define
V6 6
#define FOR_VERTEX(v) \
for ((v)=0; (v)<N; (v)++)
#define FOR_VERTEX(v) \
for ((v)=0; (v)<N; (v)++)
@@
-80,21
+85,25
@@
extern int edge_end2(unsigned v1, int e);
#define EDGE_END2 edge_end2
extern int edge_end2(unsigned v1, int e);
#define EDGE_END2 edge_end2
-#define FOR_VEDGE(v1,e) \
- FOR_VPEDGE((v1),(e))
- if (((v2)= EDGE_END2((v1),(e))) < 0) ; else
+#define FOR_VEDGE_X(v1,e,v2,init,otherwise) \
+ FOR_VPEDGE((v1),(e)) \
+ if (((v2)= EDGE_END2((v1),(e)), \
+ (init), \
+ (v2)) < 0) { otherwise; } else
-#define FOR_EDGE(v1,e,v2) \
- FOR_VERTEX((v1)) \
- FOR_VEDGE((v1),(e),(v2))
+#define NOTHING ((void)0)
-#define FOR_COORD(k) \
- for ((k)=0; (k)<D3; (k)++)
+#define FOR_VEDGE(v1,e,v2) \
+ FOR_VEDGE_X(v1,e,v2,NOTHING,NOTHING)
+
+#define FOR_EDGE(v1,e,v2) \
+ FOR_VERTEX((v1)) \
+ FOR_VEDGE((v1),(e),(v2))
-#define K FOR_COORD(k)
+#define FOR_RIM_VERTEX(vy,vx,v) \
+ for ((vy)=0; (vy)<Y; (vy)+=Y-1) \
+ for ((vx)=0; (v)= (vy)<<YSHIFT | (vx), (vx)<X; (vx)++)
-typedef struct {
- double v[N][D3];
-} Layout;
+typedef double Vertices[N][D3];
#endif /*MGRAPH_H*/
#endif /*MGRAPH_H*/