Merken

Simplifying Computer Art in Python

Zitierlink des Filmsegments
Embed Code

Automatisierte Medienanalyse

Beta
Erkannte Entitäten
Sprachtranskript
1 of those resonance or
dual dual Catherine showing his what you can do our with by the I think you for coming my name is
Catherine and for 5 years I was a graduate student in physics at the University of Waterloo now the University of Waterloo and in the Faculty
of Science offers a computational science degree it's a cross-departmental degree program that tries to teach people without very much programming experience but a lot of enthusiasm for science how to use the programming to the more efficient at science and during my time as a grad student I was the teaching assistant for the computational physics classes which used python but very very basic I find to I teach Physics concepts such as classical mechanics integrating and differential equations like that and tell you about
and a Python library that I've been writing that was inspired by my time as a teaching assistant so every great software development project begins with the great you the story so for this presentation let's imagine that a user is the freshman mean guy
so the freshman mean guy is a computational science student he has no prior programming experience to the computational physics class that he took and he's also I'm a big fan of Quidditch and the our
midterm for computational physics came up on on this the day after the intramural which finals so he font midterm and now he's looking for some extra credit and it is university professor says OK the midterm remarkably ignored if you can make me and nice pretty animated visualization and you're on a Keplerian planets English so the freshman mean guy goes after to Google and he looks for 3 D drawing
options in Python and the 1st thing that he finds is processing in I find those so has anyone use processing in this audience it's pretty awesome in my humble opinion
and it was created by Ben Fry and series in
2000 1 while they were part of the MIT Media Lab and processing is the name of the projects the ID and the programming language and it's targeted artists in beginners ends in resize the Python programming mode so the freshman mean will accept and the sample code to draw a red spinning cube and he finds this and it's all human readable he doesn't quite
understand as variable scoping so the global word is kind of magic to him but otherwise it makes sense there's 1 method called set up that executes once when the program starts and then there's 1 method called draw that executes and every single time the the frame of the window is trying to
all of this is something that
sensible that looks like this so the freshman mean guys happy
here goes off of processing and influences planets and goes to triple his simulation and put in processing but the 1st thing he encounters when he
tries to imports I is
this important no module and insight 5 and now this makes our freshman mean guy very
upset because he is absolutely sure that he has sci-fi installed on his computer and in his Python environment I mean he's been using it all semester for these
classes so he encounters problems because the Python mode processing is kind of every year over a Java underbelly and so he gives up on that approach and goes back to the
next thing he finds is pi open GL supply open GL is 1 of the pi bond bindings that to open GL it's
like how like to use to duties so he looks up the and sample drawn from spinning Cuban example in private young so the imports look friendly he just has to import the graphics library and then the graphics library utility tools like with the processing demo there's 1 method that is and executes once and on set up it's really confusing to him because he doesn't know what any of these things doing but it only happens once so that's fine you can just ignore it for now then he looks so that's the method that is going to execute every single time and I you should not do this but the method that comes up the most often in really basic open GL tutorials to drop the Q. is to draw 6 quadrilaterals 1 3 side now you should not do this if you're going to any high performance stuff but it's kind of us the simple way of drawing you but to do this you have to draw about for vertex is 1 for each corner of the quadrilateral and this is what the entire code to draw here looks like and then you can create a window using utility tools so our and regardless of the example
it's like OK well this makes sense this is what I would expect it to be drawn and and then he goes off and says well all this others to figure out how to draw spheres with best so he goes to as the OpenGeo group and downloads the open GL cheat sheet now the problem with that is that the open GL cheat sheet is not actually in open GL
cheat sheet it's not a single sheet it is actually a 13 page Adobe PDF documents and the 1st page in 9 point font is everything just about buffers now keep in mind that this is a computational science student and not a
computer science student use only had maybe 3 months at most a programming and he is not even know what a pointer is and to be honest as a user I don't really like to use pointers you're so I can understand his woes so this makes no sense he goes back to
Google he looks again he finds a module called so I think that is also
an open GL binding but it has a modules for windowing in multimedia and it
can produce a the same sorts of animations that I open GL does so the
Internet looks at the code it all seems logical the imports of logical and the code actually update is animation and draw window looks really nice like you can understand what window is to understand how the clock that yes the schedule to update and to understand running is apt this
makes me happy so like OK great and continue with this and let's look at the actual code for drawing q and he
sees exactly the same thing we saw and in
programs and no 1 problem that there's this scary at symbol because he has not been taught decorators and use even wanna try to figure out what that is and again the actual drawing of the cube is the same this makes me
happy alright so the final option
comes across is called the pipeline so just some background and I find it was created by David share in our 2000 to replace which is what they were using to teach computational physics at Carnegie Mellon and it is currently maintained by Bruce Sherwood who was 1 of the original developers of C and it was designed specifically have for helping students learn this through programming and how it works is that all of the actual open GL calls are written in C + + and that it's called the compiled to a module called the visual and then and the actual windowing is based on wx I find and sort of just into this I thought compiled Python modules and then just as an example of how this is used in modern in classes that are going on today and this is sandy pipeline for teaching students Newton's 2nd Law F equals name and if you remember back to your high school physics you might have had a similar I want to this that involves launching beanbags at your classmates but this is a great innovation because it prevents any beanbag watching related injuries
and that basically you create of all you have a velocity to it and you apply the force of gravity to it and then as you you integrate the force velocity or force of gravity on to the velocity and then you can also demonstrate that the additivity of forces by subtracting a drag force so just to give
an example this is what would actually look like on your screen and and you can see what the effect of the ideas no beanbags hurt in the process
alright so the undergrad looks at the code for drawing Red spinning Q and it is 5 lines super nice and it all makes sense to him and on his
Windows laptop it looks like this so based on that the and creates is
visualization and all looks good on his laptop and then he uploads it to the physics
marking server which is running Ubuntu and a few minutes later he gets an e-mail from his proper
and while you still in this euphoric mood that says there
is no Darby and package for wxPython 3 can you please come to my office and show me your animation I know this
is a problem for the undergrad mean because his physics proffers a nice guy but he tends to go on about how great physics and programming is and he really just wants to get back on the sort of field and continue his practice so that ultimately makes an upset so
what I'm trying to communicate in this is the story is that writing really simple graphics libraries that are kind of platform-independent is really hard so what if we had
an open GL helper so the
idea here is the Python established a really nice API so what if we extract that from the C + + code but let some other project at some other pipeline project has already done a lot of hard work and making them OpenGeo cross-platform Python hooks do the heavy lifting and then the final thing we wanna do is obscure the windowing so this is 1 advantage that what has over program jealous that they make the windowing really easy or it's the 1st thing that I have to do if I'm going to build this thing is decide whether which has OpenGeo binding and the use and open GL has support for a lot more of open GL and also currently has support for 3 . 5 while which appears to be kind of a dead project right now and so this is where I made the 1st fatal flaw in creating this library because I think and the reasons I did that were just number 1 it has much better documentation something to keep in mind when I'm writing my own stuff and secondly and I was kind of an open GL new at the start and the extra window and libraries make things really easy alright so so this is the package that I created it's a helper for people entropy would help and it has
a module called objects which
contains geometric primitives and has a modules colony tells that has mathematical primitives for doing transformations and I let's you would not yell interact with open GL and then I used the let's window acts things to handle the display and of a few
just comments on implementation of before I
just go off and shows the indeed gifts and so
converting from C + + the pipeline is not unfortunately is not as easy as just doing a search replace on curly braces and there's several things you can do in C + + that you cannot do in pipeline for example having and multiple methods decorations and the way that I chose to do this and still have the same and functionality is to use the get itemset item and length operators on classes so just as in the previous slide I can initialize vector by passing it 3 zeros or site passing it 3 numbers and nothing which would initially set to 0 or passing it another of pointer to generate I can and pass at any object which has length greater than 2 or 3 and then assigned on the 1st elements in X 2nd elements of Y elements to z now the 2nd fatal flaw that I did was decide to go with have styling on this project and so this project was built back in 2001 where I think I don't even think of it was written back then so that meant that I changed everything slightly so we doesn't like lower case and object names it also doesn't like
single character properties so these are the types of changes I made
and now given that I'm making all these changes to the API how mixture things don't break and since this is a beginner talk I'm just going to
explain how use continuous integration so I use privacy i which is free as in beer but not free as in speech so every time I committed to change to get have it runs a prize for Python 2 . 7 3 3 point 4 it pilots and then run the unit tests now this provides a unique
challenge in this situation which is that and
Travis I runs ahead the server with open GL requires a display to drop to even if you just follow the modules and this is something that I have trouble with because my naive solution is just well let's render to a still image in the we'll just compared the images and that from previous builds to this critical however I'm having trouble with that because it seems like I should be able to use x but that requires the immediate striver need the extra evidence that seemed to work correctly and had systems but I know that should be
and theoretically possible because of the products have done these things and if you done this before please talk to me afterward so my
alternative right now is just to mark G. so and
indeed Mark uh module in Python theory a useful decorator called patch and what that allows you to do is that a new unit test you can just replace any time that and an object is called you replace it with another object so an inbox box will import pick without as GL and then in my catch and just going to replace G. with my own fate and then my own module has all the functional primitives but it does essentially nothing and now this is kind of cheating in a way but I don't I'm not really testing and open GL I'm really just testing that's and my modules all work when they call each other and and that everything imports correctly alright so now that I've talked about some boring implementation details and I'm just going go over some functionality so these are
the geometric primitives implemented there is an error of sphere Q cones
and cylinder ellipsoid brain impairment and then there's
also things called lighten seems so I scene of object and contains information about the camera position and some details about people default lights the lights are a non-renewable objects so you can stick in the scene and then the objects can either be year
drawn into this scene by and passing them to the scene as uh and or sorry the scene as a list of objects you can either the object to that list or you can pass the scene to the objects draw method so just to clarify what I mean and i have a box in a scene I can either render the box
in the scene by the and passing seen as an argument to render or by depending on the box 10 to the scene and setting up the alright just to finalize this is what on the freshman is code would look like in In the would helper so i've in addition everything else just created a default scene with a default camera position and some default lights and you can just create that using the set up and it will automatically add any objects you call after that to that seen you define an update function just as you would with any of the other ones and then you can run the scene and I'm also added a really useful e to utility for generating objects and this is really great if you want to expand your Twitter profile with an animated gifts and that is what it looks like
alright so I started this project last year and after getting really frustrated about
getting visual working with Python 3 the original developers of the Python had the same problem but they decided to take a different approach on which was since they do mostly teaching staff to switch to a larger group of some type environment so they switch from open GL to when but
and they created this JavaScript library called PostScript which allows you to use of the Python syntax in Web L and then and the that created this website called boast about on where you can type in Python code and data have it render on the web however just like of processing in Python node this doesn't give you access to everything else in life and then the other moduli created was called uh the price on Jupiter so they use 0 and Q to actually do the communication and to have seen some back into Jupiter to render energy about and the using the
actual will script Java JavaScript library that the posted on that was for catalog to actually render this and this is what it looks like it's not quite the same because you have to define the scene variables but again it looks very very similar to the Python classic editions alright so after Future
work on it would help so I mean
to fatal flaws of said that the 1st 1 is that I need styling changes and to match modern styling I think this is a really bad idea because the people who use this library all operate out of text books and textbooks don't update as fast as the internet so and it doesn't make
sense to make a library that doesn't match the old API so I think my 1st step is going to be to do that also haven't implemented 3 text which is something that is available in and the Python and then finally I think I need to switch off of the good because it does not have support for Python 3 . 5 and now a few days before the conference on that came to my attention that's as this prior probably could you must very similar things and a year ago when I started this I looked into this prior may have not yet implemented some objects try but now they have so if you're looking for something that is more fully featured and that is probably a lot more stable and another benefit is that implements it works with several different back-ends who works with a tragedy for 5 and and the great and open GL with a little bit of work and usually check out this pride and so this is the sample of rotating cube code that I have found that is the simplest I think for this kind and as you can see it's not quite as dead easy as you might want to leave but it's still very very nice so that's what I would suggest to use instead of my library but just as a final experiment I really wanna try to communicate what sort of wonderful things can happen when you lower the barriers of entry to 3
drawing just like what processing has been able to do and because a lot of us here in the audience are experts in a certain domain but we probably art experts in open GL but we're still humans and humans have eyeballs in humans like looking at things so just as an experiment crazy experiment a few days before the conference I decided what if I feed would help a into the distributed evolutionary algorithms project and use us like image to judge the
similarity but of images generated so the idea is I'm not trying to generate these python logo using that would help her attached to an evolutionary algorithm and so
this is what you see is it's not the greatest because of the artificial limitations like put on and the search space for the evolutionary algorithm that you can see that it eventually learns from just a mix of chaos supplied yellow spheres in the bottom half and blue spheres in the top half
anyway thank you as questions
about our cities they got this kind of wouldn't project have you got in touch with the developed resources or the mailing list because there's going to be some bacteria some renewed activity around the globe now 0 no I
I hadn't and but that's very exciting to here the did you also have a a
at dimensions because that might provide similar functionality is maybe sometimes Indonesia package you repeat with the
generative dimensions so there's some dimensions of relations yeah I went into hiding and it had a lot of craft that I wasn't particularly interested in for game development but perhaps I should that again the moral this not I
think the talks really really interesting and you've used and the kind of come college university student as the target and a one-to-one reinforced for creating a 3 D graphics for somebody might be 7 years old so the
reason I use university undergraduate student is that in Canada where I'm from and we have really terrible um computer science education so even though students I believe personally that students were 7 who can read English or would totally be able to use the Python typically students don't encounter their 1st programming class until the 1st year of university 1 more question do
has been what do you think about the processing by don't move so I'm actually
should just press the home button whatever my finger that a worker on OK so the first one I went over was processing and I find 1 and as I said this didn't really work through the application because your body able to
access the full impact on stock and I've looked into trying to incorporate the Python stock into processing in Python mode and the thing is that heat Java way too much to invest any more time in that then you get the
dual the the
Fakultät <Mathematik>
Physikalismus
t-Test
Vorlesung/Konferenz
Computer
Simulation
Computeranimation
Computerphysik
Physikalismus
Klasse <Mathematik>
t-Test
Computer
Kombinatorische Gruppentheorie
Computeranimation
Gradient
Arithmetisches Mittel
Minimalgrad
Differentialgleichungssystem
Programmbibliothek
Notepad-Computer
Projektive Ebene
Softwareentwickler
Optimierung
Informatik
Baum <Mathematik>
Arithmetisches Mittel
Computerphysik
Fächer <Mathematik>
Klasse <Mathematik>
Besprechung/Interview
t-Test
Optimierung
Informatik
Baum <Mathematik>
Programmiersprache
ATM
Konfiguration <Informatik>
Prozess <Physik>
Reihe
Applet
Winkel
Code
Computeranimation
Konfiguration <Informatik>
Arithmetisches Mittel
Hypermedia
Würfel
ATM
Stichprobenumfang
Mereologie
Vorlesung/Konferenz
Projektive Ebene
Optimierung
IEC-Bus
Benutzeroberfläche
Winkel
Wort <Informatik>
Programmierumgebung
Optimierung
IEC-Bus
Baum <Mathematik>
Framework <Informatik>
Computeranimation
Arithmetisches Mittel
Handzeichnung
Prozess <Physik>
Besprechung/Interview
Baum <Mathematik>
Computersimulation
Computeranimation
Arithmetisches Mittel
ATM
Elektronische Publikation
Prozess <Physik>
Applet
Klasse <Mathematik>
Besprechung/Interview
Programmierumgebung
Modul
Baum <Mathematik>
Computeranimation
Modul
Offene Menge
Demo <Programm>
Benutzeroberfläche
Prozess <Physik>
Winkel
Graphikbibliothek <Programmierung>
Code
Computeranimation
Viereck
Knotenmenge
Offene Menge
Code
Stichprobenumfang
Vorlesung/Konferenz
SIMA-Dialogverfahren
Punkt
Gruppenkeim
t-Test
Extrempunkt
Computeranimation
Homepage
Puffer <Netzplantechnik>
Metropolitan area network
Kugel
Font
Offene Menge
Informatik
Gammafunktion
Informationssystem
Konfiguration <Informatik>
t-Test
Zeiger <Informatik>
Optimierung
Modul
Informatik
Baum <Mathematik>
Computeranimation
Multimedia
Scheduling
Benutzeroberfläche
Multimedia
Winkel
Bildschirmfenster
Mathematische Logik
Modul
Code
Quick-Sort
Computeranimation
Internetworking
Genetische Programmierung
Würfel
Besprechung/Interview
Winkel
Optimierung
Ereignishorizont
Baum <Mathematik>
Code
Computeranimation
Softwareentwickler
Benutzeroberfläche
Computerphysik
Gemeinsamer Speicher
Physikalismus
Klasse <Mathematik>
Besprechung/Interview
t-Test
Systemaufruf
Visuelles System
Gesetz <Physik>
Modul
Systemaufruf
Quick-Sort
Computeranimation
Konfiguration <Informatik>
Offene Menge
DoS-Attacke
Compiler
Optimierung
Softwareentwickler
Bitrate
Zentraleinheit
Modul
Soundverarbeitung
Geschwindigkeit
Metropolitan area network
Gravitation
Addition
Prozess <Physik>
Forcing
Extrempunkt
Luftreibung
Baum <Mathematik>
Computeranimation
Quader
Benutzeroberfläche
Code
Notebook-Computer
Visuelles System
Bitrate
Code
Computeranimation
Notebook-Computer
Physikalismus
Besprechung/Interview
Server
Visualisierung
Vorlesung/Konferenz
Feldgleichung
E-Mail
Computeranimation
Arithmetisches Mittel
Datenfeld
Physikalismus
Graphikbibliothek <Programmierung>
Optimierung
Simulation
Quick-Sort
Computeranimation
Kreisbogen
Portabilität
NP-hartes Problem
Benutzeroberfläche
Elektronischer Programmführer
Zahlenbereich
Bildschirmfenster
Computeranimation
Portabilität
Videokonferenz
Spezialrechner
Offene Menge
Code
Programmbibliothek
Projektive Ebene
Optimierung
Baum <Mathematik>
Objekt <Kategorie>
Benutzeroberfläche
Offene Menge
Interaktives Fernsehen
Graphische Primitive
Primitive <Informatik>
Transformation <Mathematik>
Knotenmenge
Modul
Baum <Mathematik>
Computeranimation
Datensichtgerät
Nichtlinearer Operator
Lineares Funktional
Web Site
Dicke
Pauli-Prinzip
Singularität <Mathematik>
Zwei
Klasse <Mathematik>
Implementierung
Zahlenbereich
Element <Mathematik>
Vektorraum
Computeranimation
Objekt <Kategorie>
Rechenschieber
Quader
Multiplikation
Ablöseblase
Projektive Ebene
Zeiger <Informatik>
Informationssystem
Datenmissbrauch
Punkt
Kategorie <Mathematik>
Desintegration <Mathematik>
Mathematisierung
Kontinuierliche Integration
Einfache Genauigkeit
Sprachsynthese
Computeranimation
Zusammengesetzte Verteilung
Softwaretest
Einheit <Mathematik>
Datentyp
Baum <Mathematik>
Datensichtgerät
Desintegration <Mathematik>
Physikalisches System
Knoten <Statik>
Modul
Computeranimation
Datensichtgerät
Systemprogrammierung
Spezialrechner
Offene Menge
Volumenvisualisierung
Server
Druckertreiber
Baum <Mathematik>
Softwaretest
Lineares Funktional
Komponententest
Quader
Implementierung
Biprodukt
Modul
Physikalische Theorie
Computeranimation
Objekt <Kategorie>
Quader
Patch <Software>
Softwaretest
Rechter Winkel
Offene Menge
Vorlesung/Konferenz
Primitive <Informatik>
E-Mail
Baum <Mathematik>
Modul
Ortsoperator
Ortsoperator
Graphische Primitive
Information
Computeranimation
Objekt <Kategorie>
Demoszene <Programmierung>
Kugel
Parametersystem
Demoszene <Programmierung>
Information
Ellipsoid
Default
Drucksondierung
Fehlermeldung
Kreiszylinder
Addition
Parametersystem
Lineares Funktional
Quader
Ortsoperator
Profil <Aerodynamik>
Mailing-Liste
Extrempunkt
Code
Computeranimation
Eins
Demoszene <Programmierung>
Objekt <Kategorie>
Quader
Twitter <Softwareplattform>
Demoszene <Programmierung>
Default
Baum <Mathematik>
Stab
Datentyp
Gruppenkeim
Projektive Ebene
Softwareentwickler
Programmierumgebung
Baum <Mathematik>
Computeranimation
Telekommunikation
Videospiel
Softwareentwickler
Prozess <Physik>
Applet
Klassische Physik
Online-Katalog
Benutzeroberfläche
Visuelles System
Code
Computeranimation
Keller <Informatik>
Demoszene <Programmierung>
Metropolitan area network
Benutzerbeteiligung
Variable
Code
Datentyp
Programmbibliothek
Skript <Programm>
Notebook-Computer
Versionsverwaltung
Mathematisierung
Programmbibliothek
Baum <Mathematik>
Computeranimation
Internetworking
Expertensystem
Bit
Prozess <Physik>
Matching <Graphentheorie>
Gasströmung
Visuelles System
Code
Quick-Sort
Computeranimation
Objekt <Kategorie>
Bildschirmmaske
Domain-Name
Algorithmus
Offene Menge
Würfel
Röhrenfläche
Front-End <Software>
Stichprobenumfang
Demoszene <Programmierung>
Programmbibliothek
Projektive Ebene
Baum <Mathematik>
Feuchteleitung
Cyberspace
Kugel
Algorithmus
Unordnung
Minimum
Mixed Reality
Inverser Limes
Vorlesung/Konferenz
Ähnlichkeitsgeometrie
Computeranimation
Maschinenschreiben
Mailing-Liste
Projektive Ebene
E-Mail
Computeranimation
Lineares Funktional
Hausdorff-Dimension
Baum <Mathematik>
Computeranimation
Hausdorff-Dimension
Relativitätstheorie
t-Test
Baum <Mathematik>
Computeranimation
Prozess <Physik>
Klasse <Mathematik>
t-Test
Optimierung
Informatik
Baum <Mathematik>
Computeranimation
ATM
Prozess <Physik>
Elektronische Publikation
Singularität <Mathematik>
Applet
Applet
Elektronischer Datenaustausch
Kartesische Koordinaten
Extrempunkt
Computeranimation
Keller <Informatik>
Metropolitan area network
Modul <Datentyp>
Chi-Quadrat-Verteilung
Baum <Mathematik>
Modul
Metropolitan area network
Vorlesung/Konferenz
Betrag <Mathematik>
Baum <Mathematik>
Computeranimation

