
- >
- コンピュータとインターネット
- >
- コンピュータ
- >
- ソフトウェア
C&C++
[ リスト | 詳細 ]
C言語の話です。
たまに、ソースなども出そうかなと思っています。
たまに、ソースなども出そうかなと思っています。
|
3Dむずい。
左手座標系ビュー行列と左手座標系パースペクティブ射影行列について、よく分からんな。 もうちょっと、 Crawl 1-9 座標変換其の四 をよく読むかぁ。 ビューポート行列は、画面に合わせるための行列だってことが分かった。 今のところ、よく分からん行列の生成以外は、自力で算出して描画。 ちなみに、Windows APIにて描画。 描画内容は、sin関数とtan関数、log10( | tan | )関数で囲ったものの3つを試しに描画させたけど、 やっぱ、三角関数とかは、計算するより描画させて見たほうが面白いなー [sin関数] [log10( | tan | )関数] |

- >
- コンピュータとインターネット
- >
- コンピュータ
- >
- ソフトウェア
|
約3.14159265358979と15桁で覚えるべし!
なぜなら、C言語のdouble型が今現在、およそ15桁で表現できるからだ!(ドヤァ |

- >
- コンピュータとインターネット
- >
- コンピュータ
- >
- ソフトウェア
|
コンピュータによる数値計算において厄介なのが、
小数点を利用する計算です。 10進数小数点を2進数変換するとき、 数値の中に誤差が発生してしまいます。 時に、誤差はバグを引き起こすこともあります。 double dx, dy; for( dx = 0.0 ; dx < 1.0 ; dx += 0.01 ){ dy = dx; } なんてことをして誤差を増やすよりも int dx; double dy; for( dx = 0 ; dx < 100 ; dx++ ){ dy = (double) dx / 100.0; } のほうが正確に数値計算が可能です。(二度手間だけど…) とにかく、簡単により正確に数値計算するには、 こういう手間もたまには必要になります。 [誰でも体感できる誤差] 電卓ツールをだし、 1/3を計算し、結果をコピー。 その後、×3にして結果を見る。(この時は、数値が1になる。) 一度クリアにし、結果を張り付け。 その結果×3で計算すると、0.999999…にしかならない。 ※コピー、貼り付けは、左上の編集ボタンから開ける。 今回開発していたプログラムにおいて、 このせいでかなり難しいバグが発生してたなぁ… |

- >
- コンピュータとインターネット
- >
- コンピュータ
- >
- ソフトウェア
|
マルチスレッドプログラミングにおいては、
どのようにしてCPUを有効活用するかが問題となります。 実験として、 CreateThread関数を利用し、グローバル変数にアクセスする。 ということをやり、計測してみたいと思います。 スレッド関数内は、グローバル変数を100000000回1加算して計測をします。 シングルスレッドの変数の数を1に対して、 マルチスレッドはスレッド数分の変数の数でアクセスするようにします。 結果、 [1スレッド]…処理時間:00[m]:00[s]:234[ms] [2スレッド]…処理時間:00[m]:00[s]:141[ms] [4スレッド]…処理時間:00[m]:00[s]:078[ms] [8スレッド]…処理時間:00[m]:00[s]:081[ms] ウチのCPUは、4スレッドまで同時に動作可能なので、 8スレッドにしても、逆に処理が多くなり時間がかかってしまうようです。 よって、CPUの種類毎にスレッド数を決める必要があるようです。 参考までに、最近のCPUのスレッド数を挙げときます。 今回は、実験としてグローバル変数を利用しましたが、 普段は利用しないでください。 バグの発生の原因となる可能性があります。 |

- >
- コンピュータとインターネット
- >
- コンピュータ
- >
- ソフトウェア






