2011-12-19 6 views
7

मेरे पास एप्लिकेशन में UIBezierPath है। जब पथ पर उंगली स्पर्श पहचाना जाता है तो मैं उस वक्र को उप-विभाजित करना चाहता हूं और दो घटता दो अलग-अलग वस्तुओं में स्टोर करता हूं। तो स्पर्श समन्वय एक वक्र के लिए अंत बिंदु के रूप में काम करेंगे और दूसरे वक्र के लिए प्रारंभ बिंदु।UIBezierPath को उप-विभाजित करने और इसे दो अलग-अलग ऑब्जेक्ट्स में स्टोर करने के लिए

फिर यदि मैं इस वक्र में से किसी एक को छूता हूं, तो वक्र दो अन्य घटताओं में विभाजित होगा और इसी तरह।

मैंने इसकी बहुत खोज की। लेकिन कोई अच्छा समाधान नहीं मिला।

इसके अलावा मुझे यह नहीं पता कि ऐसा करने का कोई अन्य तरीका है या नहीं। किसी भी तरह की सहायता का स्वागत किया जाएगा। धन्यवाद

+0

मुझे एक लिंक मिला है। इन लोगों को देखो। मुझे लगता है कि यह मुझे beziercurve.htp: //www.genie-meca.ac-aix-marseille.fr/Productique/PDF/361_deCasteljau_john को उप-विभाजित करने में मदद कर सकता है।पीडीएफ – Harsh

+2

यह सहायक हो सकता है या नहीं भी हो सकता है लेकिन यह दिखाता है कि UIBezierPath को अपने व्यक्तिगत पथ में कैसे तोड़ना है: http://stackoverflow.com/questions/3051760/getting-a-list-of-points-from-a-uibezierpath – titaniumdecoy

उत्तर

1

आप इसे डी Casteljau एल्गोरिदम के साथ कर सकते हैं। क्या तुम सच में यह check out the Wikipedia page here की गणित में हो, लेकिन तुम गणित में है कि कर रहे हैं, तो यह शायद आप कुछ भी की तुलना में अधिक भ्रमित जब यह वास्तव में काफी आसान है ...

  1. साथ पैरामिट्रीकृत मान की गणना करें स्पर्श के 0.0 (1.0 और 1.0 के बीच) वक्र। ऐसा करने के लिए आप नियमित अंतराल (0.1, 0.2, 0.3 इत्यादि) पर बिंदुओं के एक सेट की गणना कर सकते हैं और फिर अपने स्पर्श बिंदुओं के दो निकटतम बिंदु ढूंढ सकते हैं और यदि आप अधिक सटीकता चाहते हैं (0.21, 0.22, 0.23, आदि)। इसके परिणामस्वरूप वक्र खंड के साथ 0.0 और 1.0 के बीच की संख्या होगी जहां आप स्पर्श करते थे।
  2. पाठ में व्याख्या करना मुश्किल है, लेकिन this page पर शीर्षक के तहत आधे रास्ते के नीचे एक अच्छा विज़ुअलाइजेशन है जो बेजियर वक्र को विभाजित करता है। आरेख के नीचे स्लाइडर का उपयोग यह देखने के लिए करें कि यह कैसे काम करता है, यहां मेरा टेक्स्ट स्पष्टीकरण है: आपको चरण 1 में गणना किए गए पैरामीटरयुक्त मान के आनुपातिक अपने वक्र खंड के नियंत्रण बिंदुओं के बीच सीधी रेखाओं को उप-विभाजित करने की आवश्यकता है। इसलिए यदि आपने 0.4 की गणना की है, तो आप चार अंक (ए, बी, सी, डी) और वक्र के साथ 0.4 पर आपके स्पर्श के निकट वक्र पर विभाजित बिंदु है, हम इस स्प्लिट-पॉइंट पॉइंट को कॉल करेंगे:
    • अस्थायी बिंदु टी की गणना करें जो लाइन बी → सी
    • Let बिंदु A1 एक
    • की गणना बिंदु बी 1 जो लाइन एक → बी
    • Calcu साथ 0.4 है बात करने के लिए बराबर होना साथ 0.4 है देर बिंदु सी 1 जो लाइन बी 1 → टी
    • Let बिंदु डी 1 विभाजन बिंदु एस
    • Let बिंदु डी 2 के बराबर होना डी
    • की गणना बिंदु सी 2 जो है रेखा के साथ 0.4 सी → बात करने के लिए बराबर होना साथ 0.4 है डी
    • की गणना बिंदु बी 2 जो रेखा के साथ 0.4 है टी → सी 2
    • Let बिंदु ए 2 विभाजन बिंदु एस
के बराबर होना

अब आपके पास दो नए बेजियर वक्र हैं, पहला नियंत्रण बिंदु ए 1, बी 1, सी 1, डी 1 और दूसरा ए 2, बी 2, सी 2, डी 2 का उपयोग कर।