2016年5月29日日曜日

迷彩服

去年の夏頃にスポシュー用にマルチカムの迷彩服を買いました。若干の話題性は有りますが、まぁサバゲの距離感じゃ効果はほとんど無いですよね。でもなんか癪なので実際に試してみました。
ウチの近くの山で木の伐採が有り、綺麗に下草も剥がれて地面がむき出しになっているのでMCが想定している地域とちょっと似てると思います。
写真は600-650mほど離れた場所からインターバルで撮影しました。



ウォーリーを探せ!みたいな感じです。


デザインナイフ(っぽいやつ)

今回デザインナイフをちょっと使いたくなったので、買い物に行ったついでに買ってきた。のだが、実はオルファのデザインナイフっぽいヤツって2種類あって、互いに互換性がないらしい。

ひとつ目は「デザインナイフ」というもので、もうひとつは「アートナイフ」という名前で売られている。前者は幅4mmの刃で、後者は幅6mmの刃を使用する。
ちなみにこの4mmの刃は「細工カッター替刃」という30度の刃と互換性があり、刃をラジオペンチとかでぽきぽき折っていけば230円の刃から60枚の替刃を作ることができるらしい(デザインナイフの替刃は160円/25枚なので、1枚あたり6.4円程。替刃を折ると1枚あたり4円程。手間代が気休め程度には安い)。

さて、当初の目的は4mm幅のデザインナイフのグリップが欲しかった。ところが買ったものはその目的を満たすことができない。なにかいいものがないかと探したところ、タミヤのピンバイスのグリップが結構いい感じだった。



ピンバイスの先端部分はいい感じの太さだが、内側はもう少し太くなっているので、刃の部分が若干エビ反りをしている感じはある。
純正の互換品としては使えないが、緊急時の代用品としては使えそうな感じだ。

2016年5月28日土曜日

むしあつめ

自分で遭遇したプログラムのバグを紹介する新コーナーです。1) 自分で遭遇すること 2)原因が判明していること 3)ネタとして使えること という基準なので、あんまり集まらないと思いますが。1と2についてはそのままの意味ですが、3について。例えば単純な演算で符号が逆だった等のちょっとしたミスの場合は、よほどのことがない限りは扱いません。

「コイツ馬鹿なことやってるなぁ」って笑ったり、似たようなことを扱っててバグった時の参考にしたり、各自てきとーに流して下さい。

記念すべき一つ目です。

事象

2点間の距離・方位を表示する際に、距離が約57倍ズレる。

原因

ソースコードをコピペした際に必要な修正を行っていなかった。

詳細

今回の処理は緯度・経度・高度(BLH)を2個与え、1点から他方を見た際の方位・仰角・距離(Azi Ele Dis)を出力する関数を作成した。内部処理では緯度・経度・方位・仰角の数値をラジアンで保存している。ラジアンで保存した場合は 1) 三角関数等に与える際にそのまま与えることができる 2) 都度変換した場合に誤差が蓄積されることを防げる といった利点がある。しかし人間が読む際には度(Degree)で表示したほうが直感的にわかりやすい場合が多く、今回もそのように変換を行った。その際、Aziの表示(変数を変換し表示処理に与える)をコピペしてEleやDisの表示処理を作成した。しかしDisはメートルで扱い、表示はキロメートルで行う仕様だったため、コピペした際に1000分の1にする処理は追加したが、Radian To Degreeの変換処理を削除し忘れた。そのためRadDeg変換の係数である約57倍された距離が表示された。

ISS

久しぶりにISSを撮ってきました。
PENTAX K-5 + Vixen A80Mfの組み合わせで、ISO5000,1/500secという条件です。軌道はMaxEle58degでかなり高仰角に上がりました。58度って大したことないじゃんとか思ってましたが、垂直の3分の2くらいの角度ですから結構高いです。変な体勢でファインダーを覗くので結構疲れます。



オリジナルサイズの4分の1にリサイズし、ISSの部分はオリジナルサイズを切り出して右下に貼り付けています。
なんとなくフレームっぽい部分とか太陽光パネルっぽい部分が認識できます。

夏になればドラゴンやシグナスが上がるはずなので、ドッキング前にうまくタイミングが合えば並走して飛ぶ竜や白鳥を撮れるかもしれません。もっとも、気温が上がると大気の影響で不鮮明になる恐れがあるし、かと言って冬は天気が不安定だったり寒くて嫌になったりで、一番好条件なのがこの頃かも知れません。台風一過で空気が綺麗になった直後に上がってくれると嬉しいですが、どうなることやら。

