Ben sadece burada CodePlex.com onaltılık ızgara faydaları bir kütüphane postd var:
https://hexgridutilities.codeplex.com/
Kütüphane yol bulma içerir (A- * a la Eric Lippert kullanarak) ve arasında otomatik dönüşüm için yararları içerir tırtıklı (Kullanıcı olarak adlandırılan) kordinler ve tırtıklı olmayan (Kanonik olarak adlandırılan) koordinatlar. Yol bulma algoritması, her bir düğüm için adım maliyetinin hem hex hem te altıgen girişine göre değişmesine izin verir (sağlanan örnek daha basit olsa da). Ayrıca, gölge yayınlama kullanılarak yükseltilmiş görüş alanı sağlanmıştır, [değiştir: kelimeler kaldırıldı].
İşte üç altıgen ızgaralı koordinat sistemi arasında kolayca dönüşen bir kod örneği:
static readonly IntMatrix2D MatrixUserToCanon = new IntMatrix2D(2,1, 0,2, 0,0, 2);
IntVector2D VectorCanon {
get { return !isCanonNull ? vectorCanon : VectorUser * MatrixUserToCanon / 2; }
set { vectorCanon = value; isUserNull = isCustomNull = true; }
} IntVector2D vectorCanon;
bool isCanonNull;
static readonly IntMatrix2D MatrixCanonToUser = new IntMatrix2D(2,-1, 0,2, 0,1, 2);
IntVector2D VectorUser {
get { return !isUserNull ? vectorUser
: !isCanonNull ? VectorCanon * MatrixCanonToUser / 2
: VectorCustom * MatrixCustomToUser / 2; }
set { vectorUser = value; isCustomNull = isCanonNull = true; }
} IntVector2D vectorUser;
bool isUserNull;
static IntMatrix2D MatrixCustomToUser = new IntMatrix2D(2,0, 0,-2, 0,(2*Height)-1, 2);
static IntMatrix2D MatrixUserToCustom = new IntMatrix2D(2,0, 0,-2, 0,(2*Height)-1, 2);
IntVector2D VectorCustom {
get { return !isCustomNull ? vectorCustom : VectorUser * MatrixUserToCustom / 2; }
set { vectorCustom = value; isCanonNull = isUserNull = true; }
} IntVector2D vectorCustom;
bool isCustomNull;
IntMatrix2D ve IntVector2D, affine2D Graphics Vector ve Matrix'in [edit: homojen] tamsayı uygulamalarıdır. Vektör uygulamalarında son olarak 2'ye bölünme, vektörlerin yeniden normalleştirilmesidir; bu IntMatrix2D uygulamasında gömülebilir, ancak daha sonra IntMatrix2D yapıcılarına yönelik 7. argümanın nedeni daha az belirgindir. Mevcut olmayan formülasyonların birleşik önbellekleme ve tembel değerlendirmesine dikkat edin.
Bu matrisler durum içindir:
- Altıgen tane dikey;
- Kanonik ve Kullanıcı koordinatları için sol üstte, Özel koordinatlar için sol altta;
- Y ekseni dikey olarak aşağı;
- Dikdörtgen X ekseni yatay olarak; ve
- Kuzeydoğu'ya kanonik X ekseni (yani, yukarı ve sağa, Y ekseninden 120 derece CCW).
Yukarıda bahsedilen kod kütüphanesi, onaltılık toplama için benzer şekilde zarif bir mekanizma sağlar (yani, bir fare tıklaması ile seçilen altıgenin tanımlanması).
Kanonik koordinatlarda, 6 kardinal yön vektörü, pürüzlü koordinatların asimetrisi olmadan, (1,0), (0,1), (1,1) ve bunların tüm altıgenler için ters çevrilmesidir.