// shape_renderer.hpp - Renderitzat de formes vectorials // © 2025 Port a C++20 amb SDL3 #pragma once #include #include #include "core/graphics/shape.hpp" #include "core/types.hpp" namespace Rendering { // Estructura per rotacions 3D (pitch, yaw, roll) struct Rotation3D { float pitch; // Rotació eix X (cabeceo arriba/baix) float yaw; // Rotació eix Y (guiñada esquerra/dreta) float roll; // Rotació eix Z (alabeo lateral) Rotation3D() : pitch(0.0F), yaw(0.0F), roll(0.0F) {} Rotation3D(float p, float y, float r) : pitch(p), yaw(y), roll(r) {} bool has_rotation() const { return pitch != 0.0F || yaw != 0.0F || roll != 0.0F; } }; // Renderitzar forma amb transformacions // - renderer: SDL renderer // - shape: forma vectorial a dibuixar // - posicio: posició del centre en coordenades mundials // - angle: rotació en radians (0 = amunt, sentit horari) // - escala: factor d'escala (1.0 = mida original) // - dibuixar: flag per dibuixar (false per col·lisions futures) // - progress: progrés de l'animació (0.0-1.0, default 1.0 = tot visible) // - brightness: factor de brillantor (0.0-1.0, default 1.0 = màxima brillantor) void render_shape(SDL_Renderer* renderer, const std::shared_ptr& shape, const Punt& posicio, float angle, float escala = 1.0F, bool dibuixar = true, float progress = 1.0F, float brightness = 1.0F, const Rotation3D* rotation_3d = nullptr); } // namespace Rendering