एक triangulated सममितीय ग्रिड में, क्या त्रिकोण के किसी भी बिंदु है?

वोट
5

मैं एक triangulated सममितीय ग्रिड, इस तरह है: वैकल्पिक

मेरे कोड में, त्रिकोण स्तंभों के आधार पर वर्गीकृत किया है।

मैं माउस होवर रूप में, मैं गणना करने के लिए क्या त्रिकोण माउस निर्देशांक में कर रहे हैं। वहाँ ऐसा करने के लिए एक सरल एल्गोरिथ्म है करना चाहते हैं?

15/02/2010 को 05:20
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


2 जवाब

वोट
4

क्या आप क्या करना चाहते एक ग्रिड में इस बारी जितना संभव हो उतना क्योंकि ग्रिड दूर के साथ काम करने के लिए आसान कर रहे हैं।

सबसे पहले आपको बाहर काम क्या कॉलम में है। आप कहते हैं कि आप की दुकान है कि तो यह पर एक साधारण पूर्णांक विभाजन करके आसान होना चाहिए एक्स स्तंभ चौड़ाई बॉक्स शुरू की भरपाई से समन्वय। आसान।

उसके बाद आप बाहर काम करने के क्या त्रिकोण क्या है (जाहिर है) चाहते हैं। कैसे आप आंशिक रूप से एक ग्रिड में इस बारी आप बहाना आप के बजाय सममितीय त्रिकोण के ढेर समकोण त्रिकोण के एक ढेर है कि है।

त्रिकोण y अक्ष (स्तंभ की ओर) के साथ लंबाई की है। दो में यह संख्या विभाजित करते और बाहर काम आप कितने कदम नीचे है। चरणों की संख्या पर नीचे आधारित है और अगर स्तंभ है सम या विषम आपको बता आप देख रहे हैं, तो होगा:

+--------+
|-_      |
|  -_    |
|    -_  |
|      -_|
+--------+

या रिवर्स। इस बिंदु पर आप केवल निर्धारित करने के लिए लाइन के किस ओर यह निर्धारित करने के लिए पर है जो सही त्रिकोण क्या है, जो भी आपको यह बताती है सममितीय त्रिकोण क्या है की जरूरत है।

आप इस के लिए विकल्पों में से एक जोड़ी है।

  1. आप कर्ण रेस्टराइज़ करने के लिए Bresenham की लाइन एल्गोरिथ्म की तरह कुछ इस्तेमाल कर सकते हैं और जब आप स्तंभ मारा तुम बाहर काम कर रहे हैं यदि आप ऊपर या कि रेखा से नीचे कर रहे हैं;
  2. क्योंकि आप केवल दो संभव ग्रिड यहाँ (एक अन्य के विपरीत किया जा रहा है तो यह वास्तव में केवल एक ही है)। आप पंक्ति मूल्यों की एक सरणी संग्रहीत कर सकती है, कह रही है कॉलम 3 के लिए, कर्ण है कि कम से 2 ऑफसेट, जबकि 6 के लिए वह 4 पर और इतने पर है।

तुम भी (1) (2) उत्पन्न करने के लिए एक तेजी से देखने के रूप में इस्तेमाल कर सकते हैं।

विचार करने के लिए केवल दूसरी बात यह है कि क्या होता है, तो माउस कर्सर एक किनारे पर है?

15/02/2010 को 05:32
का स्रोत उपयोगकर्ता

वोट
3

यह वही है cletus कहा करने के लिए समान है, लेकिन इस पर गौर करने के लिए एक अलग तरह से मुझे लगता है।

मैं यह सोचते हैं हूँ त्रिकोण पक्ष 1 है।

मान लीजिए आप नीचे के रूप में ग्रिड है:

       y'
      /
     /__/__/__/__/__/__/
    /__/__/__/__/__/__/
   /__/__/__/__/__/__/____ x'
(0,0)

यदि आप एक समन्वय प्रणाली में ग्रिड जिसमें x और y अक्ष 60 डिग्री, एक बिंदु है, जिसका कोणीय प्रणाली में समन्वय (एक्स ', वाई') के कोण पर हैं पर विचार करें में समन्वय करने के लिए अनुरूप होगा ओर्थोगोनल व्यवस्था करने के लिए (एक्स, वाई) (एक ही मूल कुल्हाड़ियों के सामान्य दिशा के साथ)।

आपकी समस्या के लिए, आपको दिया जाता है (एक्स, वाई), हम ( ', वाई' एक्स) को खोजने के लिए और फिर त्रिकोण यह पता लगाने की जरूरत है।

अगर मैं एक्स और जे वाई-साथ ओर्थोगोनल साथ इकाई वेक्टर है, तो हम उस राशि

x'* i + y'( i/2 + sqrt(3) * j /2) = xi + yj.

(मूल रूप से 'angled' वाई अक्ष के साथ इकाई वेक्टर मैं / 2 + sqrt (3) / 2 * j है। एक्स अक्ष के साथ इकाई वेक्टर सामान्य एक्स-अक्ष, यानी मैं रूप में ही है)।

इस प्रकार

x' + y'/2 = x
y' * sqrt(3)/2 = y

हल देता है:

y' = 2*y/sqrt(3)
x' = x - y/sqrt(3)

अभी है कि एक्स मान लें 'और वाई' सकारात्मक रहे हैं।

अब अगर ग = [एक्स '], एक्स के पूर्णांक भाग'

और आर = [y '], वाई के पूर्णांक भाग'

तो में (कोणीय) ग्रिड, बिंदु CTH स्तंभ और rth पंक्ति में निहित है। (सही गिनती और ऊपर और 0 से गिनती शुरू)।

इस प्रकार हम एक समानांतर चतुर्भुज को अपनी बात को संकुचित होता है

       ____
      /\ * /   
     /___\/
   (c,r)

अब क्रम में पता लगाने के लिए जो त्रिकोण उस में आप एक्स 'और वाई' की आंशिक भागों पर विचार कर सकते हैं।

{x} = x' - [x'] = x' - c.
{y} = y' - [y'] = y' - r.

अभी व,

अगर {x} + {y} > 1है, तो बिंदु त्रिकोण * से चिह्नित में निहित है। अगर {x} + {y} < 1है, तो बिंदु अन्य त्रिकोण में निहित है। अगर {x} + {y} = 1है, तो बिंदु लाइन दो त्रिकोण के लिए आम पर स्थित है।

आशा है कि वह भी मदद करता है।

15/02/2010 को 09:45
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more