2016年5月26日木曜日

LatLonとMGRSとかの変換

LatLonとMGRSとかの変換は以下のページが使いやすいと思います
Lat/Lon and UTM Converstion - Yellowstone Research Coordination Network
大学のWebページだと思いますが、LatLon(deg), LatLon(Deg, Min, Sec), Standard UTM, NATO UTMの相互変換に対応しています。
Standard UTMとは通常のUTMで、2桁の数字+1桁のアルファベット+任意桁(偶数)の数字で構成されています。
一方、NATO UTM(以下基本的にMGRS)というのはいわゆるMGRSのことで、2桁の数字+1桁のアルファベット+2桁のアルファベット+任意桁(偶数)の数字で構成されています。
NATO UTMは国土地理院が呼称するUTMと同じもので、このブログエントリ中で述べられるNATO UTM, MGRS, UTMは同じものを対称にしています(エントリ中では本来のUTMはStandard UTM(またはSUTM)と表記しています)。
ちなみにこのMGRSは米軍や自衛隊で使用されており、その精度と扱いやすさから利用が広まっています。例えば国土地理院も防災対策等で使用する地図にUTMグリッド入りを推奨しています(その割には一般レベルには広まってない気がしますが)。

さて、上記のページ(モンタナ州立大学のページ)ですが、LatLon→MGRSに変換できるページは他にも有るにかかわらず、このページを紹介した理由について。さすが大学というか、HTMLのソースがかなり見やすいです。座標の変換もJavaScriptで書いてあり、移植しやすいです。MGRSの変換方法はイマイチわかりづらいですが、このソースを移植すればそれなりに使えるものになるはずです。
最も、MGRSの地図を見てみるとイギリスとかノルウェーの当たりが結構不規則になっています。海岸線を防御する上でグリッド間の移動が発生すると砲撃の計算が面倒とかいろいろ理由があってのことだと思いますが、単純な計算では位置を計算出来ないようになっています。
国土地理院のWeb地図でもUTMの表示は可能ですが、UTMの表示範囲は51Q-56Uの範囲で、おおよそ日本の国土がすべて収まる四角形です。ただし国土地理院で資料として表示している地図はノルウェーの当たりも綺麗なグリッドになっているので、不規則なグリッドは国(もしくはNATO等)の独自な規則なのかもしれません。

JavaScriptから計算を移植する際の注意点ですが、C#等では整数と実数の扱いに特に注意する必要があります。例えば運動エネルギーの計算は(1/2)mv^2のような感じですが、これを額面通りにソースコードとすると1/2が整数で演算されて1/2=0となりますから、それに何を掛けようと0になり、質量や速度が大きくてもエネルギーは0と計算されます。このように整数と実数が分けられて計算される環境では、(1/2.0)mv^2のように、除算のどちらかを明示的に実数(浮動小数点数)として認識させる必要があります。
JavaScriptでは1/2でも0.5となり、明示的に実数だと指定する必要がありません。上記のページのソースでも1/4のような計算が有り、そのままコピペすると(整数と実数が分けられる環境では)整数での除算が発生します。

2016年5月23日月曜日

PowerDVDでDLNA DTCP-IPのアクティベート

PowerDVDでDLNA DTCP-IPのアクティベートができない場合、管理者として実行すればアクティベートできる(かも知れない。僕の環境ではできた)。





アプリを右クリックして"その他"から"ファイルの場所を開く"を選択する。ショートカットが出てくるはずなので右クリックで"管理者として実行"を選択する。あとはUACが出てくるのでその後はてきとーに。
サーバを開いて見るなりなんなりすればアクティベートが始まるはず。アクティベートが終わったら念のため一旦PowerDVDを終了し、もう一度起動する(UACで権限が昇格されたまま放置することを防ぐ)。
Win7とかだとスタートメニューで右クリックしたらプロパティを開いてショートカットのリンク先をコピペしてた気がするけど、Win10だと一発で行ける。


PowerDVDはBDドライブにバンドルされてたやつを使ってたけど、それもだいぶ前にアクティベートが切れてBDの再生ができなくなってた。この際なので16にアップグレードしてDIGAの録画も見れるようにした。DIGAはPCのデュアルディスプレイと共有してたので、DIGAで再生中はPCの画面が半分になってしまう。これからは画面の隅の方で再生しながら画面の大部分の領域を使えるようになる。

