2014-09-05 7 views
5

मैं वर्तमान रूपांतरण मैट्रिक्स (सीटीएम) को देखते हुए, पीडीएफ में स्ट्रोक लाइन को कैसे प्रभावित करता है, यह पता लगाने की कोशिश कर रहा हूं। दो प्रश्न ...पीडीएफ लाइन चौड़ाई दोनों क्षैतिज और लंबवत आयामों में सीटीएम के साथ कैसे बातचीत करती है?

पहला: मैं सीटीएम का उपयोग कर लाइन चौड़ाई को डिवाइस स्थान में कैसे परिवर्तित करूं? PDF 1.7 Reference में पृष्ठ 208, जो सीटीएम का उपयोग करके बिंदुओं को परिवर्तित करने का वर्णन करता है, मानता है कि इनपुट डेटा एक (x, y) बिंदु है। रेखा चौड़ाई सिर्फ एक ही मूल्य है, तो मैं इसे कैसे परिवर्तित करूं? क्या मैं इसे "डमी" बिंदु (लाइनविड्थ, लाइनविड्थ) की तरह बना सकता हूं?

दूसरा: एक बार जब मैं यह गणना करता हूं, तो मुझे एक और (x, y) बिंदु मिल जाएगा। यदि सीटीएम में क्षैतिज बनाम लंबवत के लिए अलग-अलग स्केलिंग कारक हैं, तो यह मुझे दो अलग-अलग रेखा चौड़ाई देता है। इन लाइन चौड़ाई वास्तव में कैसे लागू होते हैं? क्षैतिज रेखाओं को खींचते समय पहला (x) केवल तभी लागू होता है?

दूसरे प्रश्न के लिए एक ठोस उदाहरण: यदि मैं रेखा चौड़ाई (2, 1) के साथ क्षैतिज रेखा (0, 0) से (4, 4) खींचता/स्ट्रोक करता हूं, तो बाउंडिंग बॉक्स के निर्देशांक क्या हैं परिणामी आयताकार (यानी, आयताकार जिसमें रेखा चौड़ाई होती है)?

इस संदर्भ में पृष्ठ 215 से है, लेकिन यह वास्तव में स्पष्ट नहीं होता कि कैसे stroked लाइनों की मोटाई अलग अलग होंगे:

प्रभाव उपकरण अंतरिक्ष में उत्पादन वर्तमान परिवर्तन मैट्रिक्स पर निर्भर करता है (CTM) उस समय जब पथ स्ट्रोक होता है। यदि सीटीएम क्षैतिज और लंबवत आयामों में विभिन्न कारकों द्वारा स्केलिंग निर्दिष्ट करता है, तो डिवाइस स्पेस में स्ट्रोक लाइनों की मोटाई उनके अभिविन्यास के अनुसार अलग-अलग होगी।

+0

सुनिश्चित नहीं है कि "लाइन चौड़ाई (2,1)" के साथ आपका क्या मतलब है? संभवतः सीटीएम के स्केलिंग कारक हैं? लेकिन उस मामले में, मूल रेखा चौड़ाई क्या है? – Tikitu

उत्तर

3

कैसे मैं रेखा की चौड़ाई परिवर्तित सीटीएम का उपयोग कर डिवाइस स्पेस के लिए?

पंक्ति चौड़ाई अनिवार्य रूप से रेखा के आकार की दिशा में लंबवत है। इस प्रकार, सीटीएम का उपयोग करके परिवर्तन के बाद चौड़ाई की गणना करने के लिए, आप मूल रेखा के लिए एक प्लानर वेक्टर लंबवत चुनते हैं जिसका लंबाई वर्तमान ग्राफिक्स स्थिति से रेखा चौड़ाई है, सीटीएम लागू करें (अनुवाद के बिना, यानी सेटिंग ई और एफ से 0) वह वेक्टर (तीसरे समन्वय को 1 तक सेट करके तीन आयामी अंतरिक्ष में एम्बेडेड) और परिणामस्वरूप 2 डी वेक्टर की लंबाई की गणना करें (पहले दो निर्देशांक पर प्रक्षेपण)।

