機械学習基礎理論独習

誤りがあればご指摘いただけると幸いです。数式が整うまで少し時間かかります。リンクフリーです。

勉強ログです。リンクフリーです
目次へ戻る

2024-01-01から1ヶ月間の記事一覧

二重四元数による剛体変換

はじめに 剛体変換とは、回転と平行移動を組み合わせた変換です。 変換する位置ベクトルを とします。 このとき、変換する位置ベクトルは四元数で と表せ、二重四元数で と表せます。 回転軸の単位ベクトルを とし、回転角を とします。 このとき、回転変換…

二重四元数

定義 二重四元数は、以下のように定義されます。二重四元数の定義 二重四元数 を以下のように定義します。本記事では、二重四元数は のようにハットを付けます。 また、二重四元数には と の2種類の書き方があります。よく使われるのは の方です。 二重四元…

二重数

二重数の定義 二重数は、以下のように定義されます。二重数の定義 二重数は、複素数における が に代わって、 の代わりに であるという感じです。 別名は、双対数です。英語では、dual numbers です。二重数の和と積は、以下のように定義されます。二重数の…

JavaScript による回転姿勢変換

はじめに 基本的にglMatrixを使います。 glMatrixに無いものを作成しました。 「回転行列」と「オイラー角」と「四元数」を相互変換します。 なお、オイラー角はABCのタイプ(回転軸がすべて異なるタイプ)のみサポートしております。 第1軸と第3軸が一致する…

球面線形補間

はじめに 球面線形補間は四元数でよく使われますが、四元数だけのものではありません。 ベクトルの球面線形補間も結構使われます。 ベクトルの線形補間 まずは、ベクトルの線形補間を復習しましょう。 上図に示したようにベクトル をとります。 の先端を結ぶ…

2つのベクトルを一致させる回転を表す変換を求める

はじめに 2つのベクトルを一致させる座標変換をクォータニオンを使って作る という記事を読んでまして、良い記事だなって思ったので自分用にまとめておきます。 アプリなら、入力者がマウスクリックで指定した三角形の法線方向をビュー座標系のz+にする場合…

回転行列から単位四元数への変換

回転行列から単位四元数への変換 回転姿勢を表す回転行列を単位四元数に変換します。 回転行列を とし、単位四元数を とします。 このとき、次の式が成り立ちます。(四元数による回転の式 参照)また、 は単位四元数なので、以下が成り立ちます。 の対角成分…

ジンバルロック

