JavaScript und Physik

Gerade kürzlich ist mir die Formelsammlung der Physik in die Hände gefallen und ich hatte irgendwie Lust, ein Pendel zu programmieren. Ich habe früher bereits einen Artikel geschrieben, wie man mit JavaScript physikalische “Experimente” durchführen kann und bin nach wie vor der Überzeugung, dass dies eine ideale Tätigkeit ist, um das Programmieren zu erlernen. Man braucht nicht viel (ein Browser genügt) und man kommt auch sehr schnell zu einem visuellen Ergebnis. In meiner Tätigkeit als Ausbilder habe ich bemerkt, dass viele angehende Programmierer Freude daran haben, etwas zu programmieren, was auch visuell ansprechend ist.

Freier Fall

Für den Anfang gefällt mir eine Formel besonders gut: der freie Fall.

h=\frac{(g \cdot t^2)}{2}
  • h = die Fallstrecke nach der Zeit t
  • = Fallbeschleunigung (auf der Erde etwa \frac{9.81 m}{s^2}
  • t = Zeit in Sekunden

Umsetzung

  • Programmieren werde ich das Beispiel auf plnkr.co, das ist sehr einfach zugänglich und der Funktionsumfang genügt vollkommen.
  • die graphische Umsetzung werde ich mit SVG programmieren. Raphaël eignet sich hierzu sehr gut
  • Am unteren Bildrand soll noch der Boden gezeichnet werden, der Boden soll den Fall abrupt stoppen.

Das Ergebnis

…findet sich hier.

Wie weiter

Es ist schon erstaunlich, was man mit dem Browser heute in sehr kurzer Zeit machen kann und irgendwie macht das direkt Laune ein kleines Spiel zu programmieren.

AngularJS allow invalid values to be set on the model

The default behavior of AngularJS when you have a validator on an input field is to set the model to undefined if the validation failed.  This might be convenient for most cases, but sometimes you want to have the invalid value in your model.

It is really easy to tell Angular to allow invalid values on your model by specifying the option allowInvalid on the ng-model-options.

<input type="email" ng-model="model" ng-model-options="{allowInvalid: true}" />

I plunked something that demonstrates both the default behavior and the option enabled:

http://plnkr.co/edit/OlkS5U?p=info

Have fun
Christian