उदा। आपके पास वर्तमान उपयोगकर्ता स्पेस निर्देशांक में 1 की चौड़ाई के साथ (0,0) से (1,4) की रेखा है। आपको इसके लिए लंबवत वेक्टर ढूंढना होगा, उदा। (-4,1) 90 डिग्री काउंटर दक्षिणावर्त घुमाकर, और उस मामले में 1, यानी (-4/वर्ग (17), 1/वर्ग (17)) की लंबाई तक स्केल करें।

तो CTM @ Tikitu के जवाब से एक है

CTM 2 की क्षैतिज स्केलिंग कारक और 1

की एक ऊर्ध्वाधर स्केलिंग कारक यह होगा है

2 0 0 
0 1 0 
0 0 1 

यह मैट्रिक्स ऊपर दिए गए उदाहरण से लाइन (0,0) से (2,4) और "चौड़ाई वेक्टर" (-4/वर्ग (17), 1/वर्ग (17)) में परिवर्तित हो जाएगा (-8/वर्ग (17), 1/sqrt (17)) (सीटीएम में पहले से कोई अनुवाद भाग नहीं है) sqrt (65/17) की लंबाई के साथ जो लगभग 1.955 है। अर्थात। परिणामी रेखा की चौड़ाई (इसकी दिशा के लिए लंबवत आकार) लगभग 2.

यदि मूल रेखा चौड़ाई 1 के साथ (0,0) से (4,1) हो गई है, तो चौड़ाई वेक्टर विकल्प होगा रहे हैं (-1/वर्ग (17), 4/वर्ग (17))। उस स्थिति में रूपांतरित लाइन (0,0) से (8,1) तक चली जाएगी और चौड़ाई वेक्टर को क्रमशः (-2/वर्ग (17), 4/वर्ग (17)) में परिवर्तित किया जाएगा, जिसमें वर्ग की लंबाई (20/17) जो लगभग 1.085 है। अर्थात। परिणामी रेखा की चौड़ाई (इसकी दिशा के लंबवत) 1.

आपको लाइन के "कोनों" में रुचि रखने लगते हैं। इसके लिए आपको रूपांतरित लाइन की शुरुआत और अंत लेना होगा और आधा रूपांतरित चौड़ाई वेक्टर जोड़ना या घटाना होगा। ((1,4) के लिए 0,0 से (मूल लाइन))

  1. : ऊपर के नमूनों में (-4/sqrt (17), 1/(2 * sqrt (17))), (4/वर्ग (17), -1/(2 * वर्ग (17))), (2-4/वर्ग (17), 4 + 1/(2 * वर्ग (17))), (2 + 4/वर्ग (17), 4-1/(2 * वर्ग (17)));

  2. (मूल रेखा (0,0) से (4,1)): (-1/वर्ग (17), 2/वर्ग (17)), (1/वर्ग (17), -2/वर्ग (17)), (8-1/वर्ग (17), 1 + 2/वर्ग (17)), (8 + 1/वर्ग (17), 1-2/वर्ग (17))।

मत भूलना, हालांकि, कि पीडीएफ लाइनों अक्सर बंद अंत में कटौती नहीं कर रहे हैं, लेकिन इसके बजाय कुछ टोपी है। और इसके अलावा लाइन चौड़ाई के विशेष अर्थ को याद रखें 0.

+0

मुझे संदर्भ के उद्धृत भाग को याद किया होगा (या, अधिक संभावना है, इसके महत्व को नजरअंदाज कर दिया गया है): जब प्रश्न पढ़ते हैं तो मुझे आधा उम्मीद है कि * * लाइन * के लिए इसका उत्तर, इसकी शुरुआत और अंत बिंदु * पहले * चित्रकला (और इस प्रकार सीटीएम का मोटाई पर कोई प्रभाव नहीं पड़ता है)। लेकिन इसके लिए काम करने के लिए, रेखा चौड़ाई * जरूरत * सीटीएम से स्वतंत्र होना चाहिए! (जो कि 'कस्टम यूजर यूनिट' जैसे सामान्य संचालन की पूरी कक्षा का उल्लंघन करेगा।) मुझे कल्पना है कि, फिर, सभी लाइनों को हमेशा रास्टराइज होने से पहले आयत में विस्तारित किया जाता है? – usr2564301

+0

आह- एक मामूली बिंदु। क्या 1 की रेखा चौड़ाई (-½, 0) से (+ ½, 0) तक इसके केंद्र से विस्तारित नहीं होनी चाहिए? – usr2564301

+0

महान उत्तर के लिए धन्यवाद! –

