int main() { Point p1, p2, p3; int i, j, ntrees; while(scanf("%lf%lf%lf%lf%lf%lf", &p1.x, &p1.y, &p2.x, &p2.y, &p3.x, &p3.y)) { if(p1.x == 0 && p1.y == 0 && p2.x == 0 && p2.y == 0 && p3.x == 0 && p3.y == 0) break; ntrees = 0; reorder_vertices(p1, p2, p3); int left = left_border(p1, p2, p3); if(left < 1) left = 1; int right = right_border(p1, p2, p3); if(right > 99) right = 99; int bottom = bottom_border(p1, p2, p3); if(bottom < 1) bottom = 1; int top = top_border(p1, p2, p3); if(top > 99) top = 99; for(i = left; i <= right; i++) { for(j = bottom; j <= top; j++) { Point tree = { (double)i, (double)j }; if(on_edge(p1, p2, tree) || on_edge(p2, p3, tree) || on_edge(p3, p1, tree) || ccw(p1, p2, tree) && ccw(p2, p3, tree) && ccw(p3, p1, tree)) { ntrees++; } } } printf("%4d\n", ntrees); } return 0; }
double MassTrace::estimateFWHM(bool use_smoothed_ints) { Size max_idx(this->findMaxByIntPeak(use_smoothed_ints)); std::vector<double> tmp_ints; if (use_smoothed_ints) { tmp_ints = smoothed_intensities_; } else { for (Size vec_idx = 0; vec_idx < trace_peaks_.size(); ++vec_idx) { tmp_ints.push_back(trace_peaks_[vec_idx].getIntensity()); } } double half_max_int(tmp_ints[max_idx] / 2.0); Size left_border(max_idx), right_border(max_idx); while (left_border > 0 && tmp_ints[left_border] >= half_max_int) { --left_border; } while (right_border + 1 < tmp_ints.size() && tmp_ints[right_border] >= half_max_int) { ++right_border; } fwhm_start_idx_ = left_border; fwhm_end_idx_ = right_border; fwhm_ = std::fabs(trace_peaks_[right_border].getRT() - trace_peaks_[left_border].getRT()); return fwhm_; }