|
@@ -0,0 +1,75 @@
|
|
|
+//
|
|
|
+// Draw a Filled circle using brute force.
|
|
|
+//
|
|
|
+
|
|
|
+#include "raylib.h"
|
|
|
+
|
|
|
+void bruteforcecircle(int xc, int yc, int r,Color col);
|
|
|
+
|
|
|
+int main(void)
|
|
|
+{
|
|
|
+ // Initialization
|
|
|
+ //--------------------------------------------------------------------------------------
|
|
|
+ const int screenWidth = 800;
|
|
|
+ const int screenHeight = 450;
|
|
|
+
|
|
|
+ InitWindow(screenWidth, screenHeight, "raylib example.");
|
|
|
+
|
|
|
+ SetTargetFPS(10); // Set our game to run at 60 frames-per-second
|
|
|
+ //--------------------------------------------------------------------------------------
|
|
|
+
|
|
|
+ // Main game loop
|
|
|
+ while (!WindowShouldClose()) // Detect window close button or ESC key
|
|
|
+ {
|
|
|
+ // Update
|
|
|
+ //----------------------------------------------------------------------------------
|
|
|
+
|
|
|
+
|
|
|
+ //----------------------------------------------------------------------------------
|
|
|
+ // Draw
|
|
|
+ //----------------------------------------------------------------------------------
|
|
|
+ BeginDrawing();
|
|
|
+
|
|
|
+ ClearBackground(RAYWHITE);
|
|
|
+ for(int i=0;i<20;i++){
|
|
|
+ int x = GetRandomValue(0,screenWidth);
|
|
|
+ int y = GetRandomValue(0,screenHeight);
|
|
|
+ int r = GetRandomValue(10,100);
|
|
|
+ bruteforcecircle(x,y,r,RED);
|
|
|
+ }
|
|
|
+
|
|
|
+ EndDrawing();
|
|
|
+ //----------------------------------------------------------------------------------
|
|
|
+ }
|
|
|
+
|
|
|
+ // De-Initialization
|
|
|
+ //--------------------------------------------------------------------------------------
|
|
|
+ CloseWindow(); // Close window and OpenGL context
|
|
|
+ //--------------------------------------------------------------------------------------
|
|
|
+
|
|
|
+ return 0;
|
|
|
+
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+void bruteforcecircle(int xc, int yc, int radius,Color col) {
|
|
|
+// for(int y=-radius; y<=radius; y++){
|
|
|
+// for(int x=-radius; x<=radius; x++){
|
|
|
+// if(x*x+y*y <= radius*radius)
|
|
|
+// DrawPixel(xc+x, yc+y,col);
|
|
|
+// }}
|
|
|
+
|
|
|
+// Single Loop version ; Said to be 2x speed than double loop method.
|
|
|
+int r2 = radius * radius;
|
|
|
+int area = r2 << 2;
|
|
|
+int rr = radius << 1;
|
|
|
+
|
|
|
+for (int i = 0; i < area; i++)
|
|
|
+{
|
|
|
+ int tx = (i % rr) - radius;
|
|
|
+ int ty = (i / rr) - radius;
|
|
|
+
|
|
|
+ if (tx * tx + ty * ty <= r2)
|
|
|
+ DrawPixel(xc + tx, yc + ty, col);
|
|
|
+}
|
|
|
+}
|