素晴らしく使いやすいというソフトでもないけど、まぁ動作してるので満足。

2016年5月18日水曜日

地図タイルの位置座標

LatLonの位置を地図タイルのX,Yに変換する。LatLonは度分秒形式で適当な区切りで入力すればOK。dd.ddでも良いし、dd,mm.mmでも良いはず。

参考にしたページ
TrailNote:座標の変換(世界座標、ピクセル座標、タイル座標、緯度・経度)

地図タイルは国土地理院がいろんな種類を公開している。普通の地図だけではなく、標高とか航空写真もある。
地理院地図|地理院タイル一覧

https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png のようなURLで、Zに倍率を、XにimageXを、YにimageYを入れればその部分が含まれる画像が得られる。
注意する点として、目的の位置は画像の中心ではないこと。imagePosX、imagePosYに画像上の目的地の位置が表示されるので、その場所にマーカーを表示すればおおよそ目的地の場所と重なる。

緯度(北緯):
経度(東経):
倍率(Zoom):

2016年5月14日土曜日

Foretrex401のフィールド

Foretrex 401の全てのページで表示できる情報の一覧とその説明です。全てのページとは、Compass pageとTrip computerの両方で表示できるという意味です。
Trip computerの一部(2分の1、及び1分の1サイズ)でのみ表示できる、Lat/LonとLocationについては説明は見当たりませんでした。

Chromeとかだとページ翻訳を使うことにより機械翻訳の説明を見ることができます。
以下Foretrex 301/401 Owner's Manual Rev Aより。

Data Field Description
ABM PRESS
(ambient pressure)
The uncalibrated current pressure.
AVG ASCENT The average vertical distance of ascent.
AVG DESCNT
(average descent)
The average vertical distance of descent.
BAROMETER The calibrated current pressure.
BEARING The direction from your current location to a destination.
CADENCE
(GSC™ 10 required)
Revolutions of the crank arm of strides per minute.
COURSE The direction from your staring location to a destination.
ELEVATION The altitude above or below sea level.
FINAL DEST
(destination)
The last waypoint on your route.
FINAL DIST
(distance)
The remaining distance to your final destination.
FINAL ETA
(estimated time of arrival)
The estimated time of day you will reach your final destination.
FINAL ETE
(estimated time en route)
The estimated time needed to reach your final destination.
GLIDE RATIO The ratio of horizontal distance traveled to the change in vertical distance.
GR DEST
(glide ratio destination)
The glide ratio required to descend from your present position and elevation to the destination elevation.
HEADING Your moving direction.
HEART RATE
(hart rate monitor required)
Hart rate in beats per minute (bmp)
MAX ASCENT The maximum ascent rate in feet/meter per minute.
MAX DESCNT
(maximum descent)
The maximum descent rate in feet/meter per minute.
MAX ELEVTN
(maximum elevation)
The highest elevation reached.
MAX SPEED The maximum speed.
MIN ELEVTN
(minimum elevation)
The lowest elevation reached.
MOV'N AVG
(moving average)
Average speed of the unit while moving.
MOV'N TIME
(moving time)
A running tally of movement time elapsed since the last reset.
NEXT DEST
(destination)
The next waypoint on your route.
NEXT DIST
(distance)
The remaining distance to the next waypoint on the your route.
NEXT ETA
(estimated time of arrival)
The estimated time of day you will reach the next waypoint on the route.
NEXT ETE
(estimated time en route)
The estimated time needed until you reach the next waypoint on the route.
ODOMETER A running tally of distance traveled, based upon the distance between second-by-second position readings.
OFF COURSE The distance (left or right) your are from the original course (path of travel).
OVER'L SPD
(overall speed)
Your average speed.
SPEED Display rate of current speed.
STOP TIME Time spent stopped.
SUNRISE Time of sunrise based on your GPS position.
SUNSET Time of sunset based on your GPS position.
TIME Current time of day based on your time settings (format, time zone, and daylight saving time).
TO COURSE The direction you must travel to return to the route.
TOT ASCENT
(total ascent)
The total elevation distance ascended.
TOT DESCNT
(total descent)
The total elevation distance descended.
TOTAL TIME A running tally of time since the last reset.
TRIP ODOM
(odometer)
A running tally of distance traveled since last the reset
TURN The angle difference (in degrees) between the bearing to your destination and your current line of travel. 'L' means turn left. 'R' means turn right.
VERT SPEED
(vertical)
Your rate of altitude gain/loss over time.
VMG
(velocity made good)
The speed at which you are closing on a destination along a route.
VSPD DEST
(vertical speed destination)
The measurement of your rate ascent/descent to a predetermined altitude.

