rust

Groups

Chapter 13 The Ray Tracer Challenge: A Test-Driven Guide to Your First 3D Renderer (Pragmatic Bookshelf)作者:Buck, JamisPragmatic BookshelfAmazon シーングラフを作る。 Tree 構造 シーングラフといっても処理を複雑にしないよう、実際には Graph …

Cylinders

Chapter 13 Cylinders The Ray Tracer Challenge: A Test-Driven Guide to Your First 3D Renderer (Pragmatic Bookshelf)作者:Buck, JamisPragmatic BookshelfAmazon intersection ここも Cube のときと同様にあまり書くことがない。ただ、Cube では割とて…

Cubes

Chapter 12 The Ray Tracer Challenge: A Test-Driven Guide to Your First 3D Renderer (Pragmatic Bookshelf)作者:Buck, Jamis発売日: 2019/03/12メディア: ペーパーバック 結果 本の通りにやっただけで、書くことがない。なので今回は結果だけ。 本の中に…

Reflection and Refraction

Chapter 11 The Ray Tracer Challenge: A Test-Driven Guide to Your First 3D Renderer (Pragmatic Bookshelf)作者:Buck, Jamis発売日: 2019/03/12メディア: ペーパーバック 反射、屈折。 Reflection 今まではある Shape 上の 1 点の色は ambient, diffuse,…

Patterns

Chapter 10 The Ray Tracer Challenge: A Test-Driven Guide to Your First 3D Renderer (Pragmatic Bookshelf)作者:Buck, Jamis発売日: 2019/03/12メディア: ペーパーバック まあ Procedual Texture のことだよね。 Pattern trait 基本的には Shape trait …

Planes

Chapter 9 The Ray Tracer Challenge: A Test-Driven Guide to Your First 3D Renderer (Pragmatic Bookshelf)作者:Buck, Jamis発売日: 2019/03/12メディア: ペーパーバック Shape trait Plane の導入にあたって、今まで Sphere を使用していた場所で Plane …

Shadows

Chapter 8 The Ray Tracer Challenge: A Test-Driven Guide to Your First 3D Renderer (Pragmatic Bookshelf)作者:Buck, Jamis発売日: 2019/03/12メディア: ペーパーバック この章で扱う内容は今までの道具立てを利用して実現できることから、そんなに書く…

Making a Scene

Chapter 7 The Ray Tracer Challenge: A Test-Driven Guide to Your First 3D Renderer (Pragmatic Bookshelf)作者:Buck, Jamis発売日: 2019/03/12メディア: ペーパーバック とりあえず object(球体)をそれっぽくレンダリングすることはできるようになった。…

Light and Shading

Chapter 6 The Ray Tracer Challenge: A Test-Driven Guide to Your First 3D Renderer (Pragmatic Bookshelf)作者:Buck, Jamis発売日: 2019/03/12メディア: ペーパーバック 前章まででとりあえず描画までは行くことができたものの、得られた画像は立体感が…

Intersecting Rays with Spheres