ジンバルロックとは wikipediaより引用です。 「航空宇宙分野の慣性航法システムのジャイロにおけるジンバルなど、3軸の全てに自由な運動がある場合は、 機体の回転によって3つのジンバルリングのうち2つの軸が同一平面上にそろってしまうジンバルロック(英…

四元数による回転

四元数による回転の要件 が回転を表すためには、長さと角度と掌性を保存しなければなりません。 長さが保存されるのは、 について以下の等式が成り立つときです。原点から2点 と へ結んだ線分の角が保存されるのは、以下の等式が成り立つときです。掌性が保…

任意軸まわりの回転 - ロドリゲスの回転公式

任意軸まわりの回転 単位ベクトル まわりに点 (位置ベクトル)を 回転した点を (位置ベクトル ) とすると、以下のようになります。 はロドリゲスの回転公式と言います。 任意軸まわりの回転の導出 を導出します。 下図を参考にして、 を分解します。 は同一円…

3Dグラフィックスのための数学入門

はじめに この本は、CGでよく使われる数学の手法をまとめたものです。 良い本だと思います。 章ごとに一言解説 1章 復習:高校の数学から大学の数学まで ほぼ読んでいない。さらっと目を通しただけ。2章 CGの原理 ほぼ読んでいない。さらっと目を通しただけ。…

四元数

はじめに 四元数という複素数を拡張したような数を紹介します。 複素数の知識があったほうが良いとは思いますが、まあ無くとも大丈夫なはずです。 四元数ははっきり言って応用範囲が狭く、3次元の回転(CGやロボットの姿勢)のみでしか応用されていないように…

透視深度に関する考察

はじめに 本記事は、以前書いた透視投影変換行列 - 導出その2の投影に関する部分が分かりにくく疑問点が残ると思ったので、それを解決するために書きました。 本記事の大きな流れは、「標準的な透視投影について」、「透視投影変換行列についての考察」、「…

光源

環境光 環境光はすべての方向から等しい強度でやってきます。よって、定数です。 平行光源 平行光源とは、無限遠方から単一の方向に向かって光を放射する光源です。 太陽のような平行であると考えられる光源のモデル化に使われます。 点光源 点光源とは、空…

曲線の接続部分の表示

次の線分を見る G0連続であるが、G1連続(接線)でない2つの曲線があります。 WebGL/OpenGLでこれらの曲線にある程度太さを持たせて描画することを考えてください。 その時、曲線を微小な線分に分割して、それを覆うような四角形(四角形ストリップ)で描画する…

透視投影

透視投影とは ビュー座標系からクリッピング座標系への変換を投影変換といい、透視投影とはその1種です。 具体的には、空間上に錐台の視体積(視錐台)を定め、それを原点が中心とした辺の長さが2の直方体(標準視体積)へ移す変換のことです。 透視投影変換行列…

平行投影

平行投影とは ビュー座標系からクリッピング座標系への変換を投影変換といい、平行投影とはその1種です。 具体的には、空間上に直方体(視体積)を定め、それを原点が中心とした辺の長さが2の直方体(標準視体積)へ移す変換のことです。 ビュー座標系の視体積が…

ビューポート変換

ビューポート変換とは 正規化デバイス座標系からデバイス座標系への変換のことです。 この変換は、もちろん行列によって行われますが、プログラムをすることって少ないと思います。 WebGLならgl.viewport(x,y, witdh, height) と呼びだすだけですし、他のグ…

直交座標系の変換

直交座標系の変換 正規直交基底 を軸とする座標系上の点の位置 を、 この座標系と原点を共有する別の正規直交基底 を軸とする座標系に移す変換は、回転の変換となります。 それぞれの座標系における の座標値を、 と とすると、以下が成り立ちます。 より求…

canvas座標系からデバイス座標系への変換

canvas座標系とは htmlにおけるcanvasの左上隅が原点で右側がx+、下側がy+の座標系のことをcanvas座標系と呼ぶことにします。 このcanvas座標系は、縮尺がデバイス座標系と同じでy+の向きが異なるだけですが、あえて取り上げてみることにしました。 canvas座…

ビュー変換

ビュー変換とは ワールド座標系からビュー座標系への変換のことで、4x4の行列で表現します。 イメージとしては、この変換により、ビュー座標系の原点が視点となるといった感じです。 この変換は、回転と平行移動を合わせたものです。 この変換にlookAt関数が…

点列に2次ベジェ曲線群をフィットさせる - mousemoveイベントなどで使用することを想定

はじめに 本アルゴリズムは、かなり前にネットで見つけた方法で、出所を忘れてしまいました。 単純なアルゴリズムですが、効果はあります。 要件 点列 にフィットする2次ベジェ曲線群を求めたいとします。 点列の数 は3以上であるとします。Canvas上(描画可…

モデル変換

モデル変換とは モデル座標系からワールド座標系への変換のことで、4x4の行列で表現します。 イメージとしては、この変換により、モデルをワールド座標系に配置するといった感じです。 モデル座標系は、自由に指定します。 この変換は、拡大縮小、回転、平行…

幅のある3次ベジェ曲線を定義してみる

はじめに 左右の異なる幅を3次ベジェ曲線を定義できれば、面白いものが作れるんじゃないかと思ったので、考えてみました。 非常に単純なアルゴリズムです。 幅をどうやって定義するか 左の幅、右の幅とは3次ベジェ曲線の接線ベクトルの方法に対しての左右で…

レンダリングパイプラインの概要

概要 モデル座標系(3次元)の点が様々な変換を通じて最終的にはデバイス座標系(2次元)に変換されます。 その過程をレンダリングパイプラインと言います。 その概要は以下です。モデル座標系(ローカル座標系、オブジェクト座標系) - 3次元 ↓ モデル変換 ↓ ワー…

三角形と線分の交点

アルゴリズム 三角形の頂点の位置ベクトルを 、線分の端点の位置ベクトルを とします。 三角形の頂点を通る平面の法線ベクトル を求めます。三角形の頂点を通る平面の方程式 を求めます。交点 は以下のようになります。線分の端点が2つとも平面上にある、ま…

WebGLにおけるピック

はじめに canvas上をクリックして、その点におけるローカル座標系の座標を取得する方法です。 アルゴリズム モデルビュー行列を 、射影行列を とします。 まずは、ローカル座標系(オブジェクト座標系)から正規化デバイス座標系への行列 を求めます。次にクリ…

法線行列

法線行列とは 光源の方向ベクトルと点の法線ベクトルから輝度を計算しますが、その時の座標系はビュー座標系であることが多いはずです。 法線ベクトルは方向ベクトルなので、モデルビュー行列をそのまま掛けるわけにはいきませんし、 異方性のある拡大縮小や…

目次へ戻る