2012-07-04 11 views
11

मैं एक केंद्र एक्स, 0,0 के वाई के आसपास कुछ ग्राफिंग कर रहा हूं। जब प्रस्तुत करने का समय होता है, तो मैं अनुवाद के साथ पुनर्स्थापन करता हूं, और फिर ग्राफ को कैनवास भरने के लिए स्केल का उपयोग करता हूं (यानी उदाहरण के लिए 50% तक स्केल सब कुछ)।एचटीएमएल 5 कैनवास स्केल को समझना और ऑर्डर का अनुवाद

मुझे लगता है कि यह महत्वपूर्ण है कि आप स्केल करते हैं और फिर अनुवाद करते हैं, या अनुवाद करते हैं और फिर स्केल करते हैं और मैं इसके चारों ओर अपना सिर नहीं ले सकता। यह एक समस्या है क्योंकि सबकुछ हमेशा फिट नहीं होता है, लेकिन मेरा मानसिक मॉडल पूरा नहीं होता है इसलिए इसे ठीक करने में कठिनाई होती है।

क्या कोई बता सकता है कि पैमाने का क्रम और अनुवाद कॉल का मामला क्यों मायने रखता है?

उत्तर

16

तो चलो एक 300x300 कैनवास पर एक ग्रिड आकर्षित करते हैं:

http://jsfiddle.net/simonsarris/4uaZy/

enter image description here

यह करना होगा। कुछ खास नहीं। एक लाल रेखा इंगित करती है कि मूल कहां से चल रहा है (0,0) और बहुत दूर तक फैला हुआ है, इसलिए जब हम इसका अनुवाद करते हैं तो हम कुछ देखेंगे। यहां मूल शीर्ष बाएं कोने है, जहां लाल रेखाएं (0,0) पर मिलती हैं।

ग्रिड खींचने से पहले नीचे दिए गए सभी अनुवाद होते हैं, इसलिए हम ग्रिड को ले जायेंगे। यह आपको यह देखने देता है कि ऑर्गीन के साथ क्या हो रहा है।

enter image description here

http://jsfiddle.net/simonsarris/4uaZy/1/

तो हम मूल है, जो अनुवाद किया है जहां लाल X है:


तो 100,100 से कैनवास का अनुवाद है, यह नीचे जा + सही करने देता है केन्द्रित। उत्पत्ति अब 100,100 पर है।


अब हम अनुवाद करेंगे और फिर स्केल करेंगे। ध्यान दें कि मूल छवि के समान स्थान एक ही स्थान पर है, सबकुछ केवल दोगुना बड़ा है।

enter image description here

http://jsfiddle.net/simonsarris/4uaZy/2/

बूम। ऑर्गिन अभी भी 100,100 पर है। हालांकि सब कुछ 2 से भरा हुआ है। उत्पत्ति बदल गई, तो सबकुछ जगह पर फंस गया।


अब रिवर्स में उनकी ओर देखो देता है।इस बार हम पहले पैमाने, तो सब कुछ शुरू से ही मोटा है:

enter image description here

http://jsfiddle.net/simonsarris/4uaZy/3/

सब कुछ 2. से फूला हुआ है मूल 0,0 पर है, इसके प्रारंभिक बिंदु।


अब हम एक पैमाने और फिर अनुवाद करते हैं।

enter image description here

http://jsfiddle.net/simonsarris/4uaZy/4/

हम 100,100 अभी भी द्वारा अनुवाद कर रहे हैं, लेकिन मूल वास्तविक पिक्सल में 200,200 से ले जाया गया है। पिछले दो छवियों की तुलना करें।

ऐसा इसलिए है क्योंकि स्केल के बाद होने वाली प्रत्येक चीज को स्केल किया जाना चाहिए, जिसमें अतिरिक्त परिवर्तन शामिल हैं। तो एक छोटा कैनवास पर (100,100) द्वारा बदलने यह 200 से चलती की ओर जाता है, यहाँ याद करने के लिए 200.


टेकअवे बात परिवर्तन को बदलने प्रभावित करता है कि कैसे चीजों को फिर से तैयार कर रहे हैं (या बदल!) है । आप x2 पैमाने पर, और उसके बाद का अनुवाद करते हैं, तो अनुवाद x2 हो जाएगा

आप देखना चाहते हैं, तो गणितीय, क्या हर कदम पर हो रहा है मैं तुम्हें यहाँ कोड पर एक नज़र लेने के लिए प्रोत्साहित करते हैं:

https://github.com/simonsarris/Canvas-tutorials/blob/master/transform.js

यह कैनवास द्वारा की गई संपूर्ण परिवर्तन प्रक्रिया की नकल करता है और आपको यह देखने देता है कि बाद में आने वाले परिवर्तनों को कैसे संशोधित किया जाता है।

+0

उत्कृष्ट स्पष्टीकरण। अब इतना स्पष्ट लगता है :) – DougN

+0

ठीक है, कुछ अभी भी समझ में नहीं आता है। इसे देखें: http://jsfiddle.net/sdJ7v/1/ परीक्षण और त्रुटि ने मुझे हरे रंग के अंदर नीले वृत्त को केंद्रित करने में मदद की। लेकिन निर्देशांक दिए गए, कि ऑफसेट समझ में नहीं आता है। सुनिश्चित नहीं है कि ट्रांसफॉर्म कैसे लागू किया जा रहा है ... – DougN

+1

कृपया मेरी टिप्पणियां यहां देखें: http://jsfiddle.net/simonsarris/sdJ7v/2/ क्या यह समझ में आता है? –

2

स्केलिंग और रोटेशन मूल के संबंध में किया जाता है ताकि यदि आपके ट्रांसफॉर्म में अनुवाद हो, उदाहरण के लिए, तो यह आदेश महत्वपूर्ण होगा।

उसके बारे में यहां अच्छा पढ़ा: Why Transformation Order Is Significant

+0

ओह, मैंने अनुवाद किया जब मैं अनुवाद का मतलब बदल गया। फिक्स्ड। मैंने लेख पढ़ा, लेकिन अभी भी इसे नहीं मिला। इसका क्या अर्थ है कि "उत्पत्ति के संबंध में स्केलिंग की जाती है"? यह क्यों मायने रखता है कि अगर मैं 50% तक सबकुछ स्केल करता हूं तो मूल कहां है? – DougN

+1

@DougN यह महत्वपूर्ण है क्योंकि यदि चीजें घटती हैं या बढ़ती हैं, तो वे विमान में एक बिंदु के आसपास घूमते या बढ़ते हैं। यदि वह बिंदु आपके कैनवास पर केंद्रित है 50% स्केलिंग "अनजूम" की तरह है। यदि यह शीर्ष-बाईं ओर है तो कैनवास में सब कुछ उस बिंदु के करीब 50% स्थानांतरित हो जाएगा। यदि यह दृश्य क्षेत्र से बाहर है, तो आप जिस चीज को देख रहे हैं वह ऑफ-स्क्रीन को अच्छी तरह से ले जा सकता है क्योंकि यह उस बिंदु के करीब 50% की यात्रा करता है। इसे एक और तरीके से रखने के लिए, केवल मूल पिक्सेल पूरी तरह से स्केल किया जाता है, जबकि शेष * और * उनकी प्रारंभिक स्थिति के सापेक्ष अनुवाद करते हैं। –

संबंधित मुद्दे