トップ «前の日記(2014-12-07(Sun)) 最新 次の日記(2014-12-10(Wed))» 編集

屑俺日記

僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。


2014-12-09(Tue) また晴れて、少し寒さはひいた

引数

block

Scratch 1.4は定義ブロックがないらしい。また2.0 (Adobe Air必須)で作成したプロジェクトも読めない。
Squeakに引き返す。

亀のプログラムに引数を加えてみた。

| bic |
turtos := [:ang :col :row | bic := Pen new.
bic up;
goto: col@row.
bic down.
1 to: 50 do: [: i| bic go: i*4. bic turn: ang ]].
 
turtos value: 119  value: 200 value: 300.

で、左上から右に200, 下に300の位置を中心に、 ずれた三角形が。

やっと丸が

Squeakで描けた。
原点Oが中央になく左上だったことも、手間取った理由の一つだったり。

ycal := [:x :r :b | ((r * r) - (x * x)) sqrt + b ].
nycal :=  [:x :r :b | ((r * r) - (x * x)) sqrt  negated + b ].
 
dcircle := [:a :b :r |
  circle := Pen new.
  circle up.
  r negated to: r do: [: x | 
    y := ycal value: x value: r value: b.
    circle goto: x+a@y; down ].
  circle up.
  r negated to: r do: [: x | 
    y := nycal value: x value: r value: b.
    circle goto: x+a@y;down ] .]

同心円を書きながらTranscriptに半径を書き出してみたり。

1 to: 300 by: 25 do: [: x | dcircle 
  value: 420 value: 270 value: x
  Transcript show:
    x printString; cr ].

Raspbianでは、一瞬では書けなかった。

渦巻きまでもう少し。

とりあえず控えだけ。

uhalf := [:a :b : r |
  upperhalf := Pen new.
  upperhalf up.
  r negated to: r do: [: x | 
    y := nycal value: x value: r value: b.
    upperhalf goto: x+a@y; down ] ]
 
lhalf := [:a :b : r |
  lowerhalf := Pen new.
  lowerhalf up.
  r negated to: r do: [: x | 
    y := ycal value: x value: r value: b.
    lowerhalf goto: x+a@y; down ] ]
 
uhalf value:200 value:250 value:20.
lhalf value: 190 value: 250 value: 30.
uhalf value:200 value:250 value:40.
lhalf value: 190 value: 250 value: 50.
uhalf value:200 value:250 value:60.
lhalf value: 190 value: 250 value: 70.

元のブロックは一箇所しか違いのない2つのブロック。
なんかおかしいが、まだ。


リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。

index.htmlは ここから。