Merge pull request #102 from devZoGok/imp-101-subquads

imp-101-subquads
This commit is contained in:
devZoGok
2025-11-14 14:30:21 +00:00
committed by GitHub
2 changed files with 23 additions and 0 deletions
+18
View File
@@ -85,4 +85,22 @@ namespace vb01{
meshBase = MeshData(faceVertPos, nullptr, nullptr, nullptr, 6, norm, vertices, indices, numTris);
}
//TODO improve functionality for GUI quads
Vector2 Quad::getSubquadIds(int numVertDiv, int numHorDiv, Vector3 pos, Vector3 size){
const int numHorQuads = numVertDiv + 1, numVertQuads = numHorDiv + 1;
Vector2 subQuadSize = Vector2(size.x / numHorQuads, size.z / numVertQuads);
return Vector2(int((.5 * size.x + pos.x) / subQuadSize.x), int((.5 * size.z + pos.z) / subQuadSize.y));
}
Vector3 Quad::getSubquadCorner(int xId, int yId, int numVertDiv, int numHorDiv, bool top, bool right){
const int numHorQuads = numVertDiv + 1, numVertQuads = numHorDiv + 1;
int vertPosId = 6 * xId * numVertQuads + 6 * yId;
if(top && !right) return meshBase.positions[vertPosId];
else if(top && right) return meshBase.positions[vertPosId + 4];
else if(!top && !right) return meshBase.positions[vertPosId + 1];
else if(!top && right) return meshBase.positions[vertPosId + 3];
}
}
+5
View File
@@ -9,7 +9,12 @@ namespace vb01{
public:
Quad(Vector3, bool = true, int numVertDiv = 0, int numHorDiv = 0);
void setSize(Vector3);
Vector3 getSubquadCorner(int, int, int, int, bool, bool);
Vector2 getSubquadIds(int, int, Vector3, Vector3);
inline Vector3 getSize(){return size;}
inline Vector2 getSubquadSize(){return Vector2(size.x / (numHorDiv + 1), size.y / (numVertDiv + 1));}
inline int getNumHorSubquads(){return numHorDiv + 1;}
inline int getNumVertSubquads(){return numVertDiv + 1;}
private:
Vector3 size;
bool spatial;