예제 #1
0
std::vector<FVector3> PointCloud::GetTransformedPositions(const Transformation& transformation) const
{
   std::vector<FVector3> transformedPositions;
      
   if (positions.size() > 0)
   {
      transformedPositions.reserve(positions.size());

      for (const FVector3& position : positions)
      {
         transformedPositions.push_back(transformation.MultVertex(position));
      }
   }

   return transformedPositions;
}
예제 #2
0
void PointCloud::UpdateMaxDistanceToCenter()
{
   maxDistanceToCenter = 0;

   Transformation modelTransformation = CurrentModelTransformation();

   for (const FVector3& vertexPosition : positions)
   {
      FVector3 worldVertex = modelTransformation.MultVertex(vertexPosition);
      float distance = Norm(worldVertex - centroid);

      if (FGreater<float>(distance, maxDistanceToCenter))
      {
         maxDistanceToCenter = distance;
      }
   }
}