ゆとりーなの日記

日記的な事を書いて行くと思はれる

図形変換

今までは白い図形しか描けませんでしたか、図形変換アダプタによって着色や移動、拡大縮小や回転が出来るようになりました。

#include <pstade/oven/algorithm.hpp>
#include <ngy313/process.hpp>
#include <ngy313/window.hpp>
#include <ngy313/graphic.hpp>
#include <ngy313/box.hpp>
#include <ngy313/color_code.hpp>
#include <ngy313/colored.hpp>
#include <ngy313/moved.hpp>
#include <ngy313/extended.hpp>
#include <ngy313/rotated.hpp>
#include <ngy313/base_point.hpp>

int main() {
  ngy313::set_window_caption("試験窓");
  ngy313::window_resize(640, 480);
  ngy313::window_show();
  pstade::oven::for_each(ngy313::process_message(), ngy313::main_loop([]() {
    {
      const ngy313::scoped_render render;
      if (render.succeeded()) {
        ngy313::clear_screen(ngy313::kBlack);
        const ngy313::box box(32.f, 32.f, 64.f, 64.f);
        // オリジナルboxを描画
        ngy313::draw(box);
        // 右に80移動したboxを描画
        ngy313::draw(box | ngy313::moved(80.f, 0.f));
        // 右に160移動して赤に着色したboxを描画
        ngy313::draw(box |
                     ngy313::moved(160.f, 0.f) |
                     ngy313::colored(ngy313::kRed));
        // 右に240移動して左上頂点2を赤に着色したboxを描画
        ngy313::draw(box |
                     ngy313::moved(240.f, 0.f) |
                     ngy313::colored_at(0, ngy313::kRed));
        // 左上頂点を基準に横方向に二倍に拡大した後右に320移動したboxを描画
        ngy313::draw(box |
                     ngy313::extended(ngy313::base_point_set_at(0), 2.f, 1.f) | 
                     ngy313::moved(320.f, 0.f));
        // 中心点を基準に反時計回り2ラジアン回転した後下に80移動したboxを描画
        ngy313::draw(box |
                     ngy313::rotated(ngy313::base_point_set_center, 2.f) | 
                     ngy313::moved(0.f, 80.f));
        // 中心点を基準に反時計回り2ラジアン回転した後縦、横共に二倍に拡大した後
        // 右、下共にに160移動したboxを描画
        ngy313::draw(box |
                     ngy313::rotated(ngy313::base_point_set_center, 2.f) | 
                     ngy313::extended(ngy313::base_point_set_center, 2.f, 2.f) |
                     ngy313::moved(160.f, 160.f));
      }
    }
    ngy313::present();
  }));
  return 0;
}

実行結果