Chapter5 The Ray Tracer Challenge: A Test-Driven Guide to Your First 3D Renderer (Pragmatic Bookshelf)作者:Buck, Jamis発売日: 2019/03/12メディア: ペーパーバック github.com Ray 始点と方向のみ。 pub struct Ray { origin: Point3D, direction: V…

Matrix Transformations

Chapter4 The Ray Tracer Challenge: A Test-Driven Guide to Your First 3D Renderer (Pragmatic Bookshelf)作者:Jamis Buck出版社/メーカー: Pragmatic Bookshelf発売日: 2019/03/08メディア: ペーパーバック github.com Transform Transform が備えるべき…

Matrices

Chapter3 The Ray Tracer Challenge: A Test-Driven Guide to Your First 3D Renderer (Pragmatic Bookshelf)作者: Jamis Buck出版社/メーカー: Pragmatic Bookshelf発売日: 2019/03/08メディア: ペーパーバックこの商品を含むブログを見る Matrix4x4 3D グ…

Drawing on a Canvas

Chapter2 The Ray Tracer Challenge: A Test-Driven Guide to Your First 3D Renderer (Pragmatic Bookshelf)作者: Jamis Buck出版社/メーカー: Pragmatic Bookshelf発売日: 2019/03/08メディア: ペーパーバックこの商品を含むブログを見る github.com Color…

Rust のギモン その 2

前回、Point3D と Vector3D を実装するにあたって演算子オーバーロードを使用したのだけれど、std::ops::Add 等の trait で実装すべきメソッドは fn add(self, rhs: Rhs) -> Self::Output とあるように self も rhs も move してしまう。なので、そのまま Ve…

Vector3D/Point3D

相変わらず作りたいものはないのだけれど、少し前に "The Ray Tracer Challenge: A Test-Driven Guide to Your First 3D Renderer" という本を買った。 The Ray Tracer Challenge: A Test-Driven Guide to Your First 3D Renderer (Pragmatic Bookshelf)作者…

Rust のギモン その 1

Rust を使ってまだ日が浅いということもあって、ある処理を Rust でどう書くのが普通なのかよくわからないことが多々ある。ここに記しておけば誰か親切な人が教えてくれるかもしれない。 なお、「その 1」とあるけれど、「その 2」以降があるかは未定。 疑問…

Compiler/Virtual Machine Interpreter

Compiler/Virtual Machine Interpreter コード タスク概要 Code Generator で得られたアセンブリ出力を読み込み、Virtual Machine 用バイトコードに変換、実行する。 実装 Virtual Machine の実装はタスクのページにある "A simple example virtual machine"…

Compiler/Code Generator

Compiler/Code Generator コード タスク概要 構文解析で得られた Abstract Syntax Tree(AST) から次のタスクで作成する Virtual Machine 用アセンブリを出力する。 入力は Compiler/Syntax Analyzer での出力形式に基づいたテキスト。 実装 意味解析や最適化…

Compiler/AST Interpreter

Compiler/AST Interpreter コード タスク概要 構文解析で得られた Abstract Syntax Tree(AST) のインタプリタを作る。 入力は Compiler/Syntax Analyzer での出力形式に基づいたテキスト。 実装 基本的には AST をトラバースしながら各ノードを評価していく…

Compiler/Syntax Analysis

Compiler/Syntax Analyzer コード タスク概要 シンプルなプログラミング言語用の Syntax Analyzer を作る。 入力は Compiler/Lexical Analyzer での出力形式に基づいたトークン列のテキスト。 実装 yacc 使おうぜ、yacc。と言いたくなる気も少しあるけど、真…

Compiler/Lexical Analyzer

Compiler/Lexical Analyzer コード タスク概要 シンプルなプログラミング言語用の Lexical Analyzer を作る。 実装 lex 使おうぜ、lex。と言いたくなる気も少しあるけど、真面目に実装する。そもそも C 言語じゃないしね。 正規表現のパターンに対するマッチ…

Bitmap/Write a PPM file

Bitmap/Write a PPM file コード タスク概要 Bitmap で作成したビットマップを PPM 形式でファイルに保存する。PPM は P6 が望ましい。 実装 これも特に書くことがない。ソースの write_ppm() を見て。 余談 PPM 自体は以前にも使用したことがあった。その時…

Bitmap

Bitmap コード タスク概要 他のタスクでも使えるように、 RGB ラスタグラフィックス用の型と以下の基本的な 3 つの関数を実装する。 塗りつぶし 指定したピクセルに色をセット 色を取得 実装 問題になる点は特になし。ソースを見て。 で、Rust の場合アクセ…

Execute Brain****

Execute Brain**** コード タスク概要 Brainfuck の処理系を作る。 Brainfuck は非常に小さな言語で、その仕様は Rosetta code のページ や Wikipedia にも書いてある。 それによるとプログラムコードは {'>', '<', '+', '-', '.', ',', '[', ']'} のみで構…

100 Doors

100 Doors タスクの一覧で一番最初に載っていたので、試しにやってみた。 コード 数字から始まる cargo package は作れないみたいなので "_100_doors" とした。 タスク概要 ドアが開いている時に閉じ、閉じている時には開く toggle という操作を考える。 一…

A+B

はじめに Rust が気になっている。プログラミング言語の習得には実際に何かを作ってみるのが最も良いということはわかっているが、作りたいものなど特にない。というわけで Rosetta codeとかで適当に課題をみつけて実装していこうと思う。 基本方針 全体で一…