From 50e885baf5ee7af4ce0ee6b032eebc7597ad87de Mon Sep 17 00:00:00 2001 From: Jason Bou-Samra <154414066+bou-samra@users.noreply.github.com> Date: Mon, 22 Apr 2024 19:28:43 +1000 Subject: [PATCH] bulk data dump --- 3Dcube_final | Bin 0 -> 18136 bytes 3Dcube_final.c | 179 ++++++++++++++++++++++++ Makefile | 8 ++ Screenshot from 2024-04-22 19-25-23.png | Bin 0 -> 4429 bytes 4 files changed, 187 insertions(+) create mode 100644 3Dcube_final create mode 100644 3Dcube_final.c create mode 100644 Makefile create mode 100644 Screenshot from 2024-04-22 19-25-23.png diff --git a/3Dcube_final b/3Dcube_final new file mode 100644 index 0000000000000000000000000000000000000000..d62c42d101b2d5d95dae78b5b0c9b9b97e684b42 GIT binary patch literal 18136 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. ** + ****************************************************************************/ + +#include +#include +#include +#include + +int initSDL (void); +int shutdownSDL (void); +int rotate (void); +int render (void); + +double rx, l, fs, c, s; +double x[8], y[8], z[8]; /* xyz coords */ +double xt, yt, zt; /* temp xyz coords */ +double vx[8], vy[8]; /* vertices */ +bool quit = false; /* quit flag */ + +SDL_Window *window = NULL; +SDL_Renderer *sr; +SDL_Event event; + +/* window paramaters */ +#define WIDTH 640 /* pixels */ +#define HEIGHT 512 /* pixels */ +#define TITLE "3Dcube" /* window title */ +#define STEPS .05 /* resolution */ + +int main (void) +{ + initSDL (); + SDL_RenderSetScale (sr, 2.0, 2.0); /* scale x2 */ + rx = -0.1; + l = 80; + fs = 200; /* scale factor */ + l = l / 2; + while (quit == false) + { + + while (SDL_PollEvent (&event)) + { + if (event.type == SDL_QUIT || event.type == SDL_WINDOWEVENT_CLOSE) + { + quit = true; + } + } + if (quit) + { + break; + } + +/* define cube */ + x[0] = -l; y[0] = -l; z[0] = -l; + x[1] = -l; y[1] = l; z[1] = -l; + x[2] = l; y[2] = l; z[2] = -l; + x[3] = l; y[3] = -l; z[3] = -l; + x[4] = -l; y[4] = -l; z[4] = l; + x[5] = -l; y[5] = l; z[5] = l; + x[6] = l; y[6] = l; z[6] = l; + x[7] = l; y[7] = -l; z[7] = l; + + rx = rx + STEPS; + c = cos (rx); + s = sin (rx); + + rotate (); + render (); + +// SDL_Delay(50); + } + shutdownSDL (); /* bye */ +} + +/* render */ +int render () +{ + /* foreground & background colours */ + SDL_SetRenderDrawColor (sr, 0x00, 0x10, 0x00, 255); /* background */ + SDL_RenderClear (sr); /* clear background */ + SDL_SetRenderDrawColor (sr, 0x00, 0xF0, 0x00, 255); /* set pen colour*/ + + /* draw cube */ + SDL_RenderDrawLine (sr, vx[0], vy[0], vx[1], vy[1]); + SDL_RenderDrawLine (sr, vx[1], vy[1], vx[2], vy[2]); + SDL_RenderDrawLine (sr, vx[2], vy[2], vx[3], vy[3]); + SDL_RenderDrawLine (sr, vx[3], vy[3], vx[0], vy[0]); + + SDL_RenderDrawLine (sr, vx[4], vy[4], vx[5], vy[5]); + SDL_RenderDrawLine (sr, vx[5], vy[5], vx[6], vy[6]); + SDL_RenderDrawLine (sr, vx[6], vy[6], vx[7], vy[7]); + SDL_RenderDrawLine (sr, vx[7], vy[7], vx[4], vy[4]); + + SDL_RenderDrawLine (sr, vx[0], vy[0], vx[4], vy[4]); + SDL_RenderDrawLine (sr, vx[3], vy[3], vx[7], vy[7]); + SDL_RenderDrawLine (sr, vx[1], vy[1], vx[5], vy[5]); + SDL_RenderDrawLine (sr, vx[2], vy[2], vx[6], vy[6]); + + SDL_RenderPresent (sr); +} + +/* rotation routine */ +int rotate () +{ + for (int np = 0; np < 8; np++) + { + +/* rotation around x axis */ + yt = y[np]; + y[np] = c * yt - s * z[np]; + z[np] = s * yt + c * z[np]; + +/* rotation around y axis */ + xt = x[np]; + x[np] = c * xt + s * z[np]; + z[np] = -s * xt + c * z[np]; + +/* rotation around z axis */ + xt = x[np]; + x[np] = c * xt - s * y[np]; + y[np] = s * xt + c * y[np]; + +/* now project into 2D */ + vx[np] = (x[np] * fs) / (z[np] + fs) + 160; + vy[np] = (y[np] * fs) / (z[np] + fs) + 128; + } +} + +/* initialise SDL */ +int initSDL () +{ + SDL_Init (SDL_INIT_EVERYTHING); + +/* new window */ + window = SDL_CreateWindow (TITLE, /* title */ + SDL_WINDOWPOS_UNDEFINED, /* x pos */ + SDL_WINDOWPOS_UNDEFINED, /* w pos */ + WIDTH, /* width */ + HEIGHT, /* height */ + 0); /* Additional flag(s) */ + + /* deal with error */ + if (window == NULL) + { + fprintf (stderr, "SDL window failed to initialise: %s\n", + SDL_GetError ()); + return 1; + } + +/* creater renderer */ + sr = SDL_CreateRenderer (window, 0, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC); +} + +/* shutdown routine */ +int shutdownSDL () +{ + SDL_DestroyWindow (window); /* free memory */ + SDL_Quit (); /* shutdown entire sdl sub-systems */ + return 0; +} + +/* message */ +char author[] = { "3d vector graphics demo by jason bou-samra" }; +const char* text = "Amiga by Commodore all the way"; diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..c846506 --- /dev/null +++ b/Makefile @@ -0,0 +1,8 @@ +#! /bin/make +# :vim: set noexpandtab: + +CFLAGS = -lm `sdl2-config --cflags --libs` + +3Dcube_final: 3Dcube_final.c + $(CC) -o 3Dcube_final 3Dcube_final.c $(CFLAGS) + diff --git a/Screenshot from 2024-04-22 19-25-23.png b/Screenshot from 2024-04-22 19-25-23.png new file mode 100644 index 0000000000000000000000000000000000000000..ef144c994686e9104b06d2b7a6bbebb341dafaee GIT binary patch literal 4429 zcmeHLi(8Y|89yNys0xH`^#Vat?dlx5DwTnT0A7$X3V31ON&^-_DU(F87;}LSMXRlX zYu9NX8CtCd$0c-#g51SY@5g`NFM?@ejY4_J1OX{sX5gf~w*YBX~P~8s8>m zus+jyeWZVwL$Qs-B)3qIwa+NpU8!>}p}0}RDB~g}(jRjkcUo-LKB32hrhdV~o;t${ z?p5_Pi*<$`d)H$h%3j7Mc4LRur`K(KqtaYAW;5Q$r7CWH&cSuWpsy zlo>shQm2Ql_>{p>W7?C-Hk?1FO=w`xJ55I-g7A2&kNm?JPVdR#x^x6w!ig`&Ti!hc z2vs3m*Cp6>WimIN$Z>r)s_t=K=-V6J+DOPqe@4eA$*qQ^v=~u9s7DfYLU^GRF%(j%ruMSTZ14 z{)y8*f#tIwFDxAht9wMmL8>ny3j*qBBN5i2j33et^9pE^HLn5k*!hL>e%9*%6P4Qe z*M`we61Jy_yyQUCIojo9ms zUj>wmNxi!^M?Sx^+75fjv6KS!y=RLhi7>8XhsuGPqmihAG@rq?9Ioj+kwGsM4mp3Y zS7~&rn8bNB2hDQA!J>TsX2WQEAT^nEA_rap6(l)i1`1zFA13py!aLp31(`W=t$QTd z)P=!#G?*fdOfAsj>?=QmWJxB{$&;=mL)1pV%1)!Ps*J?p)J8&TK#XIkuq*)07g3JS zfy2x|CeC7CJ+BbFm7v1Ny(_NRnj^ z{}U!#W?V(CnNJ8k$$40be6Ra=#H$=j#bu(xLsvLovut~kJtV)U1Kf`)p?sWS)tGM| z7Y><~T@k(;rJ~`*ytNR9tA^HmG&kDdxzSfX4{tb}^e##5kJ&Ws^i_E5O5azY333I| z^6@ri$x~cQOlOE`Boj!XXp3gNmJx`e9P~iqQ-Nww6Wdrqg0sqQKKrLf;q^C}A}nb% zXGvPeu;!#f`4LIQ^3&u@N(D6DYv+$xu^z3b!JutN>8QVP$3C3VUg5uAXL!fyMoevR zsQRU*99?AxBz251*WZJbYy-V>de#<>c1N4eld?wFz@IJ>g91vwgT%e1k*pCjt)+Pl)Vt4VV5$%x-=K%P z&EMlCNb(*Xi^WCGNfUu!nO4x*)GsEJ^hQwqdEdsJ#F7V=-ps5{dcIopHmv^XDul}^ z>V?RkKzYTScv-|Wj#doM#n6c~C18==c3*KelZSKA1nxkaT^8y;jnaPO%a9;1qA^CQD!(r9?( z+|0=zFPnMto-w?d861N;+}rq@hOwzt5z^`OsnCCDl8OYTqo(2(sS7HzCpZ@JK^NYfC~yUu}Z^ z3Zup#5SA#Q!X+}4Bs_SoZ3@gzqvfvl1uj{&YA66x&(gOG6MnAnd+Q9gw37yNU=F!h z!R<-}ll42G67uWmGvm^MI6cN_LupSml|#ofAON?+T}YAyL0Dd8P68~s8cPmNk_sY2 zX6Az9|DK3tNeonerW>)sBF1kAc6gWO@ak%410UeJG9+cU1)3~}+u96(Z6Y$tO8hyU z+q?|uGLuPE?f4?tF&L(w%ha%&uvs&-Bb3b?r>);X+NvN$tWE}r2mJ~wNP0Py3AMt# z!?VZJ@hr6S@Qiky+cQ)5EIA2Z)Y480nqtIg7L)E~;8u_Va!@CTg0&p(Xn?UVKt!L< zL>0J(X!3!GgfOg literal 0 HcmV?d00001