HEART RATEおよびCADENCEはオプションのセンサが必要になります。
HEART RATEは文字通り心拍数です。ケイデンスは、自転車では常に一定の速度でペダルを漕ぐほうが効率がいいらしく、上り坂や下り坂では変速機を使用してペダル回転数を調整します。そのために現在の回転数を知るためのセンサが必要になるようです。
HEART RATEのbmpはおそらくbpmの事だと思います。

AMB PRESSとBAROMETERについて

AMV PRESSUREは未校正の気圧、BAROMETERは校正済みの気圧を表示します。校正というのは高度による気圧変化のことで。未校正では現在の高度の気圧(おそらく計測値そのまま)を、校正済みはGPSにより校正された海面気圧を表示します。
また、この校正済みの気圧は手動でも変更することができます(SET UP > ALTIMETER > CALIBRATE)。

Lat/Lon, Locationについて

Ft 401の位置表示にはLat/LonとLocationの2種類を選択できます(同時に表示することもできます)。
Lat/LonはDD MM.MMM(Lat), DDD MM.MMM(Lon)のフォーマットで表示されます。対してLocationでは SETUP > UNITS > POSITION FORMATで選択したフォーマットで表示されます。H D°M'S.S"を選択すれば度分秒形式で表示されます。他にもMGRSやUTMで表示することもできます。UTMの地図が入手できるのであれば距離を簡単に計算できるので便利です。MGRSグリッド入りの地図を入手するのは簡単ではないと思いますが、例えば地理院地図では 機能 > 設定 からUTMグリッドをONにすればMGRSの表示が可能です。




滑空比やら上昇率やらいろいろあるのと、高度表示が気圧ソースだったりで、Ft401はスカイダイビングを主なターゲットにしているような気がします。米空軍のPJが装着していたり、他にも海兵隊等が使用しているなど、軍用としてのイメージも強いです。
他には心拍数やケイデンスなど、自転車競技もターゲットに入っているようです。予めwaypointを指定してコースを表示できるので、折りたたみ自転車を背負って飛び降りて地上を走って帰ってくる、みたいなアクティビティに使うのが最適かもしれません。

まぁFt401のスペックをフルに使用できる機会など日本ではそうそう無いと思います。

2016年5月11日水曜日

XNAの四元数(クォータニオン)

2016/05/19:Transformについて追記

XNAは開発が終了しているが、まだ配布はされている。XNAはゲーム開発環境だけど、Vector3だとかQuaternionだとかがあるので、ちょっと3Dの座標がほしい時には結構便利。

XNAの座標系は画像検索とかするとわかりやすい図が出てくるが、この軸を書いた箱を大小1個ずつ用意し、大きな箱の上で小さな箱をぐるぐる動かしたりすると理解しやすい。ティッシュの空き箱にX,Y,Zの矢印やRight,Left,Up,Down,Backward,Forward等を書いておき、フリスクの空き箱にX,Y,Zと書いて動かすのがオススメ。脳内で考えるより楽。

さて、Quaternionだが、乗算のオーバーロードで回転を行うことができる。ただし元のqを先に置くか後に置くかで結果が変わる。先においた場合は移動物体に搭載したジャイロセンサの出力を突っ込む感じ。後においた場合は地上から見た回転を突っ込む感じ。
前置きだと乗算代入演算子で動かすことができる。後起きだとちゃんと乗算してから代入してやる必要があると思う。

2016年5月6日金曜日

C# GraphicsのTransform

C#のGraphicsは表示位置やスケール、角度をTransformにMatrixで渡せば自由に設定できる。以前は自前でTransformを作っていたけど、Graphicsに標準で入ってるメソッドを使用する。
それとStackにTransformの状態を積むことにより、状態を復元できるようにする。



とりあえず試しに時計でも作ってみた。もっとも普通の見やすい時計って文字は正立だし、矢印だって三角関数とか使えば良いのであんまりTransformのメリットは無いけど。

TranslateTransformで移動、ScaleTransformでスケーリング、RotateTransformで回転、ResetTransformで初期化、という感じ。あとは任意の位置でTransformをStackに詰めばその場所を復元することができる。うまく使わないと頭がごちゃごちゃするので注意すること。