一方の菱形の角度の分布は、1:4、36°:144°、他の2:3、72°:108°です。 菱形の角度は、1回転の10分の1の倍数、36°です。
通常の十角形の角の座標を定義します。
学位 | cos | 罪 |
---|---|---|
0 | 1 | 0 |
36 | 0.809017 | 0.587785 |
72 | 0,309017 | 0.951056 |
残りは対称的で、符号のみが変わります。
角度36°と72°の余弦が0.5異なることがすぐにわかります。 これは非常に重要な事実です!
座標の絶対値は、横座標と縦座標の両方で正確に3つの部分です。 3つすべては、整数係数を持つ2つの係数として表すことができます。
横座標の場合、これは簡単です。値の中にはゼロがあり、これはゼロ係数で表されます。 縦座標の中で、3番目の単位は他の2つに比例しません。 しかし、座標の差は0.5なので、この差は係数の1つになり、2番目の係数はより小さな値になります。 値1は2の係数で取得されます。
* 36° | x | y | ||
C xa = 0.5 | C xb = 0.309017 | C ya = 0.951056 | C xb = 0.587785 | |
0 | 2 | 0 | 0 | 0 |
1 | 1 | 1 | 0 | 1 |
2 | 0 | 1 | 1 | 0 |
3 | 0 | -1 | 1 | 0 |
4 | -1 | -1 | 0 | 1 |
5 | -2 | 0 | 0 | 0 |
6 | -1 | -1 | 0 | -1 |
7 | 0 | -1 | -1 | 0 |
8 | 0 | 1 | -1 | 0 |
9 | 1 | 1 | 0 | -1 |
そして、それは整数座標系があることを意味します。
係数は同じ係数でペアごとに異なります。これは黄金比の比率です。
係数の正確な表現を導き出すことができます。
次は、ゴールデンセクションの魔法です。
したがって、多くのパターン:
自明:
係数の比率が等しいため:
係数の二乗:
アートワーク:
これらのプロパティに基づいて、ベクトルの整数乗算の行列を作成できます。
const crd vmul[16] = { { 1, 0, 0, 0}, { 0, 1, 0, 0}, { 0, 0, 1, 0}, { 0, 0, 0, 1}, { 0, 1, 0, 0}, { 1,-1, 0, 0}, { 0, 0, 0, 1}, { 0, 0, 1,-1}, { 0, 0, 1, 0}, { 0, 0, 0, 1}, {-3,-1, 0, 0}, {-1,-2, 0, 0}, { 0, 0, 0, 1}, { 0, 0, 1,-1}, {-1,-2, 0, 0}, {-2, 1, 0, 0} };
そして、すべての乗算は
int* vm = (int*)vmul; for(int i = 0; i < 4; i++) for(int j = 0; j < 4; j++) for(int k = 0; k < 4; k++) v3[k] += v1[i] * v2[j] * vm[(i * 4 + j) * 4 + k];
このシステムのベクトル単位は{2,0,0,0}として表されます。 そのようなユニットの単純な転置の後、{4,0,0,0}を取得します。 したがって、係数の各式にあった2つへの分割は、正規化として個別に行われます。
for(int i = 0; i < 4; i++) v3[i] /= 2;
この座標系の特徴は、与えられた精度で平面全体をカバーすることです。 任意の数のステップを繰り返して、10方向のいずれかを選択し、整数座標のままにすることができます。
しかし、座標のすべての組み合わせが開始位置から到達可能な場所を決定するわけではありません。
座標の展開の1ステップについては、次のとおりです:{2,0,0,0}、{1,1,0,1}、{0,1,1,0}、{0、-1,1,0}、{ -1、-1,0,1}、{-2,0,0,0}、{-1、-1,0、-1}、{0、-1、-1,0}、{0、 1、-1.0}、{1,1.0、-1}。 これらの手順の任意の組み合わせが有効です。
単一のステップ{2,0,0,0}の組み合わせとともに
{0,1,1,0}-{0,1、-1,0} = {0,0,2,0}、
{1,1,0,1}-{1,1,0、-1} = {0,0,0,2}、
{1,1,0,1} + {1,1,0、-1}-{2,0,0,0} = {0,2,0,0}
つまり、任意の単一の座標を2ずらすことができるため、到達可能性は座標のグループパリティによってのみ影響を受けます。 達成可能な組み合わせは4つあります:ゼロ:{0,0,0,0}、単一ステップから:{1,1,0,1}、{0,1,1,0}、およびそれらの組み合わせ:{1,0、 1,1}。
ご覧のように、横座標のグループパリティは、縦座標のグループパリティと一意に相互接続されています。 これは、垂直座標が4つのタイプに分割され、水平座標も4つのタイプに分割され、ポイントが正しく結合された場合にのみ座標系に属することを意味します。
任意の点に近づくには、グループパリティを考慮して、各座標を適切な整数因子に分解する必要があります。
一般に、整数の座標値と36度の回転を組み合わせた座標系があります。 彼女を連れ出したとき、私は彼女のことを前に知らなかったことに驚きました。 しかし今、彼女に関する記事がHabréにあります。