ページ

2013年3月25日月曜日

JavaScript で 0パディング

JavaScript では String.format が使えないので整形する時に少し不便。
0パディング(ゼロパディング)をしようとしたときに簡単なやり方があったのでメモ。
0パディング:
n桁に足りない整数値の場合、左を0で埋める操作。
123を6桁にする場合には、000123のようになる。

2013年3月18日月曜日

GRAPES でアステロイドを描く

前回の記事でグラフを描くのに、関数グラフ描画ソフト GRAPES を使ってみた。

このソフトがあまりにもすごいので今回はこれでアステロイド曲線を描いてみる。

2013年3月11日月曜日

[ドリトル] 包絡線 -アステロイド-

この間は、包絡線で放物線を作ってみたので今度は「アステロイド曲線(星芒形(せいぼうけい))」を描いてみる。

アステロイド

アステロイド(astroid)の語義はギリシア語: aster(星の)+ -oid(ようなもの)であり、星芒形(せいぼうけい)、星形とも呼ばれる。アステロイドは四つの尖点を持つ内サイクロイド(四尖点内擺線)であり、四尖点形 (tetracuspid) の名称も古くから用いられている
- Wikipedia

アステロイド曲線は、X軸Y軸との交点間の距離が等しい直線群によって構成される包絡線になる。
つまり、ある長さの棒を壁に立てかけたときに滑って倒れるときに、その棒が描く包絡線がアステロイド曲線になる。

2013年3月10日日曜日

[ドリトル] 包絡線 -放物線- その2

前回の記事では、2直線上を等速で動く点間の直線群が描く包絡線が放物線になるのをやってみた。
放物線を包絡線で描くにはもう一つほかの方法がある。
「直線 L 上の任意の点 Q と L 上にない点 P の間の直線 PQ と、
直線 L上で交わる直線群」の包絡線は放物線になる。


2013年3月5日火曜日

[ドリトル] 包絡線 -放物線-

この間の記事 で与えられた2点を通る直線を引くメソッドを作ったので、 それを使って包絡線を描いてみよう。

包絡線

包絡線(ほうらくせん、envelope)とは、与えられた曲線族と接線を共有する曲線、すなわち与えられた(一般には無限個の)全ての曲線たちに接するような曲線のことである。
- Wikipedia

以下の方法で描画する。
  • 2つの非表示タートルを用意する。
  • 各々を1ステップずつ移動しながら、両者の間に線を引く。
  • 始点はX軸上を左から右へ、終点はY軸上を上から下へ等速で動かす。

2013年3月4日月曜日

[ドリトル] 三角関数で謎な図形

無限ブログの記事で面白いのを見つけた。


aTurtle =Turtle ! create (blue) linecolor 1 linewidth。
aTurtle ! penup 200 200 moveto pendown.
[ | i |
 aTurtle ! 5 forward (90 * sin(i)) rightturn.
] ! 3000 repeat.



なんだこれは???

2013年3月3日日曜日

[ドリトル] 直線延長

指定した2点を通る直線を引く。
  • 2点の前後に延長する長さを指定する。
  • 描画開始点と終了点のX座標を指定する。

2013年3月2日土曜日

[Scala] 無名関数の return の仕組み(その2)

前回の記事 に引き続き、無名関数中の return 文の仕組みについて調べてみる。
今回は 匿名関数を引数に引き渡して深い階層からリターンしてくる場合を見てみよう。
今回の Scala コードはこれ。

  def main(args:Array[String]) {
    println("main start")
    test();
    println("main finish")
  }

  private def test() {
    val f = () => return;
    println("test start")
    test2(f);  
    println("test finish")   // 実行されない。
  }
 
  def test2(f: () => Unit) {
    println("test2 start")
    f();
    println("test2 finish")  // 実行されない。
  }

------------------
main start
test start
test2 start
main finish

test2() 内の 匿名関数実行で test2()、test() を一気に脱出している。

2013年3月1日金曜日

[Scala] 無名関数の return の仕組み

この前の記事で、Scala の無名関数中での return 文の動きについてみてみた。

今回はその仕組みが Java 的にどうなっているのか見てみる。 JD-Plugin の導入には前回失敗したので、デコンパイルには Java Decompiler の GUI 版を使った。
前回使ったコードはこれ。
  def main(args:Array[String]) {
    println("main start")
    test();
    println("main finish")
  }
  
  private def test() {
    val f = () => return;
    println("test start")
    f();
    println("test finish")   // 実行されない。
  }

------------------
main start
test start
main finish