|
|
@@ -75,15 +75,14 @@ void Polyhedron::Clip(const Plane& plane)
|
|
|
{
|
|
|
clippedVertices_.Clear();
|
|
|
|
|
|
- for (unsigned i = 0; i < faces_.Size(); ++i)
|
|
|
+ for (Vector<Vector3>& face : faces_)
|
|
|
{
|
|
|
- Vector<Vector3>& face = faces_[i];
|
|
|
Vector3 lastVertex;
|
|
|
float lastDistance = 0.0f;
|
|
|
|
|
|
outFace_.Clear();
|
|
|
|
|
|
- for (unsigned j = 0; j < face.Size(); ++j)
|
|
|
+ for (i32 j = 0; j < face.Size(); ++j)
|
|
|
{
|
|
|
float distance = plane.Distance(face[j]);
|
|
|
if (distance >= 0.0f)
|
|
|
@@ -162,7 +161,7 @@ void Polyhedron::Clip(const Plane& plane)
|
|
|
float bestDistance = M_INFINITY;
|
|
|
unsigned bestIndex = 0;
|
|
|
|
|
|
- for (unsigned i = 0; i < clippedVertices_.Size(); ++i)
|
|
|
+ for (i32 i = 0; i < clippedVertices_.Size(); ++i)
|
|
|
{
|
|
|
float distance = (clippedVertices_[i] - lastAdded).LengthSquared();
|
|
|
if (distance < bestDistance)
|
|
|
@@ -213,21 +212,19 @@ void Polyhedron::Clear()
|
|
|
|
|
|
void Polyhedron::Transform(const Matrix3& transform)
|
|
|
{
|
|
|
- for (unsigned i = 0; i < faces_.Size(); ++i)
|
|
|
+ for (Vector<Vector3>& face : faces_)
|
|
|
{
|
|
|
- Vector<Vector3>& face = faces_[i];
|
|
|
- for (unsigned j = 0; j < face.Size(); ++j)
|
|
|
- face[j] = transform * face[j];
|
|
|
+ for (Vector3& vertex : face)
|
|
|
+ vertex = transform * vertex;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
void Polyhedron::Transform(const Matrix3x4& transform)
|
|
|
{
|
|
|
- for (unsigned i = 0; i < faces_.Size(); ++i)
|
|
|
+ for (Vector<Vector3>& face : faces_)
|
|
|
{
|
|
|
- Vector<Vector3>& face = faces_[i];
|
|
|
- for (unsigned j = 0; j < face.Size(); ++j)
|
|
|
- face[j] = transform * face[j];
|
|
|
+ for (Vector3& vertex : face)
|
|
|
+ vertex = transform * vertex;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -236,13 +233,13 @@ Polyhedron Polyhedron::Transformed(const Matrix3& transform) const
|
|
|
Polyhedron ret;
|
|
|
ret.faces_.Resize(faces_.Size());
|
|
|
|
|
|
- for (unsigned i = 0; i < faces_.Size(); ++i)
|
|
|
+ for (i32 i = 0; i < faces_.Size(); ++i)
|
|
|
{
|
|
|
const Vector<Vector3>& face = faces_[i];
|
|
|
Vector<Vector3>& newFace = ret.faces_[i];
|
|
|
newFace.Resize(face.Size());
|
|
|
|
|
|
- for (unsigned j = 0; j < face.Size(); ++j)
|
|
|
+ for (i32 j = 0; j < face.Size(); ++j)
|
|
|
newFace[j] = transform * face[j];
|
|
|
}
|
|
|
|
|
|
@@ -254,21 +251,22 @@ Polyhedron Polyhedron::Transformed(const Matrix3x4& transform) const
|
|
|
Polyhedron ret;
|
|
|
ret.faces_.Resize(faces_.Size());
|
|
|
|
|
|
- for (unsigned i = 0; i < faces_.Size(); ++i)
|
|
|
+ for (i32 i = 0; i < faces_.Size(); ++i)
|
|
|
{
|
|
|
const Vector<Vector3>& face = faces_[i];
|
|
|
Vector<Vector3>& newFace = ret.faces_[i];
|
|
|
newFace.Resize(face.Size());
|
|
|
|
|
|
- for (unsigned j = 0; j < face.Size(); ++j)
|
|
|
+ for (i32 j = 0; j < face.Size(); ++j)
|
|
|
newFace[j] = transform * face[j];
|
|
|
}
|
|
|
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
-void Polyhedron::SetFace(unsigned index, const Vector3& v0, const Vector3& v1, const Vector3& v2)
|
|
|
+void Polyhedron::SetFace(i32 index, const Vector3& v0, const Vector3& v1, const Vector3& v2)
|
|
|
{
|
|
|
+ assert(index >= 0);
|
|
|
Vector<Vector3>& face = faces_[index];
|
|
|
face.Resize(3);
|
|
|
face[0] = v0;
|
|
|
@@ -276,8 +274,9 @@ void Polyhedron::SetFace(unsigned index, const Vector3& v0, const Vector3& v1, c
|
|
|
face[2] = v2;
|
|
|
}
|
|
|
|
|
|
-void Polyhedron::SetFace(unsigned index, const Vector3& v0, const Vector3& v1, const Vector3& v2, const Vector3& v3)
|
|
|
+void Polyhedron::SetFace(i32 index, const Vector3& v0, const Vector3& v1, const Vector3& v2, const Vector3& v3)
|
|
|
{
|
|
|
+ assert(index >= 0);
|
|
|
Vector<Vector3>& face = faces_[index];
|
|
|
face.Resize(4);
|
|
|
face[0] = v0;
|