2: 2016-08-11 (木) 00:31:38 osinko |
3: 2016-08-11 (木) 12:09:23 osinko |
| 表紙に書かれた文句を吟味して意味を考えるとunityとの相性のようなものがうかがえる | | 表紙に書かれた文句を吟味して意味を考えるとunityとの相性のようなものがうかがえる |
| | | |
- | 古典的な幾何学では「ずらす」とは「長さと角度を変えない平行移動回転と裏返し及びそれらの組み合わせでイメージとしては「動かしても形が変わらない物体(剛体:Rigidbody)」を考えている。(ゲームで例えればボーンやスケルトンの入っていないポリゴンキャラクターになるらしい)。変換:トランスフォーム(Transform)の意味を考えると合同の新しい概念が生まれる。たとえば図形をずらした時に「線の長さや形は変えてもいい」(直線を折れ線、曲線に変えてよい。切ったり繋いだり、交差させるのはNG)とすると「軟体」となり三角形は円と合同になるが線分とは合同ではない。許される変換の集合は実は”群”(変換群)となるので古典的な多くの幾何学を群論によって統一的に記述することができる。それがエルランゲン計画である。 | + | 古典的な幾何学では「ずらす」とは「長さと角度を変えない平行移動回転と裏返し及びそれらの組み合わせ」でイメージとしては「動かしても形が変わらない物体(剛体:Rigidbody)」を考えている。(ゲームで例えればボーンやスケルトンの入っていないポリゴンキャラクターになるらしい)。変換:トランスフォーム(Transform)の意味を考えると合同の新しい概念が生まれる。たとえば図形をずらした時に「線の長さや形は変えてもいい」(直線を折れ線、曲線に変えてよい。切ったり繋いだり、交差させるのはNG)とすると「軟体」となり三角形は円と合同になるが線分とは合同ではない。許される変換の集合は実は”群”(変換群)となるので古典的な多くの幾何学を群論によって統一的に記述することができる。それがエルランゲン計画である。 |
| &ref(unity1.png); | | &ref(unity1.png); |
| | | |
| | | |
| パラメーター\(t\)に任意の数字を入れて計算すると\(x=\left\{ \cdots 12,9,6,3,0,-3,\cdots \right\} \quad y=\left\{ \cdots -26,-19,-12,-5,2,9,\cdots \right\} \) | | パラメーター\(t\)に任意の数字を入れて計算すると\(x=\left\{ \cdots 12,9,6,3,0,-3,\cdots \right\} \quad y=\left\{ \cdots -26,-19,-12,-5,2,9,\cdots \right\} \) |
- | これはパラメーターに対してベクトルで表現できる? | + | これはパラメーター\(t\)に対してベクトルで表現できる |
| | | |
| \({ a }_{ n }=\begin{pmatrix} { x }_{ n } \\ { y }_{ n } \end{pmatrix}=\begin{pmatrix} 6-3n \\ 7n-12 \end{pmatrix}=\left\{ \cdots ,\begin{pmatrix} 12 \\ -26 \end{pmatrix},\begin{pmatrix} 9 \\ -19 \end{pmatrix},\begin{pmatrix} 6 \\ -12 \end{pmatrix},\begin{pmatrix} 3 \\ -5 \end{pmatrix},\begin{pmatrix} 0 \\ 2 \end{pmatrix},\begin{pmatrix} -3 \\ 9 \end{pmatrix},\cdots \right\} \) | | \({ a }_{ n }=\begin{pmatrix} { x }_{ n } \\ { y }_{ n } \end{pmatrix}=\begin{pmatrix} 6-3n \\ 7n-12 \end{pmatrix}=\left\{ \cdots ,\begin{pmatrix} 12 \\ -26 \end{pmatrix},\begin{pmatrix} 9 \\ -19 \end{pmatrix},\begin{pmatrix} 6 \\ -12 \end{pmatrix},\begin{pmatrix} 3 \\ -5 \end{pmatrix},\begin{pmatrix} 0 \\ 2 \end{pmatrix},\begin{pmatrix} -3 \\ 9 \end{pmatrix},\cdots \right\} \) |
| + | |
| + | これが何故、ベクトルなのかは実際にunity上でグラフを描いてみると分かる。パーティクルとラインレンダーを利用してグラフを書いてみる。以下のコードを実行後エディタで視点を動かして確認すると直線グラフが描かれていることがわかる(このようにunityを三次元グラフを描けるツールとして利用するのも可能) |
| + | &ref(vec1.png); |
| + | |
| + | #code(csharp){{ |
| + | using UnityEngine; |
| + | using System.Collections; |
| + | |
| + | public class Vec1 : MonoBehaviour |
| + | { |
| + | int work = 16; |
| + | float particleSize = 3f; |
| + | float lineWidth = 0.5f; |
| + | |
| + | LineRenderer line; |
| + | ParticleSystem pe; |
| + | ParticleSystem.Particle[] point; |
| + | |
| + | void Start() |
| + | { |
| + | pe = gameObject.AddComponent<ParticleSystem>(); |
| + | pe.startSpeed = 0; |
| + | pe.startLifetime = float.MaxValue; |
| + | |
| + | line = gameObject.AddComponent<LineRenderer>(); |
| + | line.SetWidth(lineWidth, lineWidth); |
| + | line.SetVertexCount(work+1); |
| + | |
| + | CreateLineAndPoint(); |
| + | } |
| + | |
| + | void CreateLineAndPoint() |
| + | { |
| + | pe.Emit(work); |
| + | point = new ParticleSystem.Particle[work+1]; |
| + | pe.GetParticles(point); |
| + | |
| + | for (int n =0; n <= work; n++) |
| + | { |
| + | Vector3 pos = new Vector3(Xn(n), Yn(n), 0); |
| + | point[n].position = pos; |
| + | point[n].color = Color.white; |
| + | point[n].size = particleSize; |
| + | line.SetPosition(n, pos); |
| + | } |
| + | pe.SetParticles(point, work); |
| + | } |
| + | |
| + | float Xn(int n) |
| + | { |
| + | return 6 - (3 * n); |
| + | } |
| + | |
| + | float Yn(int n) |
| + | { |
| + | return (7 * n) - 12; |
| + | } |
| + | |
| + | } |
| + | |
| + | }} |
| | | |
| ***ユークリッドの互除法 [#tcf9a773] | | ***ユークリッドの互除法 [#tcf9a773] |
| using UnityEngine; | | using UnityEngine; |
| using System.Collections; | | using System.Collections; |
- | using System; | |
| | | |
| public class Alg1 : MonoBehaviour { | | public class Alg1 : MonoBehaviour { |