1

पीडीएफ internals के बारे में कुछ पता नहीं मैं , लेकिन मैं पर एक अनुमान कर सकते हैं क्या है कि पारित होने हो सकता है मतलब, मैट्रिक्स का उपयोग कर रैखिक परिवर्तनों का प्रतिनिधित्व करने के बारे में थोड़ा जानने के आधार पर।

यदि आप अपनी स्ट्रोक लाइन को आयताकार (लंबी और पतली, लेकिन एक निश्चित चौड़ाई के साथ) के रूप में कल्पना करते हैं और सीटीएम को चार कोने बिंदुओं पर लागू करते हैं, तो आप देखेंगे कि सीटीएम के समय रेखा का अभिविन्यास इसकी चौड़ाई कैसे बदलता है अलग क्षैतिज और ऊर्ध्वाधर स्केलिंग कारक है।

अपने CTM 2 की क्षैतिज स्केलिंग कारक और 1 के एक ऊर्ध्वाधर स्केलिंग कारक है, तो विभिन्न कोणों पर लाइनों के बारे में सोचना:

  • एक क्षैतिज रेखा (एक छोटी लेकिन चौड़ा आयत) इसकी लंबाई हो जाता है दोगुना हो गया, और यह "ऊंचाई" (रेखा की चौड़ाई) वही रहता है;
  • एक लंबवत रेखा (एक लंबा और पतला आयत) इसे चौड़ाई दोगुना हो जाता है (यानी, रेखा मोटी हो जाती है), और इसकी लंबाई वही रहती है;
  • कोण कोण के आधार पर विभिन्न कोणों से मोटे हो जाते हैं, क्योंकि वे क्षैतिज रूप से फैले होते हैं लेकिन verticallye.g नहीं।
  • 45 डिग्री पर एक रेखा की मोटाई को तिरछे (45 डिग्री दूसरी तरफ) मापा जाता है, इसलिए यह कुछ हद तक मोटा (कुछ क्षैतिज खींचने) हो जाता है, लेकिन मोटा नहीं होता है (विकर्ण का लंबवत घटक नहीं था बडे बनो)। (आप पाइथागोरियन प्रमेय के दो अनुप्रयोगों के साथ मोटाई का पता लगा सकते हैं; यह लगभग 1.58 गुना अधिक है, या वर्ग (5)/वर्ग (2) है।)

यदि यह कहानी सही है, तो आप नहीं कर सकते हैं परिवर्तित लाइन CTM का उपयोग कर चौड़ाई: यह बस मामला-दर-मामला अलग होता है, लाइन के उन्मुखीकरण के आधार पर। जो आप परिवर्तित कर सकते हैं वह की चौड़ाई एक विशेष रेखा है, एक विशेष अभिविन्यास के साथ, एक ठोस क्षेत्र के रूप में लाइन की सोच की चाल के माध्यम से और सीटीएम के माध्यम से व्यक्तिगत रूप से अपने कोनों को चलाने के माध्यम से। (यह भी मतलब है कि "एक ही" लाइन, एक ही मोटाई के साथ, अलग-अलग रूप में आप, अपने उन्मुखीकरण भिन्न हो अगर आपके CTM अलग क्षैतिज और ऊर्ध्वाधर स्केलिंग कारकों है दिखेगा।)

+0

धन्यवाद, टिकुitu! अनुवर्ती प्रश्न: यदि मैं एक निश्चित चौड़ाई के साथ एक क्षैतिज आयत के रूप में स्ट्रोक लाइन की कल्पना करता हूं, तो मैं कोने बिंदुओं के वाई निर्देशांक की गणना कैसे करूं? क्या मैं लाइन के वाई निर्देशांक का उपयोग करूंगा (जो सभी चार बिंदुओं के लिए समान होगा)? –

+1

मुझे लगता है कि आपके द्वारा स्वीकार किए गए अधिक पूर्ण उत्तर को आपके लिए साफ़ कर दिया गया है, लेकिन केवल इस मामले में: यह वह जगह है जहां मूल (अप्रतिबंधित) रेखा चौड़ाई आती है। लाइन के उसी छोर पर कॉर्नर + 1/2width द्वारा ऑफ़सेट किए जाएंगे और वाई दिशा में -1/2 विड्थ, यदि रेखा क्षैतिज है। – Tikitu

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

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