Exemple #1
0
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;
}
Exemple #2
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_;
  }