2009/11/23

プラズマTV

自宅用にプラズマTVを購入した。
Hitachi製WOOO P42-XP03、42型録画機能付プラズマTV。
P42-XP03はフルHDのパネルを採用していて、録画用HDDの容量は250GB。
TV用の台、組み立てと取付け込みで、8月にヨドバシで200000円ちょっとだった。

プラズマの録画機能付きのTVということで、VIERAとWOOOの2択だったが、WOOOになった。
パネルは全く一緒だが、HDDの機能とか、チューナーの数とかそういったものが異なっている。
自分は一度見た番組は基本的にすぐに消してしまうので、HDD容量は重要ではなく、チューナーが2つというのと、価格差を考慮して。

売り場で悩んだのだが、フルHDにするかHDか。
フルHDは1920x1280で、HDだと1280x720。
価格差は30000円程度だったが、売り場にいたHitachiの販売員によれば、人間の眼にはほとんど区別がつかないということだった。
しかも現在の放送機材はフルHDではなく、導入には大金が要るので、すぐには移行しないだろうとも。
ただ今後、フルHDのコンテンツが増えていくことを見越して、フルHDにしておいた。

しばらく使ってみて気になったのが、どうも映像がそんなに綺麗ではないという点。
実家で使っている、WOOOのW37P-HR9000のほうが映像が綺麗だ。
特にパターン状の映像が動くとき、ブロック状のノイズになったりするのが気になる。
たくさんの粒状のものが動いたり、スポーツイベントの客席などが映像として流れるとき気になる。
おそらく映像がパネルに追いついていないからだと思うのだが、正確な理由は不明だ。
W37P-HR9000はフルHDではないので、それが見えてきていないだけだと思っている。

リモコンからはW37P-HR9000についていた、2画面のボタンが消えてしまったのが不満。
かわりに裏番組ボタンがついたが、こんなのは要らないので、2画面用ボタンに戻して欲しい。
それと2画面にした状態から、映像を外部入力に切り替えられないのも不満。
たとえば2画面にしておいて、ケーブルテレビとゲーム機のような映像入力にしようとしても出来ない。
これもW37P-HR9000で出来ていたことが出来なくなってしまった。

それと製品とは全く関係ないが、エコポイントの申請が甚だ面倒だ。
この製品はエコポイント23000ポイント分に相当する。
申請には保証書のコピーと申請書類、領収書の原本が要る。
こういう一連の手続きが必要な上、申請できる物品類のリストからポイント分に相当する物品を選び出さなくてはならない。
リストの中にはSuicaやPasmoもあるが、こちらは1ポイントが1円に相当していない一方で、QUOカードにすると1ポイントが1円になっているのも納得いかないところ。
こんなことはやめて、さっさと値引きしてくれたほうがずっといい。

2009/11/17

Adobe PostScript Driver

psファイルはほとんどのOSであまり使いやすいとは言えないが、Ghostscriptによってpdfファイルを作るときに必要になる。
Windowsでpsファイルを作る方法はいくつかあるが、今回はAdobe純正のツールを使うことにした。
具体的な手順はここに詳しい。
PPDファイルとユニバーサルインストーラを落としてきて、ローカルポートにFILE:を指定すればいい。
これだけでプリンタとしてAcrobat Distillerを指定できるようになる。

使うときは印刷からプリンタとしてDistillerを選べばよいのだが、出力先を指定しなくてはならない。
ここにC:からのフルパスを入れてやると、そこにpsファイルを作ってくれる。
GUIでフォルダ指定したり出来ないのがやや面倒に感じるが、これだけできちんとしたpsが作れる。
ちなみにリンク先のフォントに関する設定は現状だと何も要らない。
psはps2pdfで問題なくpdfに変わってくれて、きちんとベクトルフォントが適用される。
これで好きなようにPDFファイルを作ることが出来るようになる。

2009/11/15

ROOTの時間

