robsite

In javascript

Smooth path in canvas

Ich spiel grad mit <canvas> rum und wollte eine Kurve möglichst fließend durch Punkte fĂŒhren:

/images/posts/0000/2068/smooth_path_explanation_big.png

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.

· meins, canvas, grafik, javascript, jquery · ★

Canvas Diagramme

Mit Flot und dem jQuery Visualize Plugin kann man schicke Graphen direkt in Browsern malen und manipulieren, die <canvas> und JavaScript kennen. Mit excanvas auch im Internet Explorer.

Flot bekommt seine Daten direkt per JS und bietet interaktive Zoom- und Mousetracking-Features. jQuery Visualize holt sich die Daten direkt aus HTML-Tabellen.

/images/posts/0000/1966/Bild_53_big.png

/images/posts/0000/1972/Bild_52_big.png

· grafik, javascript · ★

FooPlot: Online-Funktionsplotter

Schicker 2D- und 3D-Funktionsplotter, der auf <canvas> und JavaScript basiert. In WebKit-Browsern auch mit Antialiasing.

Da sĂ€mtliche Java-Applets entweder Funktionsplotter oder Datei-Uploader sind, siehts langsam eng aus fĂŒr Java im Browser :>

/images/posts/0000/1942/fooplot_big.png

· javascript, math · ★

Balldroppings Sound Experiment

BÀlle fallen und prallen an gezeichneten Linien ab und erzeugen dabei Töne. Je nach Winkel mit anderer Tonhöhe. Komplett in JavaScript geschrieben.

Das ganze gehört zu Googles Chrome Experiments, in denen Chromes JavaScript/canvas-Performance demonstriert wird.

Derweil bringt Microsoft den IE8 raus, immernoch ohne <canvas>-Support und performancemĂ€ĂŸig weit hinter allen anderen Browsern. WohĂ©.

/images/posts/0000/1438/balldroppings_big.png

· javascript, musik · ★

Music visualization with Canvas

Anscheinend kann man mit JavaScript Flashs computeSpectrum-Funktion aufrufen um an das Audiospektrum zu kommen. Das verbunden mit Canvas ermöglicht schicke Visualisierungen.

Der Blogpost dazu: Music visualization with Canvas and SoundManager2

Benötigt einen canvas-fĂ€higen Browser (alles außer Internet Explorer) und funktioniert durch einen Bug in Flash nur, wenn in keinem anderen Tab ein Youtube-Video lĂ€uft (gilt wahrscheinlich auch fĂŒr andere Flashseiten).

/images/posts/0000/1372/Bild_26_big.png

· flash, gfx, javascript, musik · ★
Mastodon