Panda Noir

JavaScript の限界を究めるブログでした。最近はいろんな分野を幅広めに書いてます。

UnitaryJS バージョン 0.0.4 リリース

超久しぶりに真面目なプログラミングの話を…したかった…

宣伝かねて日本語でリリース報告。

変更

  • Vector3D クラスを追加。
  • BaseVectorクラスを追加。このクラスはVectorとVector3Dの親クラスです。
  • removeAllObjects() メソッドCanvasに追加。removeAllObjects()はCanvas.prototype.add()で追加された全てのオブジェクトを削除します。
  • clear()メソッドCanvasに追加。このメソッドは<canvas>をクリアします。
  • canvas.prototype.draw() がNaNを投げられた時に正常に動くよう修正
  • styleプロパティを追加。fontやfillColor、alignといったプロパティをstyleプロパティにまとめました。
  • getEquation()メソッドをLineクラスとCircleクラスに追加。
  • Groupクラスを追加。
  • getCenter()メソッドをTriangleに追加。三角形の重心を返します。
  • rotate()メソッドをPolygonとPointに追加。Polygonを継承するTriangleやQuadrilateralでも使えます。回転角と回転の中心を引数として渡します。

あとCoffeeScriptからTypeScriptへ完全に移行しました。あまり関係ないですが。

Groupクラス

今回の目玉となる追加機能の一つです。様々なUnitaryObjectをまとめることができます。

var myGroup = new Group(new Triangle(/* ... */), new Circle(/* ... */));
canvas.add(myGroup);

グループづけすることでUnitaryObjectの群に意味付けすることができます。そのうち回転と移動もメソッド追加する予定です。そうなるともっと便利になるかと思います。

f:id:panda_noir:20151212002430p:plain

実はGroupを作るきっかけになったのは六芒星です。こういう六芒星を作る時は三角形を2つ組み合わせます。しかし、プログラム上で三角形2つをただ書いてまとめないのは直感に反します。そこで2つの三角形に意味付けするためにGroupを作りました。

rotate()メソッド

rotate(rad, point)

radは回転角をラジアンで指定します。pointは回転の中心となる点です。三角形の場合はpointは省略可能です。省略した場合三角形の重心を中心として回転します。

getEquation()メソッド

getEquation()メソッドを使うと直線や円の方程式を求めることができます。algebra.jsなど代数ライブラリと組み合わせることで様々な処理を行うことができるようになりました。

終わりに

小さいけど重要な変更が多い 0.0.4 です。