मैंने अभी यहां CodePlex.com पर हेक्स-ग्रिड उपयोग की एक लाइब्रेरी पोस्ट की है:
https://hexgridutilities.codeplex.com/
लाइब्रेरी में पथ-खोज (A- * a la Eric Lippert का उपयोग करना) और स्वचालित रूपांतरण के बीच उपयोग शामिल हैं दांतेदार (उपयोगकर्ता कहा जाता है) कॉर्डिनेट और गैर-दांतेदार (कैन्यनिकल) निर्देशांक। पाथ-फाइंडिंग एल्गोरिथ्म प्रत्येक नोड के लिए स्टेप कॉस्ट को प्रवेश हेक्स और टे ट्रैवर्सेड हेक्स-साइड दोनों के साथ अलग-अलग करने की अनुमति देता है (हालांकि प्रदान किया गया उदाहरण सरल है)। इसके अलावा, छाया-कास्टिंग का उपयोग करके उन्नत फ़ील्ड-ऑफ-व्यू प्रदान किया जाता है, [संपादित करें: हटाए गए शब्द]।
यहां एक कोड नमूना है जो तीन हेक्स-ग्रिड समन्वय प्रणालियों के बीच आसानी से परिवर्तित होता है:
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 और IntVector2D हैं [संपादित करें: सजातीय] affine2D ग्राफिक्स वेक्टर और मैट्रिक्स का पूर्णांक कार्यान्वयन। वेक्टर अनुप्रयोगों पर 2 से अंतिम विभाजन वैक्टर को फिर से सामान्य करने के लिए है; यह IntMatrix2D कार्यान्वयन में दफन किया जा सकता है, लेकिन फिर IntMatrix2D कंस्ट्रक्टर्स के लिए 7 वें तर्क का कारण कम स्पष्ट है। गैर-मौजूदा योगों के संयुक्त कैशिंग और आलसी-मूल्यांकन पर ध्यान दें।
ये मैटर केस के लिए हैं:
- हेक्स अनाज ऊर्ध्वाधर;
- Canonical और उपयोगकर्ता निर्देशांक के लिए ऊपरी-बाएँ में उत्पत्ति, कस्टम निर्देशांक के लिए निचले-बाएँ;
- वाई-अक्ष लंबवत रूप से नीचे;
- आयताकार X- अक्ष क्षैतिज रूप से पार; तथा
- उत्तर-पूर्व (यानी ऊपर और दाईं ओर, 120 डिग्री CCW Y- अक्ष से) के लिए कैन्यिकल एक्स-एक्सिस।
ऊपर उल्लिखित कोड लाइब्रेरी हेक्स-पिकिंग के लिए एक समान रूप से सुरुचिपूर्ण तंत्र प्रदान करता है (यानी माउस क्लिक से चयनित हेक्स की पहचान)।
Canonical निर्देशांक में, 6 कार्डिनल दिशा-वेक्टर हैं (1,0), (0,1), (1,1) और सभी हेक्सागोन्स के लिए उनके आक्रमण, दांतेदार कॉर्डिनेट्स की अस्मिता के बिना।