Die utimative 256 Byte Demo. 3D per raycasting, animiert, Fischaugeneffekt, Ambient Occlusion. Whoa.
B0 13 53 BA C8 03 CD 10 88 D8 84 CB 7A 05 F6 E8 C1 E8 07 F6 EB 88 E0 EE B2 C9 E2 EC B1 03 4B 75 E9 68 CE 9F 07 B7 56 DB E3 83 00 58 DF 00 D9 FB DC F9 DF 00 D8 0C D9 FE DE 0C 66 5A 06 55 60 89 1F 8B 05 DF 05 F7 E8 29 17 4F 7B F5 DF 07 66 81 05 CD CC 00 00 D8 CC D9 C0 D8 CE D9 CA D8 CD DC EA D8 CE DE C1 D9 CA 47 7B EB 4F 6B 10 0A DF 19 89 17 02 34 00 FB 73 F6 99 B4 E6 11 D9 E8 15 00 28 CC D5 04 04 46 89 45 FC 61 45 26 88 02 75 AE E4 60 48 75 92 B3 00 8B 29 D3 FD 31 D5 01 2F 00 FB 73 F4 D6 DF 10 51 D3 E9 80 C5 25 8B 10 F7 18 69 E8 00 80 2B 29 79 02 F7 DD D1 ED 01 EA 89 2F 00 FB 73 EC 39 CA 40 72 25 B3 02 7A DF 2B 10 40 2B 10 80 EE 60 6B D2 0D 8B 14 70 02 40 99 2B 2F 79 02 F7 DD 01 EA 8B 2F 00 FB 73 F2 39 CA 59 19 D2 F5 18 D1 10 D1 80 F9 06 73 04 00 D4 75 96 C3 ```
Ich spiel grad mit <canvas>
rum und wollte eine Kurve möglichst fließend durch Punkte führen:
Viele Algorithmen laufen entweder nicht durch jeden Punkt oder setzen voraus, dass man die Pixel selbst malen will, was gerade bei Anti-Aliasing recht mühselig wird. Ich fand dann einen netten Algorithmus von Jean-Yves Quéinec, der Bézier-Splines so hinbiegt, dass eine durchgehende schöne Kurve entsteht. Manchmal gibts noch leicht merkwürdige Kurventeile aber insgesamt funktioniert es gut.
Der Code: smooth_path.js
Die Funktion bekommt ein Array von Punkten und erstellt einen Pfad, den man dann selbst malen kann.
path - Ein Punkte-Array der Form [{x:0, y:0}, {x:10, y:10}, ...]
smoothness - Der Grad der Biegung. 0 glättet nichts, 1.05 macht aus einem Quadrat einen Kreis und auch sonst schöne Kurven, alles andere erzeugt lustige Formen.
joinPath - Falls true
werden die Kurven am Anfang und Ende des Pfades aufeinander ausgerichtet, sodass eine durchgehende Form entsteht, wenn Anfangs- und Endpunkt aufeinander liegen.
c - der canvas
-Kontext
Wer Fehler findet oder Verbesserungen hat, immer her damit :)
Beispiel:
var canvas = document.getElementById('canvas');
var c = canvas.getContext('2d');
var path = [{x: 100, y: 100}, {x: 20, y: 150}, {x: 200, y: 200}, {x: 100, y: 100}];
var smoothness = 1.05;
var joinPath = true;
c.beginPath();
smoothPath(path, smoothness, joinPath, c);
c.stroke();
c.closePath();
Und eine kleine Demo. Per Maus die Punkte setzen, mit dem Slider die smoothness verändern.
1814: London Beer Flood, 9 people were killed when 323,000 imperial gallons (1 468 000 L) of beer in the Meux and Company Brewery burst out of their vats and gushed into the streets.
1919: In the Boston Molasses Disaster, 21 people were killed and 150 were injured when a tank containing as much as 2,300,000 US gal (8 700 000 L) of molasses exploded, sending a wave traveling at approximately 35 mph (56 km/h) through part of Boston, Massachusetts.
2008: Gerald Mellin, a U.K. businessman, committed suicide by tying one end of a rope around his neck and the other to a tree. He then hopped into his Aston Martin DB7 and drove down a main road in Swansea until the rope decapitated him. He supposedly did this as an act of revenge against his ex-wife for leaving him.
2009: Martin Cassidy, a 44-year-old stand-up comedian from Blackburn, England, died from asphyxia caused by breathing in large quantities of laughing gas while watching pornography on his laptop computer, according to a coroner. The coroner ruled a case of "Death by misadventure".
Einen schönen Screencast eines iPhone-Programms zu machen ist umständlicher als ich dachte. Während Steve Jobs seinen Untergebenen einfach befiehlt, einen Display-Anschluss ins Demogerät zu löten, müssen sich schnöde User mit suboptimalen Hacks begnügen. Die Optionen sind, in aufsteigender Videoqualität:
Das ganze Gerät mit einer Kamera abfilmen.
Veency über WLAN + Screencast-Software.
Ein VNC-Server für gejailbreakte (jailbreaked, befreite, geknackte, ...?) iPhones. Empfängt also Maus- und Tastatursignale und liefert ein Bild zurück. Man könnte damit z.B. das iPhone komfortabel in der Schublade lagern und per VNC-Client SMS verschicken. Oder Websiten vom Desktop aus in Mobile-Safari testen. Sicher nützlich, wenn die Schublade sehr weit vom Schreibtisch entfernt ist. Oder man sich jeden Finger brach und nicht mehr tippen, nur noch ganzhändig klicken kann.
ScreenSplitr + Screencast-Programm.
Sendet den Bildschirminhalt per Bonjour an den Rechner. Dazu einfach das Programm starten und in Safari unter Alle Lesezeichen einblenden > Bonjour das iPhone auswählen. Das Bild dann mit einem Screencast-Programm filmen.
Veency über USB + Screencast-Software.
Wie WLAN, nur schneller.
XCode iPhone Simulator + Screencast-Software.
App-Entwickler erstellen so meist ihre schicken Werbe-Screencasts (Classics, Things, Tweetie).
Mein bescheidener Plan bestand darin, ein Programm aus dem AppStore zu filmen. Der iPhone Simulator fällt also raus und übrig bleibt das nächstbeste, VNC über USB. Die folgende Anleitung ist nur ein Weg von vielen, hat bei mir jedoch als einziger funktioniert. Und wird beim nächsten iPhone- oder iTunes-Update, bei unmerkbar veränderten Netzwerkeinstellungen oder Halbmond sicherlich komplett zusammenbrechen. Aber es schadet kaum, es trotzdem zu dokumentieren. Wenigstens, damit ich mich später noch dran erinnere.
Wir brauchen:
Dann:
Falls noch nicht getan, iPhone jailbreaken. Dazu gibts genug Anleitungen. Kurz: redsn0w laden, die passende .ipsw-Datei finden oder laden, den Anweisungen folgen.
Veency installieren. Gibts in Cydia oder Icy.
iTunnel funktioniert nicht auf Anhieb, also: iTunnels iTunesMobileDevice.dll wegschmeißen und dafür Apples nehmen. Die liegt in C:Program FilesCommon FilesAppleMobile Device Supportbin
bzw. C:ProgrammeGemeinsame DateienAppleMobile Device Supportbin
iPhone oder iPod touch anschließen.
iTunnel auf der Commandline starten und den VNC-Port 5900 auf den USB-Anschluß umleiten:
> iTunnel.exe 5900 5900
VNC-Client starten und 127.0.0.1:5900
öffnen. Gibts Fehler, evt. andere Server stoppen (XAMPP, MAMP, ...)
Tadaa! iPhone VNC in brauchbarer Geschwindigkeit. Das ganze dann per Screencast-App filmen.
Ok, doch gar nicht so kompliziert...
Wer jetzt noch einen Weg findet, das ganze direkt unter Mac OS X zu machen, kriegt einen leckeren Keks per Post.
1. für alberne Werte von "gut"
Ich öffne das Fenster und mir entgegen kommt heißere Luft als im Raum ist. Meine Cola ist lauwarm. In der Ferne verbrennen Tauben im Flug. Ich leg mich jetzt in meine mit Eis gefüllte Badewanne und erwarte das Ende aller Tage.