検索
AND検索
OR検索
トップ
|
リロード
|
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
ETロボコン シミュレータ 制作日記 (by T.Misawa)
トップ
シミュレータダウンロード
日記
日記
日記/20070406
日記/20070409
日記/20070412
日記/20070413
日記/20070414
日記/20070417
日記/20070420
日記/20070421
日記/20070422
日記/20070423
日記/20070425
日記/20070426
日記/20070427
日記/20070428
日記/20070429
日記/20070502
日記/20070504
日記/20070505
日記/20070506
日記/20070507
日記/20070510
日記/20070517
日記/20070519
日記/20070520
日記/20070521
日記/20070523
日記/20070526
日記/20070527
日記/20070529
日記/20070601
日記/20070610
日記/20070611
日記/20070616
日記/20070617
日記/20070618
日記/20070624
日記/20070628
日記/20070629
日記/20070630
日記/20070701
日記/20070702
日記/20070502 をテンプレートにして作成
開始行:
|[[''前の日記''>日記/20070429]]|[[''次の日記''>日記/20070504]]|
~
*20070502 設計・実装開始 [#s23535b5]
~
**開発環境インストール [#l9d870f5]
''Visual C# Express''と''Visual C++ Express''をダウンロード・インストールします。~
http://www.microsoft.com/japan/msdn/vstudio/express/default.aspx
SQL Server Express サーバはいらないです。~
Webからインストールするんですが、とても時間がかかりました。~
**クラス設計 [#raaa1507]
#ref(archg.png,nolink);
''無償''で使えるUMLツール''JUDE''を使わせていただくことにします。~
[[&ref(jude_banner0.png,nolink,JUDE);>http://jude.change-vision.com/jude-web/index.html]]
~
~
サクサク作っていかないと。~
~
***パッケージGraphic.Misawa2D.Parts [#o314ff1b]
とっかかりはグラフィックから。1つ1つのグラフィックパーツです。
2Dのパッケージ名は数字からはじめられないので''Misawa2D''で。。。~
.NETのSystem.Drawingと同じクラス名だとまぎらわしいのでPrefix、M2Dを使います。これは某コーディング規約だけど、ここでは省略。~
#ref(class_parts.png,nolink);
.NET Frameworkに依存しないように書いてみました。''C#''は''Java''に少し似ているので、後で''Applet''にも移植してみようという野心があります。モデルベースで書いておけば、苦労せずにJavaに持っていけるかな。~
***パッケージGraphic.Misawa2D.Model [#f4b24920]
#ref(class_model.png,nolink);
複数パーツを組み合わせてPathFinderを構成するクラスです。PathFinderの形状は今のところ1つだけです。~
**実装 [#c6c62027]
&size(20){''3日かけて、Graphicパッケージ(とその周辺)の0版実装が終わりました。''ふぅ。};~
-''今回の教訓その1:マトリックス演算は''~
Utilクラスの座標変換にはマトリックスを使いますが、これを.NETが持っているものを使うか、自分でマトリックス演算を書くか最後まで悩んだ末、自分で書くことに。なるべく、便利な関数に頼らないようにやろうという方針をかためました。Javan等、他プラットフォームに移植したいというのがねらいです。2Dの場合は2x2のいわゆる行列演算なのでまだ楽です。~
~
|(x')=| |(cosθ -sinθ)|(x)|
|(y')|~|(sinθ cosθ)|(y)|
~
こんな感じです。~
//位置ベクトルの回転
public static M2DVector RotateVector(M2DVector srcVector, double degree)
{
double radian = GetRadianByDegree(degree);
M2DVector destVector = new M2DVector();
destVector.U = (srcVector.U) * Math.Cos(radian) - (srcVector.V) * Math.Sin(radian);
destVector.V = (srcVector.U) * Math.Sin(radian) + (srcVector.V) * Math.Cos(radian);
return destVector;
}
-''今回の教訓その2:プロパティを使うかどうか''~
C#にはCOMの時代よろしくプロパティという概念があります。アクセッサをメソッドを合理的に扱うというものですが、これを使うと便利なんですが、また移植性が。。。これは、まだ結論を出さないことにします。今日のところは使ってしまいました。~
~
モデルベースといいつつも、コードそのまま流用ももくろんでいるのです。~
~
こんな感じです。~
public double U
{
set { this._relativeU = value; }
get { return this._relativeU; }
}
public double V
{
set { this._relativeV = value; }
get { return this._relativeV; }
}
**実行イメージ [#p30ad351]
デフォルメされたパスファインダーが動きました!~
#ref(pathfinder0.gif,nolink);
~
では、もう寝ます。
~
|[[''前の日記''>日記/20070429]]|[[''次の日記''>日記/20070504]]|
~
終了行:
|[[''前の日記''>日記/20070429]]|[[''次の日記''>日記/20070504]]|
~
*20070502 設計・実装開始 [#s23535b5]
~
**開発環境インストール [#l9d870f5]
''Visual C# Express''と''Visual C++ Express''をダウンロード・インストールします。~
http://www.microsoft.com/japan/msdn/vstudio/express/default.aspx
SQL Server Express サーバはいらないです。~
Webからインストールするんですが、とても時間がかかりました。~
**クラス設計 [#raaa1507]
#ref(archg.png,nolink);
''無償''で使えるUMLツール''JUDE''を使わせていただくことにします。~
[[&ref(jude_banner0.png,nolink,JUDE);>http://jude.change-vision.com/jude-web/index.html]]
~
~
サクサク作っていかないと。~
~
***パッケージGraphic.Misawa2D.Parts [#o314ff1b]
とっかかりはグラフィックから。1つ1つのグラフィックパーツです。
2Dのパッケージ名は数字からはじめられないので''Misawa2D''で。。。~
.NETのSystem.Drawingと同じクラス名だとまぎらわしいのでPrefix、M2Dを使います。これは某コーディング規約だけど、ここでは省略。~
#ref(class_parts.png,nolink);
.NET Frameworkに依存しないように書いてみました。''C#''は''Java''に少し似ているので、後で''Applet''にも移植してみようという野心があります。モデルベースで書いておけば、苦労せずにJavaに持っていけるかな。~
***パッケージGraphic.Misawa2D.Model [#f4b24920]
#ref(class_model.png,nolink);
複数パーツを組み合わせてPathFinderを構成するクラスです。PathFinderの形状は今のところ1つだけです。~
**実装 [#c6c62027]
&size(20){''3日かけて、Graphicパッケージ(とその周辺)の0版実装が終わりました。''ふぅ。};~
-''今回の教訓その1:マトリックス演算は''~
Utilクラスの座標変換にはマトリックスを使いますが、これを.NETが持っているものを使うか、自分でマトリックス演算を書くか最後まで悩んだ末、自分で書くことに。なるべく、便利な関数に頼らないようにやろうという方針をかためました。Javan等、他プラットフォームに移植したいというのがねらいです。2Dの場合は2x2のいわゆる行列演算なのでまだ楽です。~
~
|(x')=| |(cosθ -sinθ)|(x)|
|(y')|~|(sinθ cosθ)|(y)|
~
こんな感じです。~
//位置ベクトルの回転
public static M2DVector RotateVector(M2DVector srcVector, double degree)
{
double radian = GetRadianByDegree(degree);
M2DVector destVector = new M2DVector();
destVector.U = (srcVector.U) * Math.Cos(radian) - (srcVector.V) * Math.Sin(radian);
destVector.V = (srcVector.U) * Math.Sin(radian) + (srcVector.V) * Math.Cos(radian);
return destVector;
}
-''今回の教訓その2:プロパティを使うかどうか''~
C#にはCOMの時代よろしくプロパティという概念があります。アクセッサをメソッドを合理的に扱うというものですが、これを使うと便利なんですが、また移植性が。。。これは、まだ結論を出さないことにします。今日のところは使ってしまいました。~
~
モデルベースといいつつも、コードそのまま流用ももくろんでいるのです。~
~
こんな感じです。~
public double U
{
set { this._relativeU = value; }
get { return this._relativeU; }
}
public double V
{
set { this._relativeV = value; }
get { return this._relativeV; }
}
**実行イメージ [#p30ad351]
デフォルメされたパスファインダーが動きました!~
#ref(pathfinder0.gif,nolink);
~
では、もう寝ます。
~
|[[''前の日記''>日記/20070429]]|[[''次の日記''>日記/20070504]]|
~
ページ名: