iPadをもって大体一ヶ月。アプリ購入や、自炊などでいろいろ本を入れてみた感想を種類別に記します。
1.iPad用に作成された電子書籍。
例:元素図鑑、Alice in Wonderland、Design Classics
これらは、iPadの性能をフルに生かし素晴らしい出来です。例えるならハリーポッターに出てくる動く新聞。紙を凌駕しています。才気あるクリエイターは作成に挑戦して欲しいです。
2.フォントが内包された本。
いわゆる電子書籍です。青空文庫など。論文のpdfをi文庫にHDに入れて読んだりもしています。読みやすいです。
3.フォントが内包されていない画像形式の本。
元サイズがiPadより大きいものは一画面一ページでは文字が霞んで読みにくくなります(scan時の設定と讀人に依存)。次のバージョンのiPadでは解像度がよくなって改善されるでしょう。ある程度のフォントの霞みなら、画面を遠くに離すことにより、脳に補完させ、ストレスなしに読むことが可能です。
3-1.雑誌
雑誌はたいてい元サイズがiPadより大きいですが、雑誌はトピックを選んで読むものなので、気になる記事だけ拡大して読めばOKです。Newsweek日本版を購読し始めましたが、快適です。
3-2.漫画
白黒が鮮明で紙より綺麗です。大判の漫画を入れることはまだ試していません。早く各漫画雑誌から好きな漫画だけを購入でき、毎週届けてくれる時代になって欲しいです。
3-3.小説
元が文庫本だと問題ないです。
3-4.技術書
元サイズが大判なものが多く文字が霞むので通読には多少ストレスを感じます。(同居人は全く問題ないといっています。)必要な箇所だけ読むなら問題ないと思います。
2010年09月01日
2010年08月19日
文字列の分割 C++
C++にはsplit関数がないので文字列を分割するのが面倒です。
Cにあるstrtok関数を使うのも面倒なので、検索関数findと部分列取り出し関数substrを用いて、文字列を二つに分けるサンプルコードを書いてみました。サンプルコードでは絶対パスの文字列を分割し、ファイル名を取り出しています。
Cにあるstrtok関数を使うのも面倒なので、検索関数findと部分列取り出し関数substrを用いて、文字列を二つに分けるサンプルコードを書いてみました。サンプルコードでは絶対パスの文字列を分割し、ファイル名を取り出しています。
string inputfilename="a\\b\\c\\ddd.txt";
int div;//分割ポイント
div=inputfilename.find_last_of("\\")+1;//+1は次の文字列を\\の後からはじめさせるため。
string firststr,laststr;
laststr=inputfilename.substr(div);//ddd.txt divから最後までを取り出す。
firststr=inputfilename.substr(0,div);// a\\b\\c\\ 最初からdiv前まで取り出す。
2010年08月04日
おひさしぶりです。
五月、六月は大阪に出張に行ってきました。まいにちまいにちC++のコード書いてました。ご飯が安くておいしかったのがいい思い出です。
昨日iPadを購入しました。元素図鑑を早速ダウンロードしたのですが、かなりいい感じです。そもそも読書用に買ったので、i文庫HDもダウンロードしました。ドグラマグラがプレインストールされているのが素敵です。
そろそろまた引越しをするので、どんどん持っている本を電子化しiPadに入れていく所存です。これでやっと重いPC、重い本を持ち運ぶ苦しみから解放される…。
昨日iPadを購入しました。元素図鑑を早速ダウンロードしたのですが、かなりいい感じです。そもそも読書用に買ったので、i文庫HDもダウンロードしました。ドグラマグラがプレインストールされているのが素敵です。
そろそろまた引越しをするので、どんどん持っている本を電子化しiPadに入れていく所存です。これでやっと重いPC、重い本を持ち運ぶ苦しみから解放される…。
2010年05月24日
using namespace stdの位置
関数の引数に*string を使うところがあって、コンパイルエラーが出ていた。
using namespace stdの位置を使う前に移動させると、通るようになった。
ググって調べてみたのですがusing namespace std;は名前空間の汚染になるので使わない方が良いみたいですね。
using namespace stdの位置を使う前に移動させると、通るようになった。
ググって調べてみたのですがusing namespace std;は名前空間の汚染になるので使わない方が良いみたいですね。
2010年05月20日
C++ stringクラスの使いかた サンプルコード
再びメモ
string str1("hello");
string str2("world");
string str3;
cin>>str3;
//自然な入力ができる。
string str;
str=str1+str3+str2;
//文字列の足し算、等号ができる。
cout<<str<<endl;
//出力ができる。
char c[80];
strcpy(c,str.c_str());
//charに直せる。
cout<<c;
string str1("hello");
string str2("world");
string str3;
cin>>str3;
//自然な入力ができる。
string str;
str=str1+str3+str2;
//文字列の足し算、等号ができる。
cout<<str<<endl;
//出力ができる。
char c[80];
strcpy(c,str.c_str());
//charに直せる。
cout<<c;
タグ:C++
C++ ファイルバイナリ出力 サンプルコード memcpyの使用法。
C++においてfloatをバイナリ入出力することが必要になり、学習したのでメモ。
//////////////////////////////////////////////////////
float f;
f=-3.14/100;
cout<<f<<endl;
char fw[4];
memcpy(fw,&f,sizeof(float));
//char fw[]<float <f
ofstream ofs( "floatio.bin" ,ios::out|ios::binary) ;//output
ofs.write(fw,sizeof(float));
ofs.close();
//file<<char fw[]
char fr[4];
ifstream ifs( "floatio.bin" ,ios::in|ios::binary) ;
ifs.read(fr,sizeof(float));
//char fr[]<<file
float f2;
memcpy(&f2,fr,sizeof(float));
//float f2<<char fr[]
cout<<f2<<endl;
float f3;
memcpy(&f3,&f2,sizeof(float));
//float f3 << float f2;
cout<<f3;
///////////////////////////////////////////
出力結果
-0.0314
-0.0314
-0.0314
//////////////////////////////////////////////////////
float f;
f=-3.14/100;
cout<<f<<endl;
char fw[4];
memcpy(fw,&f,sizeof(float));
//char fw[]<float <f
ofstream ofs( "floatio.bin" ,ios::out|ios::binary) ;//output
ofs.write(fw,sizeof(float));
ofs.close();
//file<<char fw[]
char fr[4];
ifstream ifs( "floatio.bin" ,ios::in|ios::binary) ;
ifs.read(fr,sizeof(float));
//char fr[]<<file
float f2;
memcpy(&f2,fr,sizeof(float));
//float f2<<char fr[]
cout<<f2<<endl;
float f3;
memcpy(&f3,&f2,sizeof(float));
//float f3 << float f2;
cout<<f3;
///////////////////////////////////////////
出力結果
-0.0314
-0.0314
-0.0314
2010年05月14日
この年になってもまだオイラー角に悩まされる。
ベクトルの変換、座標軸の変換、元から先、先から元の4種類あってどれがどれか、物理をずっとやってたのにまだ混乱します。
今回の仕事では角度がいつもと逆だったり、ヨーロールピッチだったり。
右手系から左手系へと移っていたら、公式通りいかないので、わからなくなったら原理に戻ってノートを書きました。
だいたい物理学、学部一、二回生向けです。
というわけでまとめノート。
e_iたちを元の基準ベクトル(面倒なので以下太字にしない)、これをe'_i→e''_i→e'''_iと回転することを考えます。
e'_j=R_1^{ji} e_i
e''_j=R_2^{ji} e'_i
e'''_j=R_3^{ji} e'_i
と変換されるとする。
すると
e'''_j=e_i (R_3 R_2 R_1) ^{ij}
両辺にv_jをかけてjで和をとって
v_j e'''_j=e_i (R_3 R_2 R_1) ^{ij} v_j
つまり、先でvのベクトルは前の座標では
(R_3 R_2 R_1)vであったことがわかります。
今回の仕事では角度がいつもと逆だったり、ヨーロールピッチだったり。
右手系から左手系へと移っていたら、公式通りいかないので、わからなくなったら原理に戻ってノートを書きました。
だいたい物理学、学部一、二回生向けです。
というわけでまとめノート。
e_iたちを元の基準ベクトル(面倒なので以下太字にしない)、これをe'_i→e''_i→e'''_iと回転することを考えます。
e'_j=R_1^{ji} e_i
e''_j=R_2^{ji} e'_i
e'''_j=R_3^{ji} e'_i
と変換されるとする。
すると
e'''_j=e_i (R_3 R_2 R_1) ^{ij}
両辺にv_jをかけてjで和をとって
v_j e'''_j=e_i (R_3 R_2 R_1) ^{ij} v_j
つまり、先でvのベクトルは前の座標では
(R_3 R_2 R_1)vであったことがわかります。
2010年05月12日
バグ取り
バグの原因:
1.反復が必要なところを一回で抜けていた。(参考文献の誤読)
2.(誤) #define rho 3.141592653/180.0
(正) #define (rho 3.141592653/180.0)
a/rhoが元のままだと a/3.141592653/180.0 となるため。
3.(誤)1/(m+k)
(正)1/m+k
タイポ。
4. (誤) tan=cos/sin
(正) tan=sin/cos
阿呆。見つけるのに三時間はかかった。
1.反復が必要なところを一回で抜けていた。(参考文献の誤読)
2.(誤) #define rho 3.141592653/180.0
(正) #define (rho 3.141592653/180.0)
a/rhoが元のままだと a/3.141592653/180.0 となるため。
3.(誤)1/(m+k)
(正)1/m+k
タイポ。
4. (誤) tan=cos/sin
(正) tan=sin/cos
阿呆。見つけるのに三時間はかかった。
2010年05月10日
子午線孤長を緯度から求める
http://www.gsi.go.jp/common/000051178.pdf
にあるソースをAWKからC++に移植しました。jtは3で固定しています。
[訂正]5/12
タイポ修正。
pre環境でもinclude内がタグと認識されてしまうので、関数だけ載せることにしました。
にあるソースをAWKからC++に移植しました。jtは3で固定しています。
[訂正]5/12
タイポ修正。
pre環境でもinclude内がタグと認識されてしまうので、関数だけ載せることにしました。
//緯度(degree)から子午線孤長(km)を求める。
//
double Meridian_arc_length(double deg)
{
double a=6378.137 ;//地球半径[km]
double rf=298.257222101 ;//?
double n=0.5/(rf-0.5) ;//_?
double n15; n15=1.5*n ;
double an; an=a/(1.0+n);
double rho=3.14159265358979323846264/180.0 ;
double s[7]={0.0};//sin2l\phi
int jt=3;
int jt2=6;
double ep=1.0 ;
double e[7];
double phi;
double phi2;
double c2;
for(int k=1; k<=jt; k++)
{
e[k]=n15/k-n ;
e[k+jt]=n15/(k+jt)-n;
ep*=e[k];
}
phi=deg*rho ;//radian
phi2=2.0*phi ;double dc;dc=2.0*cos(phi2) ;
double t[7];
t[1]=sin(phi2);s[1]=t[1];
for(int i=2; i<=jt2; i++) { s[i]=dc*s[i-1]-s[i-2] ; t[i]=s[i]/(double)i; } //
double sum=0.0 ;double cs1=ep;
//ここまで準備
for(int j=jt; j>=1; j--)
{
c2=1.0 ;double cs2=phi;
for(int l=1; l<=j; l++)
{
c2/=e[j-l+1] ;
cs2+=c2*t[2*l-1];
c2*=e[j+l] ;
cs2+=c2*t[2*l];
}
sum+=cs1*cs1*cs2 ;
cs1/=e[j];
}
double S=an*(sum-2.0*n*s[1]/sqrt(n*(n+dc)+1.0)+phi) ;
cout.precision(10);
return S;
}
タグ:C++
2010年05月07日
GWの過ごし方
GWはしばらく京都に戻って人の部屋でゆっくり過ごした後、自転車で東京に戻りました。
経路は京都→神戸⇒高松→徳島⇒東京です。
二重矢印の部分はフェリーを使いました。
どうして徳島まで行ったかというと、東京までいくもっとも京都から近いフェリー乗り場だからです。
神戸のネットカフェ、徳島のビジネスホテル、および最後のフェリーで寝ました。
ゴールデンウィーク中ということを忘れていて、予約をとっていなかったので徳島の宿をとるのが大変でした。
この前、自転車旅行をしたのは、八年ぐらい前でそのときは琵琶湖一周をしました。
今回と前回の最大の違いはなんといってもiPhoneの有無でした。iPhoneがあれば旅行は簡単です。充電に常に気を取られることになりますが。
経路は京都→神戸⇒高松→徳島⇒東京です。
二重矢印の部分はフェリーを使いました。
どうして徳島まで行ったかというと、東京までいくもっとも京都から近いフェリー乗り場だからです。
神戸のネットカフェ、徳島のビジネスホテル、および最後のフェリーで寝ました。
ゴールデンウィーク中ということを忘れていて、予約をとっていなかったので徳島の宿をとるのが大変でした。
この前、自転車旅行をしたのは、八年ぐらい前でそのときは琵琶湖一周をしました。
今回と前回の最大の違いはなんといってもiPhoneの有無でした。iPhoneがあれば旅行は簡単です。充電に常に気を取られることになりますが。

