Programmera 3D-grafik i Debian Linux/Ubuntu med Visual Python

Får jag välja mellan C++ och Python så väljer jag Python alla dagar i veckan. Snygg syntax, lätt att komma igång, väldigt objektorienterat, lätt att komma ihåg kommandon, god tillgång på drivrutiner och enkelt att flytta mellan Linux, Windows, Raspberry och t.o.m Mac.

Har skrivit en liten exempelkod som simulerar en 6-cylindrig motor (med en märklig vevaxel). Varje cylinder är ett objekt som är skapat av klassen Cylinder.

1. Starta ett terminalfönster, Ctrl-Alt-T.
2. Skapa ett arbetsbibliotek ”mkdir motor”. Du kan markera och kopiera commandot med Ctrl-C. I terminalfönstret klistrar du in med Shift-Ctrl-V.
3. Gå till arbetsbiblioteket ”cd motor”.
4. Ladda ner Python ”sudo apt-get install python”.
5. Installera Idle ”sudo apt-get install idle”.
6. Installera Vpython ”sudo apt-get install python-visual”
och ”sudo apt-get install libgtkglextmm-x11-1.2-dev”
7. Starta Idle ”idle”.
8. Skapa en ny fil med Ctrl-N, klistra in nedanstående kod. Var noga med indragningarna i vänsterkanten eftersom de har en viktig funktion i Python.

# -*- coding: utf-8 -*-
#Just for fun: SixPistonMotor.py
from visual import *

scene.width=1200
scene.height=600
scene.background=(0.5,0.5,0.5)

class classCylinder:
    iNoOfCylinders = 0
    iRodlength = 100

    def __init__(self, zPos):
        self.cylinderFlywheel = cylinder(pos=vector(0,0,zPos), axis=vector(50,0,0), radius=10, color=color.yellow, opacity=0.5)
        self.cylinderPiston = cylinder(pos=vector(0,100,zPos), axis=vector(0,35,0), radius=20, color=color.red)
        self.cylinderRod = cylinder(pos=vector(50,0,zPos), axis=vector(0,classCylinder.iRodlength,0), radius=5, color=color.green)
        classCylinder.iNoOfCylinders += 1

    def writeCylinder(self, iAngle):
        self.cylinderFlywheel.axis.x = 50*cos(radians(iAngle))
        self.cylinderFlywheel.axis.y = 50*sin(radians(iAngle))
        self.cylinderRod.pos = self.cylinderFlywheel.pos + self.cylinderFlywheel.axis
        self.cylinderRod.axis.x = -self.cylinderFlywheel.axis.x
        self.cylinderRod.axis.y = sqrt(classCylinder.iRodlength*classCylinder.iRodlength - self.cylinderFlywheel.axis.x*self.cylinderFlywheel.axis.x)
        self.cylinderPiston.pos = self.cylinderRod.pos+self.cylinderRod.axis

cylinderConnectingRod = cylinder(pos=vector(0,0,0), axis=vector(0,0,250), radius=5, color=color.green)
listCylinders = [classCylinder(0), classCylinder(50), classCylinder(100), classCylinder(150), classCylinder(200), classCylinder(250)]
 
for iRotations in range(0, 100):
    for iAngle in range(0, 360):
        rate(200) #Increase for higher RPM
        for iCylinder in range(0, 6):
            listCylinders[iCylinder].writeCylinder(iAngle + iCylinder*30)

9. Tryck på Ctrl-S och spara som SixPistonMotor.py.
10. Starta programmet med F5.
11. Använd höger musknapp för att rotera.
12. Använd båda musknapparna för att zooma.

6piston   images_products_multipath_python-logo-3

Ditt första C-program i Debian Linux/Ubuntu

Som ny programmerare i Linux blir du kanske inte direkt uppmuntrad när du hittar GNU build system med autoscan, aclocal, acheader, autoconf, automake och make.
Lugn! Börja att skapa ett minimalt program i ett terminalfönster. Saknas något paket så kommer Linux att tala om hur du laddar ner det.

  1. Starta ett terminalfönster (prova Ctrl-Alt-T).
  2. Skapa ett nytt bibliotek ”mkdir bollklubben”.
  3. Gå till biblioteket ”cd bollklubben
  4. Installera editorn Gedit ”sudo apt-get install gedit
  5. Starta editorn ”gedit heja.c”.
  6. Kopiera in följande C-program, spara och avsluta:
    #include <stdio.h>
    int main()
    {
        printf("Heja HBK!\n");
        return 0;
    }
  7. Kompilera och skapa en körbar fil ”gcc -o hbk heja.c”.
  8. Provkör ditt program ”./hbk

heckert_gnu

GNUs logo är skapad av Aurelio A. Heckert <aurium@gmail.com>