महत्वपूर्ण नोट: यह उत्तर वास्तविक प्रश्न का उत्तर नहीं देता है , लेकिन इसे प्रति अनुरोध के अनुसार हटा दिया गया था। शर्मनाक तरीके से मैंने हेक्साहेड्रल और हेक्सागोनल को भ्रमित किया। यह सवाल 3 डी में मनमाने ढंग से हेक्साहेड्रल कोशिकाओं में अंक छांटने के बारे में है, जबकि यह समाधान 2 डी में नियमित हेक्सागोनल कोशिकाओं या अनियमित आयामों में इंगित करता है जो किसी भी आयाम में कुछ वोरोनोई टेसलेशन के अनुरूप हैं। यह विधि केवल तभी लागू होती है जब जाली पहले स्थान पर वोरोनोई टेसेलेशन के रूप में उत्पन्न हुई थी (जो कभी-कभी उपयोग किया गया दृष्टिकोण प्रतीत होता है )।
मुझे यकीन नहीं है कि आप यहां किस तरह का मतलब रखते हैं, लेकिन मुझे लगता है कि आप विमान पर हेक्सागोनल डिब्बे में बिंदु को सॉर्ट करना चाहते हैं।
मैथेमेटिका वह है जो मैं जानता हूं, इसलिए मैं आपको यह दिखाने जा रहा हूं कि इसे मैथमेटिका में कैसे किया जाए, लेकिन विधि को अन्य प्रणालियों में पोर्ट किया जा सकता है। विचार यह है कि एक हेक्सागोनल जाली त्रिकोणीय एक का दोहरी है: इसे त्रिकोणीय व्यवस्था में एक बिंदु के वोरोनोई आरेख के रूप में उत्पन्न किया जा सकता है। क्लाउड का एक बिंदु किसी दिए गए षट्भुज का है यदि यह किसी अन्य षट्भुज के केंद्र की तुलना में उस षट्भुज के केंद्र के करीब है।
यह विधि विभिन्न आकृतियों के मेश के लिए भी काम करेगी, जब तक कि वे कुछ बिंदु व्यवस्था के वोरोनोई आरेख के रूप में उत्पन्न हो सकते हैं। (जैसे हेक्सागोन को नियमित होने की आवश्यकता नहीं है।)
चलो जाल पैदा करते हैं। यह एक त्रिकोण जाली है:
pts = Join @@ Table[{x, Sqrt[3] y}, {x, 0, 4}, {y, 0, 2}];
points = Join[pts, TranslationTransform[{1/2, Sqrt[3]/2}] /@ pts];
Needs["ComputationalGeometry`"]
PlanarGraphPlot[points, LabelPoints -> False]
इसकी दोहरी हेक्सागोनल हम में रुचि रखते हैं:
DiagramPlot[points, LabelPoints -> False]
यह एक फ़ंक्शन बनाता है nf
जो हेक्सागोन केंद्र के सूचकांक को पाता है जो कुछ क्लाउड बिंदु के सबसे करीब है। यह विधि की कुंजी है:
nf = Nearest[N[points] -> Range@Length[points]];
अब चलो 1000 यादृच्छिक बिंदुओं के एक बादल को उत्पन्न करते हैं और उनके साथ छाँटते हैं nf
:
cloud = RandomReal[{-1/2, 5}, {1000, 2}];
indices = First /@ nf /@ cloud;
indices
केंद्रों के सूचकांक शामिल हैं जो प्रत्येक क्लाउड बिंदु के सबसे करीब है। यह वह जानकारी है जिसकी हमें जरूरत थी। अब हम उनमें से एक हिस्टोग्राम बना सकते हैं ...
Histogram[indices]
... या उनमें से प्रत्येक रंग ...
Show[
DiagramPlot[points, LabelPoints -> False],
Graphics@MapThread[{ColorData[3][#1], Point[#2]} &, {indices, cloud}],
PlotRange -> All, AspectRatio -> Automatic
]
... या किसी भी प्रकार की फैंसी विज़ुअलाइज़ेशन हम चाहते हैं।
tally = Tally[indices];
ListDensityPlot[Join[points, List /@ Sort[tally][[All, 2]], 2],
InterpolationOrder -> 0,
Epilog -> (Text[#2, points[[#1]]] & @@@ tally),
PlotRange -> {{-.5, 5}, {-.5, 5}}, Mesh -> All,
ColorFunction -> (ColorData["BeachColors"][1 - #] &)]
यहाँ मुख्य बिंदु वह फ़ंक्शन था जो किसी चीज़ के निकटतम बिंदु को पाता है ( Nearest
)। Mathematica ने इसे बनाया है, लेकिन एक मौका है कि आपका सिस्टम ऐसा नहीं करता है। यदि यह मामला है, तो कृपया इस प्रश्न को देखें कि इस तरह के फ़ंक्शन को कुशलतापूर्वक कैसे लागू किया जाए (या बस अनुभवहीन रैखिक कार्यान्वयन के साथ जाएं यदि आपके पास प्रक्रिया के लिए बहुत बड़ी मात्रा नहीं है)।