Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*********************
- Author: Nemeth Balint
- *********************/
- #include <SDL2/SDL.h>
- #include <SDL2/SDL2_gfxPrimitives.h>
- #include <math.h>
- #include <stdlib.h>
- #include <stdbool.h>
- typedef struct Pontok{
- int x;
- int y;
- }Pontok;
- double distance(int pX, int pY, int x, int y);
- bool kb_egyenlo(double arg, int dist, int eps);
- //InfoC
- void sdl_init(char const *felirat, int szeles, int magas, SDL_Window **pwindow, SDL_Renderer **prenderer) {
- if (SDL_Init(SDL_INIT_EVERYTHING) < 0) {
- SDL_Log("Nem indithato az SDL: %s", SDL_GetError());
- exit(1);
- }
- SDL_Window *window = SDL_CreateWindow(felirat, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, szeles, magas, 0);
- if (window == NULL) {
- SDL_Log("Nem hozhato letre az ablak: %s", SDL_GetError());
- exit(1);
- }
- SDL_Renderer *renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_SOFTWARE);
- if (renderer == NULL) {
- SDL_Log("Nem hozhato letre a megjelenito: %s", SDL_GetError());
- exit(1);
- }
- SDL_RenderClear(renderer);
- *pwindow = window;
- *prenderer = renderer;
- }
- int main(int argc, char *argv[]) {
- //vars
- Pontok pontok[6] = {
- {320, 240},
- {240, 200},
- {420, 280},
- {240, 240},
- {400, 240},
- };
- int eps = 5;
- double d1, d2;
- // ablak létrehozása
- SDL_Window *window;
- SDL_Renderer *renderer;
- sdl_init("Azon pontok mertani helye", 640, 480, &window, &renderer);
- for (int x = 0; x < 640; x++) {
- for (int y = 0; y < 480; y++) {
- //CIRCLE
- d1 = distance(pontok[0].x, pontok[0].y, x, y);
- if (kb_egyenlo(d1, 200, eps)) {
- pixelRGBA(renderer, x, y, 255, 0, 0, 255);
- }
- //ELLIPSE
- d1 = distance(pontok[1].x, pontok[1].y, x, y);
- d2 = distance(pontok[2].x, pontok[2].y, x, y);
- if (kb_egyenlo(d1+d2, 250, eps)) {
- pixelRGBA(renderer, x, y, 0, 255, 0, 255);
- }
- //HYPERBOLE
- d1 = distance(pontok[3].x, pontok[3].y, x, y);
- d2 = distance(pontok[4].x, pontok[4].y, x, y);
- if (kb_egyenlo(fabs(d1-d2), 100, eps)) {
- pixelRGBA(renderer, x, y, 0, 0, 255, 255);
- }
- //PARABOLE
- d1 = distance(pontok[0].x, pontok[0].y, x, y);
- d2 = 400 - x;
- if (kb_egyenlo(d1-d2, 0, eps)) {
- pixelRGBA(renderer, x, y, 255, 255, 255, 255);
- }
- }
- }
- //NAMES
- stringRGBA(renderer, 550, 10, "Kor", 255, 0, 0, 255);
- stringRGBA(renderer, 550, 30, "Elipszis", 0, 255, 0, 255);
- stringRGBA(renderer, 550, 50, "Hiperbola", 0, 0, 255, 255);
- stringRGBA(renderer, 550, 70, "Parabola", 255, 255, 255, 255);
- /* az elvegzett rajzolasok a kepernyore */
- SDL_RenderPresent(renderer);
- /* varunk a kilepesre */
- SDL_Event ev;
- while (SDL_WaitEvent(&ev) && ev.type != SDL_QUIT) {
- }
- /* ablak bezarasa */
- SDL_Quit();
- return 0;
- }
- double distance(int pX, int pY, int x, int y) {
- return sqrt(pow(pX - x, 2) + pow(pY - y, 2));
- }
- bool kb_egyenlo(double arg, int dist, int eps){
- return (arg + eps >= dist && arg - eps<= dist);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement