Пример #1
0
	Rec CombineRec(const Rec &rc1, const Rec &rc2)
	{
		if (!rc1.is_valid())
			return rc2;
		if (!rc2.is_valid())
			return rc1;
		Rec ret;
		for (int i = 0; i < DIMENSION; i++)
		{
			ret.bound[i] = std::min(rc1.bound[i], rc2.bound[i]);
		}
		for (int i = DIMENSION; i < 2 * DIMENSION; i++)
		{
			ret.bound[i] = std::max(rc1.bound[i], rc2.bound[i]);
		}
		return ret;
	}
Пример #2
0
	double RecArea(const Rec &mbr)
	{
		if (!mbr.is_valid())
			return 0;
		static const double xpi = vratio(DIMENSION);
		double ret = 0;
		double sumr = 0;
		for (int i = 0; i < DIMENSION; i++)
		{
			double len = (mbr.bound[i + DIMENSION] - mbr.bound[i]) / 2;
			sumr += len * len;
		}
		double radius = sqrt(sumr);
		ret = pow(radius, DIMENSION) * xpi;
		return ret;
	}