le2d v0.4.7
2D game engine framework
 
Loading...
Searching...
No Matches
super_ellipse.hpp
Go to the documentation of this file.
1#pragma once
2#include "le2d/geometry.hpp"
4#include <kvf/color.hpp>
5#include <kvf/rect.hpp>
6
7namespace le::shape {
10 kvf::Color color{kvf::white_v};
11 float exponent{4.0f};
12 std::int32_t resolution{128};
13};
14
16class SuperEllipse : public IGeometry {
17 public:
19
20 static constexpr auto default_size_v = glm::vec2{default_length_v};
21
22 explicit(false) SuperEllipse(glm::vec2 const size = default_size_v, Params const& params = {}) { create(size, params); }
23
24 [[nodiscard]] auto get_vertices() const -> std::span<Vertex const> final { return m_verts.vertices; }
25 [[nodiscard]] auto get_indices() const -> std::span<std::uint32_t const> final { return m_verts.indices; }
26 [[nodiscard]] auto get_topology() const -> vk::PrimitiveTopology final { return vk::PrimitiveTopology::eTriangleFan; }
27
28 void create(glm::vec2 size = default_size_v, Params const& params = {});
29
30 [[nodiscard]] auto get_params() const -> Params const& { return m_params; }
31 [[nodiscard]] auto get_size() const -> glm::vec2 { return m_size; }
32
33 [[nodiscard]] auto get_vertex_array() const -> VertexArray const& { return m_verts; }
34
35 private:
36 VertexArray m_verts{};
37 glm::vec2 m_size{};
38 Params m_params{};
39};
40} // namespace le::shape
Interface for drawable geometry.
Definition geometry.hpp:9
static constexpr auto default_length_v
Definition geometry.hpp:11
Super ellipse Geometry.
Definition super_ellipse.hpp:16
auto get_indices() const -> std::span< std::uint32_t const > final
Definition super_ellipse.hpp:25
auto get_topology() const -> vk::PrimitiveTopology final
Definition super_ellipse.hpp:26
auto get_vertex_array() const -> VertexArray const &
Definition super_ellipse.hpp:33
auto get_size() const -> glm::vec2
Definition super_ellipse.hpp:31
static constexpr auto default_size_v
Definition super_ellipse.hpp:20
auto get_params() const -> Params const &
Definition super_ellipse.hpp:30
void create(glm::vec2 size=default_size_v, Params const &params={})
SuperEllipseParams Params
Definition super_ellipse.hpp:18
auto get_vertices() const -> std::span< Vertex const > final
Definition super_ellipse.hpp:24
Definition circle.hpp:7
Drawable vertex array.
Definition vertex_array.hpp:9
std::vector< Vertex > vertices
Definition vertex_array.hpp:10
std::vector< std::uint32_t > indices
Definition vertex_array.hpp:11
Drawable vertex.
Definition vertex.hpp:7
Super Ellipse creation parameters.
Definition super_ellipse.hpp:9
kvf::Color color
Definition super_ellipse.hpp:10
float exponent
Definition super_ellipse.hpp:11
std::int32_t resolution
Definition super_ellipse.hpp:12