#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "sprite_data.hpp" #include "model.hpp" namespace BGTU::ComputerGraphicsLabWork::Impl { int main(int argc, char **argv) { #if 1 QApplication qApplication{argc, argv}; SpriteData::Provider sprites_data_custom{0.1, 0.1, 10}; QMainWindow w{}; QtUtilities::KeyboardCatcherWidget kbd{&w}; QObject::connect(&kbd, &QtUtilities::KeyboardCatcherWidget::key_pressed_Left, &sprites_data_custom, &SpriteData::Provider::dec_y_angle); QObject::connect(&kbd, &QtUtilities::KeyboardCatcherWidget::key_pressed_Right, &sprites_data_custom, &SpriteData::Provider::inc_y_angle); QObject::connect(&kbd, &QtUtilities::KeyboardCatcherWidget::key_pressed_Down, &sprites_data_custom, &SpriteData::Provider::dec_x_angle); QObject::connect(&kbd, &QtUtilities::KeyboardCatcherWidget::key_pressed_Up, &sprites_data_custom, &SpriteData::Provider::inc_x_angle); QObject::connect(&kbd, &QtUtilities::KeyboardCatcherWidget::key_pressed_A, &sprites_data_custom, &SpriteData::Provider::dec_y_angle); QObject::connect(&kbd, &QtUtilities::KeyboardCatcherWidget::key_pressed_D, &sprites_data_custom, &SpriteData::Provider::inc_y_angle); QObject::connect(&kbd, &QtUtilities::KeyboardCatcherWidget::key_pressed_S, &sprites_data_custom, &SpriteData::Provider::dec_x_angle); QObject::connect(&kbd, &QtUtilities::KeyboardCatcherWidget::key_pressed_W, &sprites_data_custom, &SpriteData::Provider::inc_x_angle); QObject::connect(&kbd, &QtUtilities::KeyboardCatcherWidget::key_pressed_PageDown, &sprites_data_custom, &SpriteData::Provider::dec_scale); QObject::connect(&kbd, &QtUtilities::KeyboardCatcherWidget::key_pressed_PageUp, &sprites_data_custom, &SpriteData::Provider::inc_scale); QObject::connect(&kbd, &QtUtilities::KeyboardCatcherWidget::key_pressed_P, &sprites_data_custom, &SpriteData::Provider::switch_projection); QtUtilities::SeparateThreadedDefaultRendererLinear renderer_custom{}; renderer_custom.set_sprite_data_provider(&sprites_data_custom); renderer_custom.set_sprites(reinterpret_cast *const *>(sprites), sprites_count); renderer_custom.set_background(BGTU::ComputerGraphicsLabWork::RendererApi::Color{0, 0, 0}); QGridLayout layout{&kbd}; kbd.setLayout(&layout); QtUtilities::RendererWidget canvas_custom{&renderer_custom, &kbd}; layout.addWidget(&canvas_custom, 0, 0); QObject::connect(&canvas_custom, &QtUtilities::_RendererWidget_SignalSlots::resized, &sprites_data_custom, &SpriteData::Provider::set_frame_size); w.setCentralWidget(&kbd); w.show(); QApplication::exec(); return 0; #else auto x = Utilities::Matrix4d{5, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0}; RendererApi::PointF<3> a{1, 1, 6}; RendererApi::PointF<3> b = x * a; return 0; #endif } } int main(int argc, char **argv) { return BGTU::ComputerGraphicsLabWork::Impl::main(argc, argv); }