ソフトウェア開発したい日記

「面白い!」と思った頭の体操や、数学の問題を載せていきます
その他ロードバイクででかけた先の写真や、ソフト開発のメモ等

NC言語の円弧補間の情報から、JavaのdrawArcで描画

2010年03月21日 22時14分17秒 | ソフト開発日記
CAM機能を持たせたNCシミュレータの開発に関してのメモ

CADのデータ(dxf形式)の円弧情報をNC言語のデータに変換するために
dxfファイルの中を見てみると、
「円弧の中心座標」
「円弧の開始角」
「円弧の終了角」
「円弧の半径」
といったデータが入っていたので、NC言語の円弧補間G02、G03に変換するのは
さほど難しくなさそう。

G02、G03コードで必要なパラメータは
「円弧の終点座標」
「円弧の中心座標(又は半径)」
である。

ここでG02、G03コードの情報からJavaで円弧を描画する方法について考察。
GraphicsクラスのdrawArcメソッドの引数は
drawArc(int x, int y, int width, int height, int startAngle, int arcAngle)
となっており、(x, y)は弧の左上隅の座標。
width, heightは楕円の幅と高さであるが、NCデータでは楕円弧補間はないので
width = heightが常に成立する。
startAngleが円弧の開始角で、artAngleが展開角を表している。

G02、G03の引数およびその前後のコードより、
「円弧の始点(x0, y0)」「円弧の終点(x1, y1)」「円弧の中心(I, J)」
がわかっているものと考えると、

半径Rは、R = sqrt(pow(I-x0, 2.0) + pow(J-y0, 2.0)) = hypot(I-x0, J-y0)
始点と終点の距離は、D = hypot(x1-x0, y1-y0)
展開角は、theta = acos(1 - pow(D, 2.0) / (2.0*pow(R, 2.0)))
開始角は、phi = atan2(J-y0, I-x0)
弧の左上隅の座標は、(x, y) = (I-R, J-R)

これですべてのパラメータ互換ができたことになる。はず。


JavaでC言語みたいに少数何桁表示とかさせたい

2010年03月19日 08時00分23秒 | ソフト開発日記
C言語の書式では、 %lf.5 のように書けば、少数以下第5桁まで表示される。
それに対しJavaはそういった書き方ができなくてちょっと痒い・・。

調べてみたらtextパッケージのDecimalFormatクラスを使えばできるみたい。
試しに実際に書いてみた例↓

double a = 1.0 / 3.0;
DecimalFormat df = new DecimalFormat("#.##");
System.out.println(df.format(a));

あるいは、次のように。

String s = new DecimalFormat("#.##").format(a);
System.out.println(s);

確かに結果は 0.33 と少数以下第2位まで表示される。
だけど、double a = 1.0; で a を同様に表示させようとすると、結果は 1 。
そうではなくて、a = 1.0 のときは結果を 1.00と表示させたいのに。
って思いながらDecimalFormatについて調べたらすぐ解決しました。

DecimalFormatのコンストラクタの文字列のパターンについて

# は数字を表し、数字が0のとき表示しない。
0 は数字を表し、数字が0でも表示する。

とのこと。すなわち、こうすれなばよかった。

String s = new DecimalFormat("0.00").format(a);
System.out.println(s);

敷居が高いイメージがあったけど、意外と楽でした。

【自転車】青木峠からの展望

2010年03月18日 06時45分41秒 | 自転車の旅
青木峠からの展望です。
フォトチャンネルには5枚アップしました。
自転車でおでかけ

(撮影は夏だからですが)ひたすら緑、緑です。
ここを走っているときの自分、ニヤニヤしてしまうのを思い出しました。
そして人がいないのをいいことに、大きめの声で歌ったり。

もしその光景を録画でもされでもしたら渡米したいです。

【自転車】青木峠の心霊スポット?

2010年03月17日 11時18分50秒 | 自転車の旅
不気味な雰囲気のトンネルです。

なんとなく青木峠で検索したら、青木峠は心霊スポットで有名だったんですね・・。
普通に自転車の練習スポットとして見てました。

このトンネルは夏場でもひんやりスポットで好きだったのですが
このトンネルに幽霊が出るって噂みたいですね・・。
好きなトンネルが一気に不気味トンネルになりました。

昔はここを真夜中に自転車で通ったこともあったのですが、もう無理です。