netzel commited on 2024-02-29 12:15:58
Showing 3 changed files, with 23 additions and 7 deletions.
... | ... |
@@ -64,10 +64,10 @@ void grow_adaptel(int i, LABELS* labels, MINLIST* minlist, SEEDS* seeds, |
64 | 64 |
CELL cell; |
65 | 65 |
|
66 | 66 |
// get seed |
67 |
- index = seeds->seeds[i].index; |
|
67 |
+ index = get_seed_index(seeds, i); |
|
68 | 68 |
|
69 | 69 |
if(labels->labels[index] < 0) { |
70 |
- insert_minlist(minlist, seeds->seeds[i].x, seeds->seeds[i].y, index, 0); |
|
70 |
+ insert_minlist(minlist, get_seed_x(seeds, i), get_seed_y(seeds, i), index, 0); |
|
71 | 71 |
distances[index] = 0.0; |
72 | 72 |
init_label(labels, index); |
73 | 73 |
nodata = (mask[index]==1); |
... | ... |
@@ -7,7 +7,7 @@ |
7 | 7 |
#define SEEDSINCREMENT 10000000 |
8 | 8 |
|
9 | 9 |
SEEDS* create_seeds(long MAX_SIZE) { |
10 |
- long init_size = MAX_SIZE; //SEEDSINCREMENT; |
|
10 |
+ long init_size = SEEDSINCREMENT; |
|
11 | 11 |
SEEDS* seeds = (SEEDS *)malloc(sizeof(SEEDS)); |
12 | 12 |
seeds->seeds = (SEED *)malloc(init_size*sizeof(SEED)); |
13 | 13 |
seeds->N = 0; |
... | ... |
@@ -23,14 +23,14 @@ void free_seeds(SEEDS *seeds) { |
23 | 23 |
} |
24 | 24 |
|
25 | 25 |
void insert_seed(SEEDS *seeds, long p, int x, int y, long index) { |
26 |
- int i = seeds->N; |
|
26 |
+ int i = seeds->N - seeds->base; |
|
27 | 27 |
seeds->seeds[i].x = x; |
28 | 28 |
seeds->seeds[i].y = y; |
29 | 29 |
seeds->seeds[i].index = index; |
30 | 30 |
seeds->N++; |
31 |
- if (seeds->N - seeds->base == seeds->max_size) { // to do!!!!! |
|
32 |
- if(p > SEEDSINCREMENT - seeds->base) { |
|
33 |
- memmove(&(seeds->seeds[0]),&(seeds->seeds[p - seeds->base]),(i-p)*sizeof(SEED)); |
|
31 |
+ if (seeds->N - seeds->base >= seeds->max_size) { // to do!!!!! |
|
32 |
+ if(p - seeds->base > SEEDSINCREMENT) { |
|
33 |
+ memmove(&(seeds->seeds[0]),&(seeds->seeds[p - seeds->base]),(seeds->N - p)*sizeof(SEED)); |
|
34 | 34 |
seeds->base = p; |
35 | 35 |
} else { |
36 | 36 |
seeds->max_size += SEEDSINCREMENT; |
... | ... |
@@ -41,6 +41,18 @@ void insert_seed(SEEDS *seeds, long p, int x, int y, long index) { |
41 | 41 |
} |
42 | 42 |
} |
43 | 43 |
|
44 |
+long get_seed_index(SEEDS* seeds, long i) { |
|
45 |
+ return seeds->seeds[i - seeds->base].index; |
|
46 |
+} |
|
47 |
+ |
|
48 |
+int get_seed_x(SEEDS* seeds, long i) { |
|
49 |
+ return seeds->seeds[i - seeds->base].x; |
|
50 |
+} |
|
51 |
+ |
|
52 |
+int get_seed_y(SEEDS* seeds, long i) { |
|
53 |
+ return seeds->seeds[i - seeds->base].y; |
|
54 |
+} |
|
55 |
+ |
|
44 | 56 |
SEED* get_seed(SEEDS* seeds, long i) { |
45 | 57 |
return &(seeds->seeds[i - seeds->base]); |
46 | 58 |
} |
... | ... |
@@ -19,5 +19,9 @@ void free_seeds(SEEDS *seeds); |
19 | 19 |
void insert_seed(SEEDS *seeds, long p, |
20 | 20 |
int x, int y, long index); |
21 | 21 |
SEED* get_seed(SEEDS* seeds, long i); |
22 |
+long get_seed_index(SEEDS* seeds, long i); |
|
23 |
+int get_seed_x(SEEDS* seeds, long i); |
|
24 |
+int get_seed_y(SEEDS* seeds, long i); |
|
25 |
+ |
|
22 | 26 |
|
23 | 27 |
#endif |
24 | 28 |