Kolejna symulacja tym razem z wykorzystaniem cool-retro-term.
ekstaza, geniusz, przebłysk, olśnienie, półprawdy, półśrodki, przemilczenia, zaćmienia, głupstwa, kłamstewka, oszustwa, hultajstwo, wyrachowanie, nieprawda, nieobiektywność, niepodważalna prawda, nierówność, nieomylność, słuszność, perfekcja, krnąbrność ... niegodziwość
28 czerwca 2019
22 czerwca 2019
20 czerwca 2019
2 lipca 2018
xterm - vector graphic display
Lata 70. zaowocowały pojawieniem się komputerów firmy Tektronix oferujących wyświetlanie grafiki wektorowej, co spopularyzowało ich użycie przez inżynierów i projektantów, szczególnie w środowiskach CAD.
By David Gesswein / GNUplot - http://www.pdp8.net/tek4010/tek4010.shtml, CC BY-SA 4.0, Link
Co ciekawe, xterm pozwala na emulowanie tego typu terminali (tek4014/tek4015/tek4012/tek4013/tek4010), umożliwiając wyświetlanie grafiki wektorowej bezpośrednio w konsoli. Dostępna jest emulacja tylko terminali monochromatycznych, a konsola nie pozwala na zamazywania znaku po wciśnięciu Backspace. Być może jest to kwestia, jakiś dodatkowych opcji konfiguracyjnych.
By David Gesswein / GNUplot - http://www.pdp8.net/tek4010/tek4010.shtml, CC BY-SA 4.0, Link
Co ciekawe, xterm pozwala na emulowanie tego typu terminali (tek4014/tek4015/tek4012/tek4013/tek4010), umożliwiając wyświetlanie grafiki wektorowej bezpośrednio w konsoli. Dostępna jest emulacja tylko terminali monochromatycznych, a konsola nie pozwala na zamazywania znaku po wciśnięciu Backspace. Być może jest to kwestia, jakiś dodatkowych opcji konfiguracyjnych.
xterm -tJednym z programów, który korzysta z tych możliwości jest gnuplot. Wszystko co trzeba zrobić to ustawienie w skrypcie terminala jako xterm, vvtek lub tek40xx (zauważyłem też opcję tek410x, ale xterm nie radzi sobie z jej obsługą). Poniżej przerobiony przeze mnie przykład autorstwa Hagen Wierstorf: "Plotting the world revisited". Rożnica, którą ja dostrzegłem to to, że opcja xterm rysuje grafikę w osobnym oknie, vttek, w tym samym w którym uruchomiany jest gnuplot, a tek40xx jest zdecydowanie najszybsze w rysowaniu.
#!/usr/bin/gnuplot
#
# Plotting the world with the natural earth data set (3D)
#
# Original AUTHOR: Hagen Wierstorf
# Original source: http://www.gnuplotting.org/code/world3d_revisited.gnu
#
# http://www.gnuplotting.org/plotting-the-world-revisited/
reset
# set terminal vttek
# set terminal xterm
set terminal tek40xx
unset key; unset border
set tics scale 0
set lmargin screen 0
set bmargin screen 0
set rmargin screen 1
set tmargin screen 1
set format ''
set mapping spherical
set angles degrees
set hidden3d
# Set xy-plane to intersect z axis at -1 to avoid an offset between the lowest z
# value and the plane
set xyplane at -1
set view 56,81
set parametric
set isosamples 25
set urange[0:360]
set vrange[-90:90]
r = 0.99
splot r*cos(v)*cos(u),r*cos(v)*sin(u),r*sin(v) with lines, \
'world_110m.txt' with lines
A prezentuje się to tak:1 lipca 2018
Jupyter VPython 7
Jakoś tak się złożyło, że kiedy ja zabrałem się za bibliotekę VPython w 2016 roku, projekt był właśnie porzucony, a developerzy skupili się na wersji opartej o Jupytera i GlowScript-a. GlowScript-a umożliwia, kompilację kodu python-a do JavaScipt-u. Powstał nawet bardzo fajny serwis trinket.io, który zamyka cały proces tworzenia w przeglądarce. Jako narzędzie edukacyjne, używanie VPythona stało się jeszcze wygodniejsze. Wraz z wersją Ubuntu 18.4, paczka VPythona została usunięta z repozytorium.
Instalacja poszła z pewnymi problemami. Zanim zostanie zainstalowany VPython, trzeba zainstalować paczkę Jupyter (w tej kolejności), jest to spowodowane jakimś bugiem:
Nie obyło się bez małej ingerencji w kod, gdyż domyślnie obliczania ustawień odległości kamery w povexport były zbyt małe. Może coś robiłem nie tak, ostatecznie zmieniłem jedną linijkę.
- http://vpython.org/contents/docs/index.html
- https://pypi.org/project/IVisual/
- http://www.glowscript.org/
- https://pypi.org/project/vpython/
- https://en.wikipedia.org/wiki/VPython
Instalacja poszła z pewnymi problemami. Zanim zostanie zainstalowany VPython, trzeba zainstalować paczkę Jupyter (w tej kolejności), jest to spowodowane jakimś bugiem:
mkdir vpython3 cd vpython3/ virtualenv -p python3 venv source venv/bin/activate pip3 install jupyter pip3 install vpythonW API pojawiły się pewne drobne zmiany, dlatego postanowiłem przepisać standardowy przykład "bouncing ball" na nową wersję. Przy okazji odkryłem na stronie projektu informacje o module povexport do przechwytywania obrazu animacji. Wcześniej przechwytywałem obraz z ekranu (za pomocą PIL) i wycinałem obszar w którym pojawia się okno animacji.
- http://vpython.org/contents/FAQ.html
- https://github.com/BruceSherwood/vpython-jupyter/blob/master/Demos_no_notebook/povexport.py
- https://github.com/BruceSherwood/vpython-jupyter/blob/master/Demos_no_notebook/povexport_example.py
import vpython as vp
import povexport
scene = vp.canvas(title='3D scene',
x=0, y=0, width=400, height=400,
center=vp.vector(0, 0, -0), autoscale=False)
vp.display(scene)
starting_height = 4
floor = vp.box(pos=vp.vector(0, 0, 0), length=4, height=0.5, width=4, color=vp.color.green)
ball = vp.sphere(pos=vp.vector(0, starting_height, 0), radius=1, color=vp.color.red)
ball.velocity = vp.vector(0, -1, 0)
dt = 0.01
frame = 0
while 1:
vp.rate(100)
ball.pos = ball.pos + ball.velocity*dt
if ball.pos.y < ball.radius:
ball.velocity.y = abs(ball.velocity.y)
else:
ball.velocity.y = ball.velocity.y - 9.8*dt
file_name = 'img-%04d.pov' % frame
inclist = ['colors.inc', 'stones.inc', 'woods.inc', 'metals.inc']
povexport.export(scene, filename=file_name, include_list=inclist)
frame += 1
if ball.pos.y > starting_height:
break
Co się zmieniło (dla mnie):- nowy moduł importu (zamiast visual jest vpython)
- parametry przyjmują explicit obiekt vector i nie tolerują trójelementowej krotki
- funkcji display zmieniła nazwę na canvas
Nie obyło się bez małej ingerencji w kod, gdyż domyślnie obliczania ustawień odległości kamery w povexport były zbyt małe. Może coś robiłem nie tak, ostatecznie zmieniłem jedną linijkę.
# ... # cpos = 1.5*displayscale*canv.camera.pos # 1.5 is a not understood fudge factor cpos = 10*displayscale*canv.camera.pos # ...W zasadzie, można pokusić się również o stworzenie skryptu, który edytuje pliki .pov i zmienia linijki z ustawieniami kamery. Zmiana w pliku .pov, którą uzyskałem:
camera {
right <-image_width/image_height, 0, 0> // vpython uses right-handed coord. system
location <0.000000, 0.000000, 173.205081>
up <0.000000, 1.000000, 0.000000>
look_at <0.000000, 0.000000, 0.000000>
angle 60.000000
}
Przerobienie plików z formatu .pov na .png:for i in *.pov; do povray Height=400 Width=400 Display=false Output_File_Type=N $i 2>/dev/null; doneNowa wersja skryptu ([1], [2]) do tworzenia animacji video/gif. Wyeliminowałem straty, które pojawiały się podczas składaniu video z plików .png, przez zastosowania kodeka H.264 i manipulacji "Constant Rate Factor" (uwaga, z ustawieniami CRF trzeba ostrożnie)
#!/bin/sh PALETTE_FILE="tmp_pallete.png" VIDEO_FILE="output_video.mp4" INPUT_FILES="img-%4d.png" OUTPUT_FILE="output.gif" FILTERS="fps=25" ffmpeg -r 100 -i $INPUT_FILES -c:v libx264 -crf 0 -preset veryslow $VIDEO_FILE ffmpeg -v warning -i $VIDEO_FILE -vf "$FILTERS,palettegen" -y $PALETTE_FILE ffmpeg -v warning -i $VIDEO_FILE -i $PALETTE_FILE -lavfi "$FILTERS [x]; [x][1:v] paletteuse" -y $OUTPUT_FILEEfekt końcowy:
27 czerwca 2018
Debian w wersji netboot
Debian posiada dwa ciekawe obrazy, które instalują system w minimalnej konfiguracji: netboot i netinst. Zacząłem od netboot-a (obraz .iso o rozmiarze 45MB, instalacja pakietów z sieci):
Po instalacji system liczy sobie około 400 pakietów. Jest oczywiście apt-get i ssh, ale także perl, Python, które są najwyraźniej potrzebne do uruchomienia skryptów systemowych. Dla wygody musiał jednak doinstalować kilka rzeczy:
Po instalacji system liczy sobie około 400 pakietów. Jest oczywiście apt-get i ssh, ale także perl, Python, które są najwyraźniej potrzebne do uruchomienia skryptów systemowych. Dla wygody musiał jednak doinstalować kilka rzeczy:
- aptitude (jest apt-get, ale to jest wygodniejsze)
- vim (jest nano i vi, ale ciężko mi się z nich korzysta)
- net-tools (jest ip, ale wolę ifconfig)
- gpm (mysz w konsoli, w sumie niepotrzebne, gdy skorzysta się z ssh)
- gcc
- make
- linux-headers
$ sudo vim /etc/fstab /dev/sr0 /media/cdrom0 udf,iso9660 user,noauto,exec 0 0Ostatecznie system w takiej konfiguracji liczy sobie około 1.5 GB.
Filesystem Size Used Avail Use% Mounted on udev 2.0G 0 2.0G 0% /dev tmpfs 395M 5.4M 390M 2% /run /dev/sda1 3.9G 1.5G 2.3G 39% / tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup /dev/sr0 56M 56M 0 100% /media/cdrom0 tmpfs 395M 0 395M 0% /run/user/1000Pewnie można znaleźć coś mniejszego, ale tak wersja (Debian, którego można rozbudować o nowe pakiety), wydaje cię całkiem ciekawą piaskownicą do dalszego eksperymentowania.
24 czerwca 2018
Multivariable Calculus from MIT OpenCourseWare
Trochę na fali ostatniego zamieszania z blokowaniem kilku popularnych kanałów jak Blender i MIT Courses.
Postanowiłem wspomnieć o jednym z nich: "MIT 18.02 Multivariable Calculus, Fall 2007". Genialny kurs jeżeli, ktoś chce uzupełnić/przypomnieć sobie materiał ze studiów. Filmiki, w wypadku następnej blokady przez youtube, zawsze można pobrać, korzystając z linków na stronie kursu:
Postanowiłem wspomnieć o jednym z nich: "MIT 18.02 Multivariable Calculus, Fall 2007". Genialny kurs jeżeli, ktoś chce uzupełnić/przypomnieć sobie materiał ze studiów. Filmiki, w wypadku następnej blokady przez youtube, zawsze można pobrać, korzystając z linków na stronie kursu:
Subskrybuj:
Posty (Atom)





