From 35a2d25ca86b566d0c983e5b22bda43626a820fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vin=C3=ADcius=20Aiala?= Date: Tue, 15 Jun 2021 19:49:31 -0300 Subject: [PATCH] =?UTF-8?q?Finaliza=C3=A7=C3=A3o=20da=20colora=C3=A7=C3=A3?= =?UTF-8?q?o=20das=20figuras?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "Gato invis\303\255vel malha.png" | Bin 0 -> 51261 bytes "Gato invis\303\255vel.png" | Bin 0 -> 5293 bytes ImageGenerator.py | 84 ++++++++++++++++++++++-------- main.py | 2 +- 4 files changed, 62 insertions(+), 24 deletions(-) create mode 100644 "Gato invis\303\255vel malha.png" create mode 100644 "Gato invis\303\255vel.png" diff --git "a/Gato invis\303\255vel malha.png" "b/Gato invis\303\255vel malha.png" new file mode 100644 index 0000000000000000000000000000000000000000..323a149198cc6bfa50a5f693106b3b62f9024640 GIT binary patch literal 51261 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 literal 0 HcmV?d00001 diff --git "a/Gato invis\303\255vel.png" "b/Gato invis\303\255vel.png" new file mode 100644 index 0000000000000000000000000000000000000000..808f10a28efd3247159b3eea4534b32366010153 GIT binary patch literal 5293 zcmeHKYfw|y7T)0?Aw5lXKQy z>s#Oc)>SwEC~wq-3kCQtos@2!6&UPKD7Y6`*o1-#_&{@tiLnNw%x)z z?8VK7!w8w-NG|`ttmcNE`tYLtAU382d)&J&Z!;IiGtFJQw7&gsqw|EdwWF|_pd zdW*o{6@kbhfwYT1j04?qwf#BPD8}jO9Bb&Ts+5KX4Dc)DFRIlF0KKE`0O%X00ARRO z4!}};9}3{T8xY{lSg;p~Z93Q90Uy5ergmJ&V0lDNs7XZt!22vLY6}zt^}C+R?EALh z-kZq$Jj7sd=$nJ)o_c>BdtW;S;=nA;i`@Ux)Ari_{>h6St*^pa_dgj90V4l>0Rx_h|W) z!OV?n<8T#iH9#%rOj=%Z;_VggLsPqxmUbIABN+IFx=}$__1GxKQn}Mzg`UK`3MbHU zf4o=o(1$?MemxY=$a>a*5FMR!CCL)u5p8<4nsdK20bf3ag?iN{lz%)8h1JP%)T>O zaGoEJNdYJB%WFcQ^^=cnd28T$SW%6M41A?_R3rChuwhjn3g3Rno@@!Z5h1dQyonS6 zmtqR*nN(6hu%(?Q=`=DHh)E@~qzOarHr9~K=x`SXE8SRCV@>ZviGTRl;J|cbuVz}C zaK|Qf9W|P@4=w)WO0OVg%HrGo;sP3)fnp}6Bo{D3Vc8Ph@MIr_kJd6>xfvxv4E;Gu z9(S#&Olq=HwaM@(m#p(s6KULY3G9;x3?^Yx7`4|t1~R9LCuN$PYEhOA45erni6dxN zB97S6mM|P>_%4@Tc5kqt;3Y3~VrmunKm5*qXrg`UjT6LQde?)%fN3Q5XStO{I0!~| z=o53GKeZm*>-Lvj*4oiv^@Nb0y*bWS(7o9zL3Yc+Tqul@% zXkY}+`lN30(bWB`0pU)r z{ds*if^NraUwLJWPEE?Yuz66<%Qw^bRW1@^5L9K=-NtkWXSP@Ll%CDfp|zx-S7g5} z8V7gpD3#H~cX26zyuMdfV?Ngvbcl+Taa^$-j|`v01g9f5@LfW|qwHhQGZs%4ygH2&@>XSNdlIpfdY^n}$l3{b%0ycCvDTrVy~bHaszL}H!A9L& zW#;kQuFvb8coD9v;aQuZ;WF9skwlYkSryigo~xrfVM=IgEEGvGzf-3C@xgHAhjq9q zf5MizEF+wTb{fsPPW5Ad3o%ZI64KE4;JD=dyX|bcB03E^c6E#37G~UpL%+3~8V%PQ zE?1rKxFF($J-qnEKgbw(YGu9&W54_qdTCO?-M;6W#JU-PlHwInX-_f5Uzx=!60i>T zeJFGMFX!xY4#w9{s~%N;eAmc^f|WjQzX1NJ7)vEhNlMN+jc%H7V`tOQ)FR)e%#u;( zGeacT8lp}MOl8^!iz@4*j9E8eJ`K7!8aAdT6za!-k^6yT=N7Yq;5~MenV1Ou+0L%& zH(?cKW*kZ`)u5C3kfKHTeX$XOecHn6kxRx@s2XVs!U~4&pgaw1LeilY#_Z9xlhOWl zn&@tHw@#^cGCM)KsT|UXJ{TKJJqBY(xjlEdh?3g%q2jh&v|%IcvotiGpRX+3>BVND ziKwOHIF2+ed>Icmqvg^Hap)Z-;@&-;X-RFeiVT6eO8>0c5udi4hT#=MbDz?VR9mI` z2Gk=dkcv#jx>BX{i>i+}qAU}*mcxr;{ky$VdG$(j_^nUrVh70YY2{TqXlAbb^hKP9jj3CSzPke6l0+6oYeGX7{YfkQbk}V2tcLN;e{Wn{Bb58+0v;RUyO8a7 zTW?|tY*49kh~=@%=2)>GoQ74W}fZN zq?Uo21?M9bDm7 VqrBaG-vc@vg8V{!t2a>({~Ofm{hR;* literal 0 HcmV?d00001 diff --git a/ImageGenerator.py b/ImageGenerator.py index e61c717..ffa0341 100644 --- a/ImageGenerator.py +++ b/ImageGenerator.py @@ -1,42 +1,80 @@ from PIL import Image, ImageColor +import math def gerar_imagem(cenario, largura, altura): im = Image.new('RGB', (largura, altura)) # create the Image of size 1 pixel - color = ImageColor.getrgb('#634525') + colors = [ImageColor.getrgb('#8F6332'), ImageColor.getrgb('#79C0DB')] - for objeto in cenario.cena: + for i in range(len(cenario.cena)): + objeto = cenario.cena[i] + color = colors[i] for face in objeto.faces: p1_idx, p2_idx, p3_idx = face p1 = objeto.vertices[p1_idx - 1] p2 = objeto.vertices[p2_idx - 1] p3 = objeto.vertices[p3_idx - 1] + rasteriza_face(im, p1, p2, p3, color) - inc_line(im, int(p1[0]), int(p1[1]), int(p2[0]), int(p2[1]), color) - inc_line(im, int(p2[0]), int(p2[1]), int(p3[0]), int(p3[1]), color) - inc_line(im, int(p1[0]), int(p1[1]), int(p3[0]), int(p3[1]), color) + im.save('Gato invisível malha.png') - im.save('teste.png') # or any image format +def rasteriza_face(im, p1, p2, p3, color): + lista_x = [p1[0], p2[0], p3[0]] + min_x = int(min(lista_x)) -def inc_line(image, x1, y1, x2, y2, color): + if min_x < 0: + min_x = 0 + + max_x = int(max(lista_x)) + + """0 pro maior, 1 pro menor""" + lista_y = [[0] * (max_x + 1 - min_x), [math.inf] * (max_x + 1 - min_x)] + + inc_line(im, int(p1[0]), int(p1[1]), int(p2[0]), int(p2[1]), color, lista_y, min_x) + inc_line(im, int(p2[0]), int(p2[1]), int(p3[0]), int(p3[1]), color, lista_y, min_x) + inc_line(im, int(p3[0]), int(p3[1]), int(p1[0]), int(p1[1]), color, lista_y, min_x) + + for i in range(max_x + 1 - min_x): + draw_line(im, min_x + i, lista_y[0][i], lista_y[1][i], color) + + +def inc_line(image, x1, y1, x2, y2, color, lista_y, min_x): dx = x2 - x1 dy = y2 - y1 - d = 2 * dy - dx - inc_e = 2 * dy - inc_ne = 2 * (dy - dx) + + fator = max(abs(dx), abs(dy)) + if fator == 0: + if y1 > lista_y[0][int(x1) - min_x]: + lista_y[0][int(x1) - min_x] = int(y1) + if y1 < lista_y[1][int(x1) - min_x]: + lista_y[1][int(x1) - min_x] = int(y1) + image.putpixel((int(x1), int(y1)), color) + return + + inc_x = dx / fator + inc_y = dy / fator + x = x1 y = y1 - if x > 0 and y > 0: - image.putpixel((x, y), color) - while x < x2: - if d <= 0: - d = d + inc_e - x = x + 1 - else: - d = d + inc_ne - x = x + 1 - y = y + 1 - - if x > 0 and y > 0: - image.putpixel((x, y), color) + + while round(x) != x2 or round(y) != y2: + if int(x) >= 0 and int(y) >= 0: + if y > lista_y[0][int(x) - min_x]: + lista_y[0][int(x) - min_x] = int(y) + if y < lista_y[1][int(x) - min_x]: + lista_y[1][int(x) - min_x] = int(y) + image.putpixel((int(x), int(y)), color) + x = x + inc_x + y = y + inc_y + + +def draw_line(image, x, y1, y2, color): + for i in range(int(abs(y1 - y2)) + 1): + image.putpixel((int(x), int(y2 + i)), color) + + +if __name__ == '__main__': + im = Image.new('RGB', (91, 91)) + rasteriza_face(im, [7, 6], [13, 11], [85, 76], ImageColor.getrgb('#8F6332')) + im.save('teste.png') diff --git a/main.py b/main.py index 0df409a..de59f90 100644 --- a/main.py +++ b/main.py @@ -13,7 +13,7 @@ cenario = Cenario() cenario.cena = [mesa, vaso] -cenario.setCamera(e=[21, 10, 15], g=[21, 4.625, 3.85], t=[0, 1, 0]) +cenario.setCamera(e=[21, 12, 15], g=[21, 4.625, 3.85], t=[0, 1, 0]) cenario.setProjecao(fov=60, ratio=1, z_near=0, z_far=15) cenario.translacao(1, 1, 1) cenario.escala(500, 500)