computer-graphics-0/programs/labs1_5/src/variants/lab1/variant3.cpp

20 lines
1.2 KiB
C++

#include "bgtu/computer_graphics_lab_work/utilities/shapes/circle.hpp"
#include "../variants.hpp"
#include "../sprite_data.hpp"
#include "common_sprites.hpp"
namespace BGTU::ComputerGraphicsLabWork::Impl::Variants::Lab1 {
template<double z, RendererApi::Color::Transparent c, double center_distance_multiplier, double center_angle_degrees, double radius_multiplier>
static void _variant3_circle(Utilities::ZoomedVoxelPainter<BGTU::ComputerGraphicsLabWork::Utilities::DefaultVoxelDrawerCache::VoxelPainterImpl> *frame, SpriteData::ShapeData const *data) {
Utilities::Shapes::draw_circle_edge(frame, data->pos_rotated(data->radius * center_distance_multiplier, center_angle_degrees), data->radius * radius_multiplier, z, c);
}
variant_sprites variant3 = variant_sprites::make_light<
static_centered_circle_edge<4.0, {127, 127, 127}, 1.0>,
pos_rotated_polygon_edge<3.0, {0, 255, 0}, {1, 0}, {1, 120}, {1, -120}>,
_variant3_circle<2.0, {0, 255, 0}, 0.6666666666666, 0.0, 0.16666666666666666>,
_variant3_circle<2.0, {0, 255, 0}, 0.6666666666666, 120.0, 0.16666666666666666>,
_variant3_circle<2.0, {0, 255, 0}, 0.6666666666666, -120.0, 0.16666666666666666>,
static_centered_circle_edge<1.0, {0, 255, 0}, 0.5>
>();
}