forked from BGTU/computer-graphics-0
48 lines
1.7 KiB
C++
48 lines
1.7 KiB
C++
#include <tuple>
|
|
#include <bgtu/computer_graphics_lab_work/renderer_api/sprite.hpp>
|
|
#include <bgtu/computer_graphics_lab_work/utilities/shapes/polygon.hpp>
|
|
#include "../variants.hpp"
|
|
#include "../sprite_data.hpp"
|
|
|
|
namespace BGTU::ComputerGraphicsLabWork::Lab1 {
|
|
namespace Variant1 {
|
|
class S1 : public RendererApi::Sprite<Lab1SpriteData::ShapeData, Utilities::ZoomedVoxelPainter<Utilities::DefaultVoxelDrawerCache::VoxelPainterImpl>> {
|
|
public:
|
|
void draw(
|
|
BGTU::ComputerGraphicsLabWork::Utilities::ZoomedVoxelPainter<BGTU::ComputerGraphicsLabWork::Utilities::DefaultVoxelDrawerCache::VoxelPainterImpl> *frame,
|
|
const BGTU::ComputerGraphicsLabWork::Lab1::Lab1SpriteData::ShapeData *data
|
|
) const final {
|
|
Utilities::Shapes::draw_polygon_edge(
|
|
frame,
|
|
{data->neg_rotated(data->radius / 2, 0), data->neg_rotated(data->radius / 2, 90), data->neg_rotated(data->radius / 2, 180), data->neg_rotated(data->radius / 2, 270),},
|
|
1,
|
|
{255, 0, 0}
|
|
);
|
|
}
|
|
};
|
|
|
|
class S2 : public RendererApi::Sprite<Lab1SpriteData::ShapeData, Utilities::ZoomedVoxelPainter<Utilities::DefaultVoxelDrawerCache::VoxelPainterImpl>> {
|
|
public:
|
|
void draw(
|
|
BGTU::ComputerGraphicsLabWork::Utilities::ZoomedVoxelPainter<BGTU::ComputerGraphicsLabWork::Utilities::DefaultVoxelDrawerCache::VoxelPainterImpl> *frame,
|
|
const BGTU::ComputerGraphicsLabWork::Lab1::Lab1SpriteData::ShapeData *data
|
|
) const final {
|
|
Utilities::Shapes::draw_polygon_edge(
|
|
frame,
|
|
{
|
|
{data->radius, 0},
|
|
{0, data->radius},
|
|
{-data->radius, 0},
|
|
{0, -data->radius}
|
|
},
|
|
2,
|
|
{0, 255, 255}
|
|
);
|
|
}
|
|
};
|
|
|
|
|
|
}
|
|
|
|
variant_sprites variant1 = variant_sprites::make(Variant1::S1{}, Variant1::S2{});
|
|
} |