ROOTで時間を扱うためには、UNIX timeに変換する必要がある。
例えば2009年11月15日00時00分00秒なら、

TDatime T0(2009, 11, 15, 00, 00, 00);

と書いてやると、T0という構造体に時間を入れることが出来る。
ただしこれをROOTの時間に直そうとすると、2009年11月15日にはならない。
これはなぜかというと、UNIX時間が1970年1月1日00時00分00秒からの経過秒数であるのに対し、ROOT時間は1995年1月1日00時00分00秒からの経過秒数になっているためだ。
従ってROOTで時間を使うときは、この点に注意する必要がある。

ROOTのUsers Guideの9章Graphics and Graphical User InterfaceのAxis with Time Unitsにtime offsetの3つの解決策が示されている。
1つ目は構造体にSetTimeOffsetを使うという方法。
gStyleのSetTimeOffsetを使って時間の構造体を変換すれば、このオフセット込みで計算してくれる。
2つ目はSetTimeOffsetを軸に適用すればいいというもの。
3つ目はSetTimeFormatを軸に適用するというもの。

もっと簡単にやるには、UNIX timeに変換した後で、788918400秒を引いてやればいい。
これは1995年1月1日00時00分00秒のUNIX timeで、実際には同じ結果になる。
上の例だと、

Int_t x0 = T0.Convert() - 788918400;

と書くと、x0にROOT時間の秒が入る。
グラフに使うための軸は、

TH1F *frame = new TH1F("frame", "", 9, x0, x1);
frame->GetXaxis()->SetTimeDisplay(1);
frame->GetXaxis()->SetTimeFormat("%y\/%m\/%d");

としてやればいい。

2009/11/01

ROOTでグラフに円を書く

ROOTで円を表示させるいいやり方を、かなり昔から探していた。
TF1を使うなら、1変数関数でなくてはならない。
円は式が2つになるうえに、ルートの中がゼロに近づいて行くので、TF1で無理やり表示させようとしても、ルートの中がゼロに近くなる領域では表示してくれない。

ROOTには他に楕円を表示させる、TEllipseというのがある。
しかしこれはグラフ用ではなく、なぜか中が塗りつぶされてしまう。
中の色は指定できるが、塗りつぶしなしのオプションが見つからない。
TEllipseで指定するのは中心のxとy、x方向の半径とy方向の半径。

TEllipse *e = new TEllipse(100, 100, 20, 20);
e->Draw();
e->SetFillColor(2);

もう1つ似たやつで、TArcというのも居る。
これも同様に中が白くなり、透明に出来ない。
TArcは中心のx、yと半径、開始の角度と終了の角度を指定する。

TArc *a = new TArc(50., 50., 10., 45., 315.);
a->Draw();

このように探しているものと似たようなものはあるのだが、パラメータ表示になるような関数をどうグラフに書けばよいのか、そのものずばりの答えになるようなものは見つからなかった。
自分が達した最終的な結論は、円はTGraphを使って書くほかない、というもの。
以下のように、まず角度の変数を十分細かく用意し、それを使って各点のx座標とy座標を計算させて結ぶ。
360度に対して1000個も点を打ってやれば、十分に線になる。
このようにすることで、パラメータ表示させるような関数、たとえばサイクロイドやアステロイドなどもグラフに書かせることが出来る。
ちなみに以下ではマニュアルに沿って配列を使っているが、配列が大きくなると計算時にメモリに大量にバッファするようになるので、SetPointを使うほうがいいだろう。

Double_t min = 0;
Double_t max = TMath::Pi()*2;
Double_t theta[1000], x[1000], y[1000];
for (Int_t i=0; i<1000; i++) {
theta[i] = max/1000.*i;
x[i] = 160 + 15*cos(theta[i]);
y[i] = 120 + 15*sin(theta[i]);
}
TGraph *g = new TGraph(1000, x, y);
g->Draw();