Triangle::get_boundingBox 消除 std::min({a,b,c}) 替换为 detail::min3f/max3f

This commit is contained in:
SepComet 2026-06-07 21:37:36 +08:00
parent a8630c720e
commit c3f12d9013
1 changed files with 10 additions and 5 deletions

View File

@ -3,13 +3,18 @@
#include "BoundingBox.h" #include "BoundingBox.h"
#include "Vertex.h" #include "Vertex.h"
#include <cstdint> #include <cstdint>
#include <algorithm>
#include <cmath> #include <cmath>
#include <Vector3.h> #include <Vector3.h>
#include <cstdlib> #include <cstdlib>
namespace RenderData namespace RenderData
{ {
namespace detail
{
inline float min3f(float a, float b, float c) { return a < b ? (a < c ? a : c) : (b < c ? b : c); }
inline float max3f(float a, float b, float c) { return a > b ? (a > c ? a : c) : (b > c ? b : c); }
}
struct Triangle struct Triangle
{ {
Scene::Vertex v0; Scene::Vertex v0;
@ -22,10 +27,10 @@ namespace RenderData
{ {
using namespace Math; using namespace Math;
int32_t minX = static_cast<int32_t>(std::floor(std::min({ v0.position.x, v1.position.x, v2.position.x }))); int32_t minX = static_cast<int32_t>(std::floor(detail::min3f(v0.position.x, v1.position.x, v2.position.x)));
int32_t maxX = static_cast<int32_t>(std::ceil(std::max({ v0.position.x, v1.position.x, v2.position.x }))); int32_t maxX = static_cast<int32_t>(std::ceil(detail::max3f(v0.position.x, v1.position.x, v2.position.x)));
int32_t minY = static_cast<int32_t>(std::floor(std::min({ v0.position.y, v1.position.y, v2.position.y }))); int32_t minY = static_cast<int32_t>(std::floor(detail::min3f(v0.position.y, v1.position.y, v2.position.y)));
int32_t maxY = static_cast<int32_t>(std::ceil(std::max({ v0.position.y, v1.position.y, v2.position.y }))); int32_t maxY = static_cast<int32_t>(std::ceil(detail::max3f(v0.position.y, v1.position.y, v2.position.y)));
Vector2Int min(minX, minY); Vector2Int min(minX, minY);
Vector2Int max(maxX, maxY); Vector2Int max(maxX, maxY);