c#」タグアーカイブ

Mandelbox2

引き続き,Mandelboxデモの実装をやっています.
とりあえず,C# + SharpDXで書きなおしてみました.
録画の関係でかなりフレームレートが落ちていますが,実際は割りとヌルヌル動きます.

SharpDXは初めて使ったのですが,思ったよりも苦戦させられました.
Managed DXという名前からして,XNAのような良い感じにラップされたものをイメージしていたのですが,実際には生のDirectXよりはいくらかマシ,という程度でした.
そもそもC#で3Dをやるのが間違っているみたいですね,C++ と OpenGLで作りたい.

Mandelboxのほうはまだパラメータ調整のコツが全然つかめていない状態です.
デモまでに良く見えるパラメータを探す必要があります.
レンダリングの品質も良くないので,改良しないと.

矩形検出

ちょっとやってみたい事があるので,その準備として画像中の矩形検出処理を書いてみました.処理手順は単純に

  1. 画像を2値化
  2. 輪郭線検出
  3. 輪郭線を近似して,四角形になっているか判定

のような感じです.
四角形かどうかの判定は4点かつ,面積が一定以上かどうかで判定しています.
追加で凸形になっているかを調べるともっといいかもしれません.

sq sq2
緑が検出された輪郭線.青がその中で矩形っぽいもの.

2014/03/20 ソースちょっと修正

C#,ソケット通信

ちょっと躓いたので覚え書き
C#でのサーバサイドのソケット通信

1
2
3
4
5
6
7
8
9
tcpListener = new TcpListener(IPAddress.Any, port);
tcpListener.Start();
TcpClient client = tcpListener.AcceptTcpClient();
 
// buffStream = new BufferedStream( client.GetStream() );   // ダメ
streamReader = new StreamReader(client.GetStream());
streamWriter = new StreamWriter(client.GetStream());
 
string receiveStr = streamReader.ReadLine();  // 受信

最初,NetworkStreamはバッファを持たないというのでBufferedStreamで包んでからStreamReader,Writerに渡したところ,2回送らないとStreamReader.ReadLine()が動かないようになった.
よくよく調べるとStreamReader自体がバッファを持ってるみたいで,BufferedStreamのバッファと重複して動作がおかしくなったみたい.

http://msdn.microsoft.com/ja-jp/library/yhfzs7at.aspx
このコンストラクターは、UTF8Encoding へのエンコーディングを初期化し、stream パラメーターを使用して BaseStream プロパティを初期化し、内部バッファー サイズを 1,024 バイトに初期化します。