86 :
fake_count(0), xpos(
x), mean_sum(0.0), sq_sum(0.0) {
87 int16_t best_fake;
89 int32_t dist;
90 double sq_dist;
91 double mean;
92 double total;
93 double factor;
94 FPSEGPT_IT pred_it = prev_list;
95
96 cost = FLT_MAX;
97 pred = nullptr;
100 best_fake = INT16_MAX;
101 mid_cuts = 0;
102 for (pred_it.mark_cycle_pt(); !pred_it.cycled_list(); pred_it.forward()) {
103 segpt = pred_it.data();
104 if (segpt->fake_count < best_fake) {
105 best_fake = segpt->fake_count;
106 }
107 dist =
x - segpt->xpos;
108 if (dist >= pitch - pitch_error && dist <= pitch + pitch_error && !segpt->
terminal) {
109 total = segpt->mean_sum + dist;
110 sq_dist = dist * dist + segpt->sq_sum + offset * offset;
111
112 mean = total / region_index;
113 factor = mean - pitch;
114 factor *= factor;
115 factor += sq_dist / (region_index)-mean * mean;
116 if (factor < cost) {
117 cost = factor;
118 pred = segpt;
119 mean_sum = total;
120 sq_sum = sq_dist;
122 }
123 }
124 }
126 pred = nullptr;
127 }
128}