penrose

program for generating penrose tilings.
Log | Files | Refs | README | LICENSE

commit f465d3c30706dea3647cfdd546ae975436d86d8c
parent ed03cfdd9e0ce696438d4630bb0f90c728ead3ec
Author: mpizzzle <m@michaelpercival.xyz>
Date:   Sat, 10 Oct 2020 21:57:37 +0100

safety commit before I switch to glfw

Diffstat:
Mpenrose.cpp | 56+++++++++++++++++++++++++++++++++++++++++++++++++-------
1 file changed, 49 insertions(+), 7 deletions(-)

diff --git a/penrose.cpp b/penrose.cpp @@ -1,25 +1,67 @@ #include <SDL2/SDL.h> +#include <iostream> +#include <vector> -void draw(SDL_Renderer* Renderer) { +class triangle { +public: + SDL_Point* points; + std::vector<triangle*> subtriangles; +}; + +class t123 : public triangle { +}; + +class t124 : public triangle { +}; + +void draw(SDL_Renderer* Renderer, std::vector<triangle> triangles) { SDL_SetRenderDrawColor(Renderer, 0x33, 0x66, 0x99, SDL_ALPHA_OPAQUE); SDL_RenderClear(Renderer); SDL_SetRenderDrawColor(Renderer, 255, 255, 255, SDL_ALPHA_OPAQUE); - SDL_RenderDrawLine(Renderer, 0, 480, 320, 0); - SDL_RenderDrawLine(Renderer, 640, 480, 320, 0); - SDL_RenderDrawLine(Renderer, 0, 480, 640, 480); + for (triangle t : triangles) { + SDL_RenderDrawLines(Renderer, t.points, 4); + } SDL_RenderPresent(Renderer); } int main() { + bool quit = false; + + SDL_DisplayMode current; + SDL_Event event; + SDL_Init(SDL_INIT_EVERYTHING); + SDL_GetCurrentDisplayMode(0, &current); + SDL_Log("Display #%d: current display mode is %dx%dpx @ %dhz.", 0, current.w, current.h, current.refresh_rate); + + std::vector<triangle> triangles; - SDL_Window* Window = SDL_CreateWindow("penrose", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 0, 0, SDL_WINDOW_OPENGL | SDL_WINDOW_FULLSCREEN_DESKTOP); + t123 t; + SDL_Point points[4] = { {0, 480}, {320, 0}, {640, 480}, {0, 480} }; + t.points = points; + triangles.push_back(t); + + SDL_Window* Window = SDL_CreateWindow("penrose", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, current.w, current.h, SDL_WINDOW_OPENGL | SDL_WINDOW_FULLSCREEN); SDL_Renderer* Renderer = SDL_CreateRenderer(Window, -1, 0); - draw(Renderer); - SDL_Delay(1000); + + while (!quit) { + SDL_WaitEvent(&event); + + switch (event.type) + { + case SDL_QUIT: + quit = true; + break; + } + + draw(Renderer, triangles); + } + + SDL_DestroyRenderer(Renderer); + SDL_DestroyWindow(Window); SDL_Quit(); return 0;