2009年11月07日〜08日 東海村(茨城)

2009年11月07日〜08日 東海村(茨城)

ホッケー社会人リーグの最終戦が茨城県東海高校のグラウンドで行われることになったので、国道6号の水戸街道部分を自転車で走破するチャンスと捉えて

  1. 試合前日に1日かけて東海村まで行く
  2. 試合は13時に開始されるので午前中は東海村の原子力関連施設を観光しにポタリング
  3. ついでに試合をする
  4. 帰りは輪行

という計画を立て、実行してみた。

多角形の内外判定

多角形の内外判定

ある点が多角形の内側にあるのか外側にあるのかを判定するには主に ある点から直線をひいて多角形の辺と何回交差するか判定する(偶数回なら外、奇数回なら中) ある点から多角形の各頂点を順番に見ていったときに何回転するか の2つの方法がある。 しかし辺との交差回数をカウントするのは、直線と辺が平行だったり、頂点で交差したりする場合などに特別な配慮が必要なので、 ここでは2番目の方法で実装する。 点から多角形上の点を順

簡易ハンディGPSによるあしあとデータの時刻情報

au携帯電話に入っている地図ビューアーの簡易ハンディGPS機能によって取得したGPSログ(あしあとデータ)は、 本ファイルは、地図ビューアーにより出力されたGPS情報ファイルです。 出力日時:2009/10/27 08:56:46 +0900 +++GPSログ+++ 940669002,139.604988,35.833148 という形式になっており、「+++GPSログ+++」以下の行に時刻、経度、緯度の順番に記録される。 GPSでは時刻を1980年1月6日0時0分0秒(GMT)からの秒数と
16ビットアプリケーションの標準入出力をリダイレクト

16ビットアプリケーションの標準入出力をリダイレクト

FORTRANで書かれた古いMS-DOSプログラムを.NET/Linkを使ってMathematicaから操るパッケージを作っていたところ、 Process.StartInfo.RedirectStandardInputやRedirectStandardOutputにTrueを設定してもまったく標準入出力をリダイレクトできなかった。(※OSはVista 32bit) いろいろ試してみたところ、16ビットのプログラム
GPXファイルを読み込む

GPXファイルを読み込む

MathematicaでGPXファイルを読み込んで解釈する方法のメモ。 対象となるGPXファイルを xml = Import[filepath, "XML"]; でまずXMLとして読み込んでおいて、 trk = Cases[xml, XMLElement["trk", _, _], Infinity]; でtrk要素を抜き出し、 trkpt = (ToExpression[{"lat", "lon"} /. Cases[#1, XMLElement["trkpt", attr_, _] :> attr, Infinity]] & ) /@ trk; でそれぞれのtrk要素からtrkpt要素を抜き出して緯度と経度を得る。 Sep. 28 2013追記 Mathematica 8からは標準でGPXをImport可能になった。
友愛数を列挙する

友愛数を列挙する

Mathematicaで友愛数を列挙するプログラム例として以下のようなものが見受けられる。 yakuwa[n_] := DivisorSigma[1, n] - n; Do[If[(yakuwa[yakuwa[k]] == k) && (yakuwa[k] != k), Print[{k, yakuwa[k]}]], {k, 1, 1000}]; しかし、Doでループを回してPrintで書き出していくのはMathematica的に美しくないと思う。 Mathematicaなら関数型プログラミングとパターンマッチを用いるのが良いと思うので、私なら以下のように書く。 Cases[NestList[DivisorSigma[1, #] - # &, #, 2] & /@ Range[100000], {a_, b_, a_} /; a < b -> {a, b}] 実行速度もこちらの
折れ線を間引く(Ramer-Douglas-Peuckerアルゴリズム)

折れ線を間引く(Ramer-Douglas-Peuckerアルゴリズム)

読み込んだGPSログのデータを間引きたい、と思って調べたところ、 (Ramer-)Douglas-Peuckerのアルゴリズムというものがあることが分かった。

基本的な考え方は、

  1. 折れ線の始点と終点を結ぶ線分と各点の距離を求める。
  2. すべての点との距離が許容誤差$\varepsilon$以内に入っていれば始点と終点だけを返して終了。
  3. そうでなければ距離が最大の点Pを選択。
  4. 始点から点Pまでの折れ線と、点Pから終点までの折れ線のそれぞれについてまた1から処理する。

という再帰的なもの。

再帰的なものはMathematicaの得意分野なので、MathematicaでRamer-Douglas-Peuckerのアルゴリズムを実装してみた。

2009年09月18日〜20日 高森(長野)

2009年09月18日〜20日 高森(長野)

9月の連休(シルバーウィーク)を利用して、農作業の手伝いも兼ねて祖母宅まで自転車で行くことにした。

中山道経由も考えたが、ルートとしてはまずは甲州街道から伊那路を辿ることにした。

2009年08月08日 富津岬

2009年08月08日 富津岬

教授の発案で、研究室のメンバーで富津海岸で海水浴→木更津に住む教授の家でホームパーティという催しが行われたので、自転車で参加することに。

2009年03月08日〜10日 今市

2009年03月08日〜10日 今市

ホッケー部の後輩たちが今市(栃木県日光市)にある今市青少年スポーツセンターで合宿をする、とのことなので、先輩OBと2人で自転車で参加することになった。