❤恋するコンピュータサイエンス❤

コンピュータサイエンス、3DCGをもっと楽しく、もっと本質的に!c言語、c++の記事中心です

this ポインタ c++

this にはアドレスが入っている。 this とした場合はクラス自身が入っている。 メンバ関数内からしかアクセスできない、オブジェクトを表すポインタです このポインタはメンバ関数の対象オブジェクトへのポインタを格納しています クラスのメンバを参照する…

NULLチェック

Q NULLポインタはどんな場合に使うかを説明せよ。 A NULLポインタの有用性は、「NULLチェック」と呼ばれる判定を行うためです。 ポインタがNULLを指しているか否でNULLチェックします。 ポインタの値が 「NULLであれば参照が無効」、 「NULL以外であれば、正…

データ型(型)とは?

Q.int a; char c; のように何故型を指定する?A.これから扱うデータの種類・大きさをコンピュータに伝え、予めメモリの大きさをコンピュータに確保しておくため。データ型には下記2種類ある。組み込み型 ⇔ ユーザ定義型組み込み型(すでに決まっている)i…

C++ クラス オブジェクト インスタンス

Q. インスタンスとは何か?A. クラスからオブジェクトを生成することをインスタンス化(実体化) と呼びます。 そして生成されたオブジェクトのことをインスタンス(実体)と呼びます。用語の整理C++ のクラスは、C 言語の構造体の拡張機能です。構造体+関…

文字列リテラル std::string c++

下記C言語での文字列リテラル、char *strstr = "abcdefg"変数宣言時はポインタ変数、(もしくは配列)に格納する必要がある。下記C++ での文字列リテラル std::string str; str="abcdefg";string というクラスを宣言するだけで、ポインタ宣言が必要なくなる…

試行錯誤cub3d DDA アルゴリズム③【DDAをループさせる】

