From 4b3b08ecadf8604062c7f801668e641cb024e309 Mon Sep 17 00:00:00 2001 From: admin Date: Fri, 25 Apr 2025 21:17:07 +0200 Subject: First Commit --- src/lensdrac/lensdrac.c | 57 +++++++++++++++++++++++++++++++++++++++++++++++++ src/lensdrac/sdl2test.c | 22 +++++++++++++++++++ 2 files changed, 79 insertions(+) create mode 100644 src/lensdrac/lensdrac.c create mode 100644 src/lensdrac/sdl2test.c (limited to 'src/lensdrac') diff --git a/src/lensdrac/lensdrac.c b/src/lensdrac/lensdrac.c new file mode 100644 index 0000000..abcacb3 --- /dev/null +++ b/src/lensdrac/lensdrac.c @@ -0,0 +1,57 @@ +/** + * lensdraw.c - source file for trying things with SDL2. + * + * Copyright (C) 2025 https://optics-design.com + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * See the COPYING file for the full license text. + */ +#include +#include + +#define SCREEN_WIDTH 800 +#define SCREEN_HEIGHT 600 + +void draw_circle(SDL_Renderer *renderer, int cx, int cy, int r) { + for (int x = -r; x <= r; x++) { + int y = sqrt(r * r - x * x); + SDL_RenderDrawPoint(renderer, cx + x, cy + y); + SDL_RenderDrawPoint(renderer, cx + x, cy - y); + } +} + +void draw_lens(SDL_Renderer *renderer, int cx, int cy, int r) { + SDL_SetRenderDrawColor(renderer, 0, 200, 255, 255); // Light blue color for lens + + for (int x = 0; x <= r; x++) { + int y1 = sqrt(r * r - x * x); + int y2 = -y1; + + for (int y = y2; y <= y1; y++) { + SDL_RenderDrawPoint(renderer, cx + x, cy + y); + } + } +} +int main(int argc, char* argv[]) { + SDL_Init(SDL_INIT_VIDEO); + SDL_Window *window = SDL_CreateWindow("Spherical Lens", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN); + SDL_Renderer *renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED); + + SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255); // Black background + SDL_RenderClear(renderer); + + draw_lens(renderer, SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2, 100); // Draw lens + + SDL_RenderPresent(renderer); + + SDL_Delay(5000); // Show for 5 seconds + + SDL_DestroyRenderer(renderer); + SDL_DestroyWindow(window); + SDL_Quit(); + return 0; +} diff --git a/src/lensdrac/sdl2test.c b/src/lensdrac/sdl2test.c new file mode 100644 index 0000000..511c0bd --- /dev/null +++ b/src/lensdrac/sdl2test.c @@ -0,0 +1,22 @@ +/** + * sdl2test.c - source file for trying things with SDL2. + * + * Copyright (C) 2025 https://optics-design.com + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * See the COPYING file for the full license text. + */ +#include + +int main(int argc, char *argv[]) { + SDL_Init(SDL_INIT_VIDEO); + SDL_Window *win = SDL_CreateWindow("Hello SDL2", 100, 100, 800, 600, SDL_WINDOW_SHOWN); + SDL_Delay(2000); + SDL_DestroyWindow(win); + SDL_Quit(); + return 0; +} -- cgit v1.2.3