C#

規則性に基づいて要素を分割する拡張メソッド

同じ要素が途切れるところで分割する拡張メソッドがほしかったのでMoreLINQや他のサイトを探したのですが、 それらしいのが見当たらなかったので実装しました。やりたいことはこんな感じです。※GroupByとかLookupではありません。 [1, 1, 1, 2, 2, 3, 3, 4, …

C#でDiffアルゴリズムを実装してみた

こちらで実装の詳細を書くと言ったので、書きたいと思います。 はじめに C#実装のDiffライブラリはいくつかあったのですが、自分で実装したのは以下の理由からです。 差分抽出対象を文字列限定にしたくない IEqualityComparerを指定して比較方法を外部から指…

エクセルの差分を抽出するツールを作ってみた

久しぶりの更新です。 作業が脱線しまくりで、なにも成果物がなかったのですが、やっと書く内容ができました。普段仕事でエクセルの差分を見るときはWinMergeのxdocdiffプラグインを使用しているのですが、 変更が多いと差分を確認するのが大変で、ちょっと…

UnityのHandlesクラスの拡張

Unityで幾何学のアルゴリズムを実装するときに、イメージがしやすいようにHanldesクラスを拡張してデバッグ描画できるようにしました。 以下のようなコードを書くと追加されたDrawerの順に描画されていきます。 var drawer = new Drawer(); var cube = GameO…

組み合わせの等価性を比較するIEqualityComparerのGetHashCode

例えば以下のようなクラスがあったとして class Pair { public int Value1 { get; } public int Value2 { get; } public Pair(int value1, int value2) { Value1 = value1; Value2 = value2; } } Value1とValue2の組み合わせが等しいかを比較したくて次のよ…

Mycetozoa 開発記録 #5

ナビゲーションメッシュの生成 その➂ 前回はユニークな辺を生成したので、今回は辺上に分割するための点を挿入していきます。 辺上に点を挿入する 挿入する方法は単純に始点から終点に向かい一定間隔で挿入していきます。 /// <summary> /// ユニークな辺上に点を挿入</summary>…

Mycetozoa 開発記録 #4

ナビゲーションメッシュの生成 その② 前回メッシュからTriangleのリストを生成したので、今回はさらにユニークなEdgeのハッシュセットを生成します。 ユニークな辺のハッシュセットを生成する NavigationMeshGenerator.cs /// <summary> /// 生成したTriangleのリスト</summary>…

Mycetozoa 開発記録 #3

ナビゲーションメッシュの生成 その① 先に自前実装のクラスとインターフェースを簡単に説明。 Vertexクラス 座標、IDなどを保持 Edgeクラス 辺を表すクラス 開始頂点と終了頂点をVertex型で保持 IVertexCollectionを継承 Triangleクラス 三角形を表すクラス …

Mycetozoa 開発記録 #2

今日は訳あって Windows + Docker + Rails の環境構築をしてたのですが、ハマってしまい書くことがなくなったのでMycetozoaで採用している最短経路を求める手法を大まかに書きます。 3Dモデルの表面上の最短経路を求める手法 ~概要~ 3Dモデルのメッシュを…

Mycetozoa 開発記録 #1

はじめに 人に見られずとも完璧に物事をこなす人間になりたいと常日頃思っていますが、なかなかそうはいきません。 得に個人で開発しているプロジェクトのソースコードを見返すと痛感します。 コードを公開することで品質が高まることもあるのではと思い、以…