実際のDDAアルゴリズムを回してみましょう。壁にぶつかるまで、毎回光線を1マスずつ増やしていくループです。毎回、x方向に1マスずつ(stepX)、y方向に1マスずつ(stepY)ジャンプしますが、常に1マスずつジャンプしています。(光線の方向が x 方向であれ…

問い

Q世界はどの位広いと思うか?Aあなたが思うよりももっと広い。

DDA アルゴリズム⓪【DDAとは何か】

DDAとはデジタル微分解析と訳されるらしい。ぎょうぎょうしい名前だが、やっている事は単純で、マップにグリッドを設定した上でプレイヤーから光線を飛ばし、1マス(1グリッドづつ進めていき)グリッドが壁か否かをその都度判定することだ。具体的な実装は…

DDAアルゴリズム②【光線の方向を決める】

光線の方向を決める光線方向が負の x 成分を持つ場合、stepX は -1 で、光線方向が正の x 成分を持つ場合、stepX +1 となります。光線方向が 0 がx 成分 の場合、stepX は使用されないので、どのような値であっても問題ではありません。同様なロジックがy-成…

42Tokyo Piscine (ピシン)【42はどんなプログラミングスクールか?】21日目

それにしても不思議だ。親切な先生もいなければ、卒業証書をもらえるわけでもない。英語で書かれた数ページの課題が与えられて、その結果を機械採点に通すだけのシンプルなシステム。そんな単純なシステムに参加者皆、前のめりになって学習している。 問題を…

試行錯誤 cub3d 透視投影変換①

スプライトの描画は下記の図式で、図式化する事ができる。これは透視投影変換 と呼ばれ、西洋絵画の基本となっている概念だ。どういうことかというと、目の前にスクリーンを設定し、プレイヤーから視線(光線)をりんごに向かって飛ばしてスクリーンとの交点…

DDA アルゴリズム①【変数の設定】

DDA アルゴリズムを実装するにあたっての変数の設定。mapX、mapYどのグリッドにプレイヤーがいるか //which box of the map we're in int mapX = int(posX); int mapY = int(posY); sideDistX、sideDistYプレイヤーの初期値からの初めのグリッドまでの移動…

試行錯誤 cub3d 描画の準備【カメラの設定】

cameraX は、現在の画面の x 座標が表すカメラ平面上の x 座標で、画面の右側が座標 1、画面の中央が座標 0、画面の左側が座標 -1となるようにこのように計算されます。ここから、光線の方向は、先に説明したように、方向ベクトルと平面ベクトルの和として計…

Piscine 14日目

きのう生まれたものがきょうは死ぬ つかの間のうちに人間は闇に投げ込まれ 突然押しつぶされてしまう 喜びに歌を口ずさむときはあっても たちまち嘆き悲しむことになる 朝と夜とのあいだに人びとの気分は変わる ひもじいときには亡骸のようになり 満腹になる…

型とは何か?

■問題型とは何か? ――――――――――――――――――――――■解答 メモリに割り当てるサイズをあらかじめ 決めておくこと―――――――――――――――――――――― プログラミング初心者はまず下記2つの型を覚え使えるようになろう。 int 型 整数を格納する。 char型1文字を格納するデータ型。…

42 Tokyo Piscine (ピシン)8日目 【初レビューを受ける】

無味乾燥な2進数の海に溺れそうになる、、いや既に溺れているのかもしれない、、一体コードを書くことに何の意味があるのだろうと我に帰る自分に言い聞かせる言葉を模索しながらPicineも既に 8日目となる。 とにかく一度提出してみよう、上位集団は既にC言語…

試行錯誤 cub3d 【レイキャスティング レイトレーシング】

cub3d を始める。まずレイキャスティングの知識を頭に詰め込む。と同時にレイトレーシングとの違いを理解する。 レイキャスティング:視点から放った光線がオブジェクト(壁やスプライトなど)に当たるまでの距離を計算し, その距離を元に描画する. 光の屈折や…

42Tokyo Piscine 7日目

「私は鶏のように臆病であったが、ルビコン河を渡るような重大決心を自分に強いてきた。」 コルビジェこれは20世紀最高の建築家であるコルビジェの言葉だ。どんな偉大な業績を残した人でも暗中模索の中、前進する時には鶏のように臆病なのだ。軽い気持ちで…

文字列とは何か

C++

Q文字列とは何か説明せよAC言語及びC++の文字列とは、終端がヌルになった文字の配列のこと。 文字列とは、文字がずらっと並んで列になったデータのことです。そのため、「1文字づつの配列」として表すことができます。C言語の言葉でより正確に表現するなら、…

変数とは何か

Q変数と何かAメモリそのもの変数はプログラミングの入口であるので、様々な参考書に様々な説明がある。箱であったリ、数学のxという説明もある。どれも正解であるが、余計に頭が混乱する原因となるのも事実である。 変数とはズバリメモリの事だ。もっと詳し…

makefile @ -@の違い

コマンド行の先頭にある -@ は - と @ に分けられます @ を添えるとコマンドは非表示で実行されます.. - は処理の失敗を無視することを表します. これがついていない場合には, コマンドが 0 以外の値を返すと make が停止します. 補足(参照)https://qiita.c…

スレッド(英:thread)とは何か

Q.スレッド(英:thread)とは何か?A. プロセスより細かい処理の実行単位 ちょいと難しく説明するとCPUの割り当て実行単位が「スレッド」1つのプロセスの中には1つ、もしくは複数のスレッドが含まれており、このスレッドが実際にCPUで実行される単位となる…

恋するC言語*序章*

このブログの題名は恋するC言語であるが、時に気まぐれ、そして融通が一切効かない、時にうちのめされ、時に微笑む,そんなツンデレ女子のようなC言語の夢中になってしまったオッサンの全記録である。(キモ)

git まずはこれだけ覚えよう(branch)

Q git のbranch とは何か? A 複数人が同じファイルをアップする為の便利なシステム。ブランチを分けることによってリポジトリ内のファイルの異なる変更を保持できます。そして分けたブランチはマージすることで変更を取り込み、ひとつのブランチとして統合…

文字列リテラルとは?

C++

Q文字列リテラル、文字リテラルなどに使われるリテラルとは何か説明せよ。A.リテラルは英語で文字通りという意味つまり文字列リテラルとはソースコードに直接べた書きした文字列(複数の文字、数字)で文字通り扱えという意味。”abc”左記のように””ダブルク…

プロセスとプロセスID

Q. プロセスとは何か説明せよ。A. プログラムの実行中の実態ははプロセスという用語で呼びます。(タスクという用語もOSの種類によって呼ぶこともある)プログラムはmain関数や使用するデータによって実現します。このプログラムを実行すると、このプログラム…

42Tokyo Piscine 0日目

42tokyoというプログラミングスクールがある。入学試験である、一ヶ月続くピシンは今まで体験したどの入学試験よりも、ハードでだった。試験を通過すれば全額無料で課題を解いていくだけというなんともスパルタな学校に入学することができる。(16歳以上で…

42Tokyo Piscine(ピシン)1日目

入学一日目discord 上に放り込まれ、いよいよ42の試験ピシンがキックオフされる。早速課題文に目を通してみるが、次の瞬間目が点になる。何が書いてあるのかわからない。何を聞いているのかすらわからない。なので、そもそも何を質問すればいいかすらわか…

システムコールとは何か説明せよ

Q.システムコールとは何か説明せよ。 またシステムコールの代表的な関数名を挙げよA. システムコールはユーザーが実行したい操作をユーザーの代わりに実行するように、OSのカーネルに対して要求する手段です。 下図はOSを簡略化した図だが、のUser mode から…

makefileを自分でかけるようにするための準備

Q.コンパイル時におこなわれる、ビルド、リンクとは何か説明せよAmakefile をかけるようにするためにはビルドがどのように行われているかを理解する必要がある。なぜならビルドする手順を分解したのががmakefileと言えるからだ。 ビルトを理解する為によく使…