Metadaten

Formale Metadaten

Titel Simplifying Computer Art in Python
Serientitel EuroPython 2016
Teil 72
Anzahl der Teile 169
Autor Holloway, Catherine
Lizenz CC-Namensnennung - keine kommerzielle Nutzung - Weitergabe unter gleichen Bedingungen 3.0 Unported:
Sie dürfen das Werk bzw. den Inhalt zu jedem legalen und nicht-kommerziellen Zweck nutzen, verändern und in unveränderter oder veränderter Form vervielfältigen, verbreiten und öffentlich zugänglich machen, sofern Sie den Namen des Autors/Rechteinhabers in der von ihm festgelegten Weise nennen und das Werk bzw. diesen Inhalt auch in veränderter Form nur unter den Bedingungen dieser Lizenz weitergeben
DOI 10.5446/21116
Herausgeber EuroPython
Erscheinungsjahr 2016
Sprache Englisch

Inhaltliche Metadaten

Fachgebiet Informatik
Abstract Catherine Holloway - Simplifying Computer Art in Python The Processing project demonstrated that computer art can attract a wider audience to programming. Python has a robust catalog of libraries, including two interfaces to OpenGL. However, none of these libraries replicate Processing’s simplicity when drawing to the screen. I will present my solution to this problem: a re- implementation of VPython’s visual module purely in python called PygletHelper. ----- Processing is a programming language originally developed by the MIT media lab with the goal of allowing artists, educators, and many others develop striking computer generated or assisted projects without requiring deep knowledge of software engineering or computer graphics. Like Processing, Python has become a favourite language of users from diverse backgrounds, such as web development, education, and science. Unlike Processing, python lacks a simple and easy to use library for drawing shapes. Python’s existing libraries for scientific computing and data analysis could be made even more awesome when combined with a simple drawing library. VPython contains a module called visual that established a simple API and convention for drawing shapes, however it was written in C++, prior to the development of pyglet, and thus is not entirely cross- platform. In this talk, I will demonstrate my solution to this problem: a re-implementation of visual purely in Python called PygletHelper. Pyglet, an existing python library, provides a python interface to OpenGL. PygletHelper is built on pyglet but obscures all of the OpenGL calls, such that the user can draw simple geometric shapes to the screen and animate them without needing to know about computer graphics terminology, memory usage, or C data types. I will also show some need visualizations of science and music in my talk, as well as the graphical glitches encountered implementing the library.

Ähnliche Filme

Loading...