TKYM's profile※ 画面は開発中のものですPhotosBlogListsMore ![]() | Help |
|
November 01 公認けん玉 大空日本けん玉協会公認けん玉というものがある。
級や段があって、認定を受けるためには公認のけん玉を使わないといけない。
そのけん玉は、何種類かあるらしいのだが、あまり売っていない。
大きな玩具店をみると、運が良ければTK16masterがあり、さらに運がよいと色を選べる。
トイザラスとユザワヤ(大きい店舗)には赤だけあった。
東京近郊の東急ハンズには、複数色、
新宿のハンズには「大空」もあった(複数色)。
単一色しかない店の場合、公認けん玉の隣におもちゃのけん玉もあったりするので注意。
それと、ロフトは扱っている店をまだ見ていない。(2009/11/1) 今回、塗装のないものと、赤を購入した。
最近はまってきていたので、何種類かほしくなっていたが
tk16masterで灯台が決まらないという言い訳だけはやめようと、そこまでは我慢した。
結局、どのけん玉を使ってもできる技はできて、できない技はできなかった。
もった感じは、tk16masterより軽い。
ものすごい勢いで玉がぼこぼこになっていく。
うぐいすできた October 29 天気の良い日には手賀沼手賀沼は千葉県北西部の沼。
昔は汚かったが、今は浄化が進み、遊歩道が整備され、公園や楽しめる施設も増えてきて、にぎわっている。
アクセス
常磐線我孫子駅より徒歩15分ぐらい
おすすめ
楽しみ方はいろいろ、上の施設を拠点に、散策してみてはどうだろう。 October 25 タナトノート図書館で「タナト」という文字が目に入り、借りた。
600ページ以上ある分厚い本だ。
死が怖いもので、このような大作を夜な夜な読んでいては
気がおかしくなってしまうかもしれないという懸念もあったが、
それに興味が勝ってしまったため読み始めることになった。
タナトノートという言葉は、死後世界の航行者を意味していて、
麻酔によって人工的に臨死状態にさせ、死後世界を探検する。
全体的に読みやすい内容で、憂鬱ながらも所々で笑い、すらすらと読んでいけた。
最初のほうで記憶に残った表現がある。
何といっても、死はこれなのだと思う。恐ろしいものだ。
そして、皆、そのことを普段は忘れて生きていける。
しかし、いつかは向き合わねばならない。
そこで、どうしていくか。 September 18 HSPでオセロHSPでとりあえずオセロでも。 実行にはHSPが必要です。 全体的な構造としては、 x, y 座標に置いた場合裏返せる個数を取得する関数 #global repeat 背景描画、コイン描画、入力チェック loop *s_なんたら は、サブルーチンで、背景・コイン・クリック時がある。
-------- #defcfunc という関数の定義は、戻り値を返せるが、この値を利用しないとエラーになってしまう。 June 23 if(0<i<100) という書き方 (C#)もちろん、 if(0<i<100) なんていう書き方は不可能である。 1: struct keisan 2: {3: public int i; 4: 5: List<range> condition; 6: 7: //tostring 8: public override string ToString() 9: {10: return "" + i; 11: } 12: 13: //コンストラクタ 14: public keisan(int i) { 15: this.i = i; 16: condition = new List<range>(); 17: } 18: 19: //新しく追加するとき 20: public keisan(keisan ks) { 21: this.i = ks.i; 22: condition = new List<range>(); 23: 24: foreach(range r in ks.condition){ 25: condition.Add(r); 26: } 27: } 28: 29: //bool へのキャスト 30: public static implicit operator bool(keisan ks){ 31: foreach(range r in ks.condition){ 32: if(r.min > ks.i || r.max < ks.i){ 33: return false; 34: } 35: }36: return true; 37: } 38: 39: //int へのキャスト 40: public static implicit operator int(keisan ks) { 41: return ks.i; 42: } 43: 44: //int からのキャスト 45: public static implicit operator keisan(int i) 46: {47: return new keisan(i); 48: } 49: 50: //オペレーター 51: 52: 53: //< 54: public static keisan low(int i, keisan ks) { 55: keisan result = new keisan(ks); 56: result.condition.Add(new range(i, int.MaxValue)); 57: 58: return result; 59: }60: public static keisan high(int i, keisan ks) 61: {62: keisan result = new keisan(ks); 63: result.condition.Add(new range(int.MinValue, i)); 64: 65: return result; 66: } 67: 68: public static keisan operator <(keisan ks, int i) { 69: return high(i, ks); 70: }71: public static keisan operator <(int i, keisan ks){ 72: return low(i, ks); 73: } 74: 75: //> 76: public static keisan operator >(int i, keisan ks){ 77: return high(i, ks); 78: }79: public static keisan operator >(keisan ks, int i){ 80: return low(i, ks); 81: } 82: 83: //<= 84: //>= 85: } 86: 87: struct range{ 88: public range(int min, int max) { 89: this.min = min; 90: this.max = max; 91: } 92: 93: public int min; 94: public int max; 95: }int 型の値と、条件を保持する構造体を作ってみて、
細かいことは考えていないが、 1: keisan k = 100; 2: 3: if (200 > k > 0) { 4: MessageBox.Show(""+k); 5: }
と、書くことができた。 February 17 Destroy で 完全消去 Destroy というソフトがある。 安全にディスク消去できるソフトらしい。 このソフトを使ってディスクを消去したいのだが、 USB まで認識させるためには、ドライバを組み込まねばならない。 そして、 FDD がないので余計ややこしい。 自分の通った道をメモしておく。 もっと簡単な方法はきっとある。
あまりこういう面倒なことはしたくない。 January 17 数式をWebに貼る方法January 02 曲線同士の交点を求めたベジエ曲線同士の交点を、(自分的にはついに)求められた。 December 07 ベジエ曲線の分割曲線を t : 1-t に分割したければ、 制御点 1-2, 2-3, 3-4 を t : 1-t に分割し、 static public PointF[,] BezierCut(PointF[] points, float t){ PointF[,] result = new PointF[2, points.Length]; //stでくぎられる点を見つける //分割前の P0, Pn が分割後の L0, Rn になる result[0,0] = points[0]; result[1,points.Length-1] = points[points.Length - 1]; PointF[] prev = points; for (int i = 1; i < points.Length; i++) { PointF[] tmp = new PointF[points.Length - i]; for (int j = 0; j < points.Length - i; j++) { //tmp[j] - tmp[j+1] の間を st で区切る tmp[j].X = prev[j].X + (prev[j + 1].X - prev[j].X) * t; tmp[j].Y = prev[j].Y + (prev[j + 1].Y - prev[j].Y) * t; } result[0,i].X = tmp[0].X; result[0,i].Y = tmp[0].Y; result[1,points.Length - i - 1].X = tmp[tmp.Length - 1].X; result[1,points.Length - i - 1].Y = tmp[tmp.Length - 1].Y; prev = tmp; //算出したものを保持 } return result; } このシリーズの他記事 http://prog-city.spaces.live.com/lists/cns!E5379F11D9E8BB3F!1047/
December 01 C#でベジエ曲線(5) ベジエ曲線同士の交点どのようにして曲線同士の交点を求めるか、全くわからずに悩んでいたが、直線との交点を求める方法を応用すれば可能であることに気づいた。 曲線同士が接しているということは、その凸包も接していることになる。 なんとなく思いついた流れ 交点を求める( 曲線A, 曲線B){ if( 2つの凸包が接していない ) return null; do{ if( ClipA.length == 0 || ClipB.length == 0 ) return null; for( ClipA.length 回 ){ November 27 Silverlightでは右クリックが使えない。よくよく考えてみれば、ブラウザ上で動くわけだから右クリックすると "Silverlight について" などと表示されるはずで、仕方ないことである。
それを知るために、単純にGoogle 検索したのだが、
silverlight + 右クリックの検索では、目的のコンテンツを得ることは出来ない。
「~を右クリックして、メニューから~を選び・・・」
などと、操作説明が大量にヒットして邪魔をする。
そして無理にとった手法がこれ
silverlight "右クリック" 処理 -"右クリックし" -"右クリックする" -"右クリックをする" -"右クリックメニュー" -"右クリックすると"-"右クリックすれば" -"右クリックをすると"
結局見つけたのはMSDN の1ページ
Silverlight 2 は現在、マウスの右ボタン イベントをサポートしていません。Silverlight 2 は、本質的にブラウザでホストされるプラグインであり、そのホスト ブラウザのプラグイン モデルに依存するので、入力シナリオを特定するのは困難です。マウスの右クリックのキャプチャは、その一例です。
検索って難しい November 25 凸包を得る板の上に幾つも釘を打ち、外周から輪ゴムをかけて、ゴムと接している釘で構成される多角形。 まず、端にある点を基準として、それに対する角度の順に点を並び替える。
//凸包を得る November 07 Yahooブリーフケース有料化ヤフーは、オンラインストレージサービス「Yahoo!ブリーフケース」を12月1日からYahoo!プレミアム会員およびYahoo! BB会員専用のサービスに変更する。無料の一般会員が保存したファイルについては、2009年2月2日にすべて削除する。 (internet.watch) http://internet.watch.impress.co.jp/cda/news/2008/11/06/21434.html
Skydrive が出来てからはずっと使っていなかった。 無料会員のファイルは 2009/2/2 に全て消されてしまうようなので、早めに落としておいた方がよさそう。 今後は、 Gmail のストレージか Skydrive だろうか。 November 04 鍵盤を3D表示今、 鍵盤を XAML の 3D で表示したいと思っている。
XAML は 最近の UI を記述するためのマークアップ言語である。
その XAML に DirectXほどではないが ちょっとした3D を表示する機能がある。
しかし、XAML を直接記述しようと思っても、 3角形の座標を 羅列して形を作らねばならないから、
気の遠くなる作業となる。
ZAM3D というソフトがあるらしいが 有償なのですぐに購入というわけには行かない。
そこで、手持ちの 古い Shade 6 を取り出し、dxf を吐かせ、
どこかで公開されていたコンバーターを落としてきて、変換させてみることにした。
その前に、モデリングが必要である。
実は過去に挫折しているので上手く行かないような気がする。
何とかそれっぽい白い鍵盤を用意した。
これを、XAMLに変換してみると・・・。
こんな感じ。とても使えそうにない。
そしてもう一度反省を込めて作り直した。 Shade での状態。
自分としては上手く言ったように見えたが、この段階で、眠くてなぜか形状データがなくなってしまった。
ちなみに、画像はないが、上図の鍵盤の1つを変換したところ、上手く変換されていた。 やっぱり、 Shade はやめて、スクリプトか何かで自動的に生成しようと思う。
ところで、XAML プログラミング WPFアプリケーションの概要と開発 という本を買ったが、
WPF の本のコーナーになく、「ひょっとしたら・・・」と思い、別の棚を見たらあった。
XML の本の棚に。 October 15 HSP で作る少しキレイかもしれない画面グラデーションっぽい画像を生成しようと、HSPをいじっていた。 ソース: sr = 200; 中心の色(開始色) sdistance = 100;開始色-中間色 の距離 r = 60; 中間色 edistance = 200;中間色-終了色 の距離 er = 20; 終了色 cx = 150; 開始色となる座標 wid = 520; 画面サイズ redraw 0; 再描画を一時無効化する if dist <= sdistance { }else : if dist < sdistance + edistance { buffer 2, 500, 80 ;白い見えない画面を作る ;それをメインの画面に配合する pos 20, 320 redraw 1; 描画有効に戻す
pset という命令で1ドットずつ色をつけているので、時間はかかる。 HSPのサイト : http://hsp.tv/ September 23 レーシック手術日の朝は7:30に起床することにしていたが、早めに目覚めた。
が、全く寝られないほどではない、その程度の緊張感だった。
ギリギリまで 「やめとけ、レーシック」みたいなページばかり見ていた。
当日キャンセルは原則無理と書いてあった。
最初の部屋 終わると、目の前が白くなったが、全く見えないわけではない。 2番目の部屋 またレーザーを照射される。 「終わりです」と言われて立ち上がり、回復室に連れて行かれる。 回復室 最後のチェック・解散 帰りの状況 これから すべきか August 15 レーシックの事前検査手術が可能かどうか調べにいってきた。(ここまでは無料)
結論は、可能。 ただ、消耗品であるらしい角膜の厚さが1回分+a しかないため、
極わずかな確率での失敗時に再手術ができないかもしれないとのこと。 視力1.0獲得率は98%で、だいたい0.6くらいあればいいと思っているので成功率は 98%+少し。 この確率は、信頼すべきものだと思うが、勇気は要る
眼鏡屋でフレームを選ぶためにも。(まだかけるつもり) 高い特殊レンズ代を省略して安く買うためにも。 成功すればプールサイドで躓かない。
成功すれば免許も裸眼で取れる。 視野が広がる(最近のメガネはレンズ小さいから。)
シャンプーとリンスを間違えない。
メガネをなくしても匍匐前進は不要。
悲惨な事故(踏み潰されたり)で大事なメガネを失わずに済む。 裸眼時の目は3でもεでもない。 夢のような生活に戻れるらしい、18万くらい & 98+a% で。
今は昔、最初メガネをかけるときは、 それまでの数週間、寝る前にミドリンとかいう目薬を点眼したりしてメガネにならぬよう粘った。 結局、周りの人より早くメガネをかけ、「メガネくん」とお決まりの名前をもらいながら、 「どうしようもないのか」と、しばらくは我慢の日々だった。 それが今日はなんという技術の進歩だ。このまま行けば不老不死も夢じゃないかと思えるほどだ。 でもやはり少し怖いとは思う。 検査は結構長かった。 帰りは目薬の効果でまぶしい。夕日がまぶしくてお化けになったかと思った。 さて、残るは最後の決断である。 August 06 Nicovolume 0.2521. ちょっとした機能追加をしてみた。 時間が来ると、下のような画面が表示され、スライダーが左右に動きます。 2. IE の自動起動が不要な場合のため、インストーラで ブラウザ拡張の有無を選択できるようにしました。 3. Vista 環境で、 互換モード を使用する必要がなくなりました。 * 古いバージョンを消してから新しいバージョンをインストールする必要があります。
Nicovolume の記事
Vista でのマスタボリュームコントロール についての 参考文献 http://msdn.microsoft.com/en-us/library/ms679161(VS.85).aspx August 01 フーリエ級数フーリエ何とかというものがさっぱりわからないので、教科書に書いてある次のような数式をもとに計算させてみた。 周期Tの周期関数 f(t) が下のように展開される。 OnPaint に直接適当にコードを書く。
public int n;
public double func(double d) {
return ((int)Math.Abs(d) % 50 < 25) ? 0 : 50;
}
public double func_a(double d) {
return func(d) * Math.Cos(n * 2 * Math.PI / 50 * d);
}
public double func_b(double d)
{
return func(d) * Math.Sin(n * 2 * Math.PI / 50 * d);
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
int x;
double y = 0;
Point prev = new Point(0, 0);
for (x = 0; x < 300; x++) {
double a0 = 1.0 / 50.0 * mymath.simpson(-25, 25, 0.001, func);
y = a0;
for (n = 0; n < 10; n++) {
double an = 2.0 / 50.0 * mymath.simpson(-25, 25, 0.01, func_a);
double bn = 2.0 / 50.0 * mymath.simpson(-25, 25, 0.01, func_b);
y += an * Math.Cos(n * 2 * Math.PI / 50 * x);
y += bn * Math.Sin(n * 2 * Math.PI / 50 * x);
}
e.Graphics.DrawLine(Pens.Black, new Point(x, 200 - (int)y), prev);
prev = new Point(x, 200 - (int)y);
}
}* simpson関数はこちら すると、こんな感じに表示された。 ループすればするほど元の四角いグラフに近づいている。 シンプソンの公式シンプソンの公式のプログラムを汎用的にしておく。 シンプソンの公式は、関数を二次曲線で近似させて積分する方法。 関数f の、st~ed の間を、刻み幅h以内で積分する。
//シンプソンの公式で積分する
このシリーズの他記事 |
|
|