2009-06-24 18 views
7

के साथ ज़ूम इन करना मेरा कार्य एक एल्गोरिदम विकसित करना है जो विभिन्न आयामों को 2 आयामी अंतरिक्ष में दिए गए बिंदु-अनुक्रम पर फिट करता है।2 डी प्रतिपादन और एसवीजी

मेरे एल्गोरिदम का परीक्षण करने में सक्षम होने के लिए, मैंने परिणाम प्रदर्शित करने के लिए एसवीजी चुना है। मुझे इसके साथ कई समस्याएं हैं I

चूंकि मेरे एल्गोरिदम के बहुत अलग इनपुट और आउटपुट हो सकते हैं, इसलिए यह आवश्यक है कि मैं उत्पन्न एसवीजी फ़ाइलों को ज़ूम इन करने की क्षमता के साथ देख सकूं!

लेकिन एसवीजी में एक पथ केवल एक निश्चित चौड़ाई के साथ प्रदर्शित किया जा सकता है। यदि मैं ज़ूम इन करता हूं, तो पथ की चौड़ाई व्यापक हो रही है। मैं चौड़ाई चाहता हूं उदाहरण के लिए सभी ज़ूम स्तरों पर 1 पिक्सेल। क्या इसका कोई समाधान है?

भी: एसवीजी प्रदर्शन बिंदु कर सकते हैं? हाँ, सरल, कच्चे अंक। मैंने पाया है कि यह नहीं कर सकता है।

धन्यवाद (पोस्टस्क्रिप्ट और पीडीएफ) की तरह

उत्तर

8

कई अन्य वेक्टर स्वरूपों आप एक "सिर के मध्य" स्ट्रोक के लिए 0 से स्ट्रोक-चौड़ाई का उपयोग करने देगा। एसवीजी के साथ ऐसा नहीं है। हालांकि, मैं सोचता हूं यदि आप प्रतिशत स्ट्रोक-चौड़ाई का उपयोग करते हैं तो आप जो चाहते हैं उसे प्राप्त कर सकते हैं। the w3c SVG specifications for details देखते हैं, लेकिन, मूल रूप से, अगर आप इस तरह कुछ करने के लिए सक्षम होना चाहिए:

stroke-width:"1%" 

यह चाहिए स्ट्रोक एक लाइन की चौड़ाई के सीमांकन आयत के एक निरंतर 1% है कि, ज़ूम स्तर की परवाह किए बिना के साथ अपने वक्र।

अंक के लिए, एसवीजी उनका समर्थन नहीं करता है। जब मैंने इसे अतीत में किया था (पोस्टस्क्रिप्ट का उपयोग करके) मैंने हमेशा एक छोटे सर्कल को आकर्षित करने के लिए arc with a small redius का उपयोग किया है (जिसे आप एक डॉट बनाने के लिए भर सकते हैं, यदि आप चाहें)।


@Zoli:

vector-effect="non-scaling-stroke" 

बस से जोड़ें: अपनी टिप्पणी के बाद, मैं के बारे में तो आप सिर के मध्य स्ट्रोक-चौड़ाई इस्तेमाल कर सकते हैं जब मैं non-scaling-stroke vector-effect in the SVG specification में आए आप पोस्टस्क्रिप्ट में देखो सुझाव देने के लिए था आपकी वक्र और यह spec के अनुसार, स्केलिंग के लिए invariant होना चाहिए। उनका उदाहरण line का उपयोग करता है, लेकिन इसे आपके वक्र पर भी काम करना चाहिए।

+0

% का उपयोग कर: ज़ूमिंग भी लाइन को चौड़ा करता है। – libeako

+0

वेक्टर-प्रभाव संपत्ति के लिए धन्यवाद, लेकिन यह काम नहीं करता है जैसा मैं चाहता हूं। यह ज़ूमिंग के खिलाफ बचाव नहीं करता है, केवल svg दस्तावेज़ में ही परिवर्तित हो जाता है। लेकिन यह भी काम नहीं कर रहा है, मुझे लगता है क्योंकि यह एसवीजी की एक नई सुविधा हो सकती है - मोज़िला फ़ायरफ़ॉक्स इसका समर्थन नहीं कर सकता है। – libeako

+0

मेरा मानना ​​है कि यह एक एसवीजी 1.2 सुविधा है, लेकिन यह मोबाइल और छोटे प्रोफाइल में भी समर्थित है, इसलिए किसी भी एसवीजी 1.2 कार्यान्वयन को इसका समर्थन करना चाहिए। एसवीजी स्पेक का विवरण ऐसा लगता है कि इसे ज़ूमिंग के लिए भी काम करना चाहिए क्योंकि यह केवल डिवाइस संदर्भ में प्रस्तुत करना है (यानी स्क्रीन स्पेस)। क्या आपने अन्य एसवीजी दर्शकों को यह देखने के लिए कोशिश की है कि यह कैसे काम करता है? – Naaff

0

धन्यवाद नाफ सहायता। मुझे लगता है कि मैं फ़ायरफ़ॉक्स के साथ रहूंगा, और मैं उत्पन्न एल्गोरिदम-जेनरेटेड svg फ़ाइल में लाइन-चौड़ाई निष्पादित करने के लिए निर्दिष्ट करूंगा। यह मेरे लिए पर्याप्त होगा।

1

कोई < बिंदु > तत्व या वर्तमान में एसवीजी में ऐसा कुछ भी नहीं है, लेकिन इसमें एसवीजी डब्ल्यूजी में चर्चा की गई है, इसलिए इसे भविष्य में शामिल किया जा सकता है। सार्वजनिक svg मेलिंग सूची में < बिंदु > तत्व के लिए अपनी आवश्यकताओं और आवश्यकताओं को सुनने के लिए स्वतंत्र महसूस करें: [email protected]

उदाहरण के लिए < लाइन > तत्वों का उपयोग करने के लिए एक वर्कअराउंड है और यदि आप चाहते हैं कि आप इसे एक बिंदु प्रदर्शित करने के लिए गोल लाइनकैप्स प्राप्त कर सकें तो उन्हें शून्य लंबाई होने दें। यह सब इस बात पर निर्भर करता है कि आपको इसके लिए क्या चाहिए। आर = 0 वाला एक सर्कल बेहतर फिट हो सकता है।

मूल्य 'गैर-स्केलिंग-स्ट्रोक' के साथ 'वेक्टर-प्रभाव' संपत्ति वह है जो आपको यह कहने के लिए उपयोग करनी चाहिए कि स्ट्रोक को स्केल नहीं करना चाहिए। जावास्क्रिप्ट समाधान को कार्यान्वित करना मुश्किल नहीं है जो सुनिश्चित करता है कि स्ट्रोक ठीक से स्केल किए गए हैं यदि 'वेक्टर-प्रभाव' मूल रूप से समर्थित नहीं है।ओपेरा 9.5+ इसे मूल रूप से समर्थन करता है।

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