Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Fedor Zsombor
- //OFAPYD
- //2014.10.23.
- //A forráskódhoz segítségül az InfoC SDL grafika oldalon lévő rajzolós programot használtam.
- /////////////////////////////////////////////////////////////////////////////////////////////
- #include <SDL/SDL.h>
- //#include <SDL_image/SDL_image.h>
- #include <SDL_gfx/SDL_gfxPrimitives.h>
- #include <stdio.h>
- #include <math.h>
- typedef struct
- {
- int x;
- int y;
- }Pont;
- double Pont_tav(Pont p1, Pont p2){
- return sqrt((p1.x-p2.x)*(p1.x-p2.x) + (p1.y-p2.y)*(p1.y-p2.y));
- }
- void ellipszis(Pont p1, Pont p2, int tav, SDL_Surface *screen)
- {
- int i, j;
- int eps=4;
- for (i=1; i<=800; i++)
- {
- for (j=1; j<=600; j++)
- {
- Pont pp = {i,j};
- int a=Pont_tav(pp, p1) + Pont_tav(pp, p2);
- if (a < tav+eps && a > tav-eps)
- {
- pixelRGBA(screen, i,j, 70,130,180,255);
- }
- }
- }
- }
- void Pont_rajzolas(Pont p1, SDL_Surface *screen)
- {
- filledCircleRGBA(screen, p1.x, p1.y, 10, 0, 255, 0, 255);
- }
- void szoveg(Pont p1, Pont p2, int tav, SDL_Surface *screen)
- {
- char tav_s[10];
- char p1x_s[10];
- char p1y_s[10];
- char p2x_s[10];
- char p2y_s[10];
- sprintf(tav_s, "%d", tav);
- sprintf(p1x_s, "%d", p1.x);
- sprintf(p1y_s, "%d", p1.y);
- sprintf(p2x_s, "%d", p2.x);
- sprintf(p2y_s, "%d", p2.y);
- stringRGBA(screen, 770, 0, tav_s, 0 , 0, 0, 255);
- stringRGBA(screen, 740, 10, p1x_s, 0, 0, 0, 255);
- stringRGBA(screen, 770, 10, p1y_s, 0, 0, 0, 255);
- stringRGBA(screen, 740, 20, p2x_s, 0, 0, 0, 255);
- stringRGBA(screen, 770, 20, p2y_s, 0, 0, 0, 255);
- stringRGBA(screen, 702, 0, "Tav:", 0, 0, 0, 255);
- stringRGBA(screen, 670, 10, "1. Pont:", 0, 0, 0, 255);
- stringRGBA(screen, 670, 20, "2. Pont:", 0, 0, 0, 255);
- stringRGBA(screen, 692, 30, "Fedor Zsombor", 0, 0, 0, 255);
- }
- int main(int argc, char *argv[])
- {
- SDL_Event event;
- SDL_Surface *screen;
- int tav=600;
- Pont p1, p2;
- p1.x=200;
- p1.y=300;
- p2.x=600;
- p2.y=300;
- int click, quit;
- // SDL inicializálása és ablak megnyitása
- SDL_Init(SDL_INIT_VIDEO);
- screen=SDL_SetVideoMode(800, 600, 0, SDL_ANYFORMAT);
- if (!screen) {
- fprintf(stderr, "Nem sikerult megnyitni az ablakot!\n");
- exit(1);
- }
- SDL_WM_SetCaption("Ellipszis", "Ellipszis");
- SDL_FillRect(screen, NULL, 0xDCDCDCFF);
- //A fókuszpontok kirajzolása
- filledCircleRGBA(screen, p1.x, p1.y, 10, 0,206,209,255);
- filledCircleRGBA(screen, p2.x, p2.y, 10, 64,224,208,255);
- //Az ellipszis kirajzolása
- ellipszis(p1, p2, tav, screen);
- //Szöveg kiirítása
- szoveg(p1, p2, tav, screen);
- //Az eddigi dolgok kirajzolása
- SDL_Flip(screen);
- quit = 0;
- click = 0;
- while (!quit) {
- SDL_WaitEvent(&event);
- switch (event.type) {
- //Egér kattintás
- case SDL_MOUSEBUTTONDOWN:
- if (event.button.button == SDL_BUTTON_LEFT)
- {
- click = 1;
- }
- break;
- //Egérgomb elengedése
- case SDL_MOUSEBUTTONUP:
- if (event.button.button == SDL_BUTTON_LEFT)
- {
- click = 0;
- }
- break;
- //Egér mozdulat
- case SDL_MOUSEMOTION:
- if(click)
- {
- Pont p_eger={event.button.x, event.button.y};
- if (event.button.x<p1.x+10 && event.button.x>p1.x-10)
- {
- if (event.button.y<p1.y+10 && event.button.y>p1.y-10)
- {
- p1.x=event.button.x;
- p1.y=event.button.y;
- SDL_FillRect(screen, NULL, 0xDCDCDCFF);
- filledCircleRGBA(screen, p1.x, p1.y, 10, 0,206,209,255);
- filledCircleRGBA(screen, p2.x, p2.y, 10, 64,224,208,255);
- ellipszis(p1, p2, tav, screen);
- szoveg(p1, p2, tav, screen);
- SDL_Flip(screen);
- }
- } else if (event.button.x<p2.x+10 && event.button.x>p2.x-10)
- {
- if (event.button.y<p2.y+10 && event.button.y>p2.y-10)
- {
- p2.x=event.button.x;
- p2.y=event.button.y;
- SDL_FillRect(screen, NULL, 0xDCDCDCFF);
- filledCircleRGBA(screen, p1.x, p1.y, 10, 0,206,209,255);
- filledCircleRGBA(screen, p2.x, p2.y, 10, 64,224,208,255);
- ellipszis(p1, p2, tav, screen);
- szoveg(p1, p2, tav, screen);
- SDL_Flip(screen);
- }
- } else if(Pont_tav(p_eger, p1)+Pont_tav(p_eger, p2)<tav+10 && Pont_tav(p_eger, p1)+Pont_tav(p_eger, p2)>tav-10)
- {
- tav = Pont_tav(p_eger, p1)+Pont_tav(p_eger, p2);
- SDL_FillRect(screen, NULL, 0xDCDCDCFF);
- filledCircleRGBA(screen, p1.x, p1.y, 10, 0,206,209,255);
- filledCircleRGBA(screen, p2.x, p2.y, 10, 64,224,208,255);
- ellipszis(p1, p2, tav, screen);
- szoveg(p1, p2, tav, screen);
- SDL_Flip(screen);
- }
- }
- break;
- //Bezárás
- case SDL_QUIT:
- quit=1;
- break;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement