Olenhan muistanut sanoa, että rajapintasuunnittelussa hyvä periaate on: "tee siitä semmoinen, että lasten kärsivällisyys riittää sen käyttämiseen". No, selvittelen tässä, miten Pythonilla saa 3d-ohjelmia aikaan, ja VPython (http://www.vpython.org/) teki minuun aikamoisen vaikutuksen.
[atehwa@undantag ~]$ python Python 2.7.12 (default, Nov 19 2016, 06:48:10) [GCC 5.4.0 20160609] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> from visual import * /usr/lib/python2.7/dist-packages/visual/materials.py:70: FutureWarning: comparison to `None` will result in an elementwise object comparison in the future. self.__setattr__(key, value) >>> pallo = sphere(pos=(-.5,0,0)) Gtk-Message: Failed to load module "topmenu-gtk-module" >>> for t in range(100): ... rate(50) ... pallo.pos=vector(5-t*.1,sin(t*.08),cos(t*.11)) ... >>>
Eipä ollut suoraan sanoen hirveän vaikeaa saada pallo lentämään. Tämä on aika erilaista kuin esim. tehdä sama PyOpenGL:llä (https://pythonprogramming.net/opengl-rotating-cube-example-pyopengl-tutorial/) tai varsinkin C++:n natiiveilla OpenGL-bindingeilla :) Ainoa, mitä jäin kaipaamaan, on kaksoispuskurointi tai edes joku tapa vihjata, missä vaiheessa näytöllä olevat asiat ovat "valmiina".
Jo pelkistä palloista saa kaikkea kivaa aikaan:
>>> sp = [sphere(pos=(x,y,3*sin(x*.8+y*.11))) for x in range(30) for y in range(30)]