Пример #1
0
Matrix Matrix::orthMatInv() const {
  Matrix mT = this->transpose();
  Matrix temp = mT * (*this);
  Matrix scalars(temp.rows(), temp.cols());
  for (size_t i = 0; i < temp.rows(); ++i)
    scalars(i,i) = 1.0/temp(i,i);
  return scalars * mT;
}
int main() {
  int sa[2] = {9, 7};
  std::vector<int> scalars(sa, sa + sizeof(sa)/sizeof(sa[0]));

  numstring in[2] = {
    "75415123591065981965009485944457939790477550112631613307953910218357656560185790391063809273661832958588846804708867683435301180538880000000000000000000000",  // NOLINT
    "848420140399492297106356716875151822642872438767105649714481489956523636302090141899467854328695620784124526552974761438647138281062400000000000000000000000"  // NOLINT
  };
  std::vector< numstring > numeric_input(in, in + sizeof(in)/sizeof(in[0]));

  numstring out[2] = {
    "678736112319593837685085373500121458114297951013684519771585191965218909041672113519574283462956496627299621242379809150917710624849920000000000000000000000",  // NOLINT
    "5938940982796446079744497018126062758500107071369739548001370429695665454114630993296274980300869345488871685870823330070529967967436800000000000000000000000"  // NOLINT
  };
  const std::vector< numstring > numeric_output(out,
                     out + sizeof(out)/sizeof(out[0]));

  call_mul_digit_string(0, scalars, numeric_input, numeric_output);
  call_mul_digit_string(1, scalars, numeric_input, numeric_output);

  return(0);
}
Пример #3
0
sge::projectile::shape::detail::scalar_container
sge::projectile::impl::shape::triangle_scalars(
	fcppt::log::object &_log,
	sge::projectile::shape::triangle_sequence const &_triangles
)
{
	sge::projectile::shape::detail::scalar_container scalars(
		_triangles.size() * 8u * 3u * 3u
	);

	FCPPT_LOG_DEBUG(
		_log,
		fcppt::log::_
			<< FCPPT_TEXT("constructing triangle mesh with ")
			<< _triangles.size()
			<< FCPPT_TEXT(" triangles"));

	sge::projectile::shape::detail::scalar_container::iterator current_scalar =
		scalars.begin();

	// TODO: Find a better way to express this
	for(
		sge::projectile::triangle const &triangle
		:
		_triangles
	)
	{
		typedef std::array<
			btScalar,
			2
		> extrusion_array;

		extrusion_array const extrusion_depth{{
			static_cast<btScalar>(-sge::projectile::impl::object_extrusion_depth()/2),
			static_cast<btScalar>(sge::projectile::impl::object_extrusion_depth()/2)
		}};

		for(
			btScalar const current_z
			:
			extrusion_depth
		)
		{
			FCPPT_LOG_VERBOSE(
				_log,
				fcppt::log::_
					<< FCPPT_TEXT("triangle begin"));

			for(
				auto const &current_triangle_point
				:
				triangle
			)
			{
				FCPPT_LOG_VERBOSE(
					_log,
					fcppt::log::_
						<< FCPPT_TEXT("adding point ")
						<< current_triangle_point[0]
						<< FCPPT_TEXT(',')
						<< current_triangle_point[1]
						<< FCPPT_TEXT(',')
						<< current_z);

				*current_scalar++ = current_triangle_point[0];
				*current_scalar++ = current_triangle_point[1];
				*current_scalar++ = current_z;
			}

			FCPPT_LOG_VERBOSE(
				_log,
				fcppt::log::_
					<< FCPPT_TEXT("triangle end"));
		}
	}

	return
		scalars;
}