summaryrefslogtreecommitdiff
path: root/src/lensdrac
diff options
context:
space:
mode:
Diffstat (limited to 'src/lensdrac')
-rw-r--r--src/lensdrac/lensdrac.c57
-rw-r--r--src/lensdrac/sdl2test.c22
2 files changed, 79 insertions, 0 deletions
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 <SDL.h>
+#include <math.h>
+
+#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 <SDL.h>
+
+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;
+}
Back to https://optics-design.com