आप क्यूबिक बेजियर वक्र के लिए विकोबी सी ++ लाइब्रेरी दिनचर्या का उपयोग करके ऐसा कर सकते हैं। विकोबी की लाइब्रेरी क्वाड्रैटिक बेजियर वक्र का भी समर्थन करती है।
बेशक
के रूप में किसी को बताया तो आप सभी बिंदुओं नहीं करना चाहते हैं (हालांकि असंभव नहीं है, यह सिर्फ अनंत समय लगेगा :)।विकोबी अंक की एक निश्चित संख्या प्राप्त करना आसान बनाता है - यदि आपकी शुरुआत, सी 1, सी 2, और अंत बिंदु (जहां सी 1, सी 2 नियंत्रण बिंदु हैं) तो CGContextAddCurveToPoint को दिए गए समान हैं, तो बिंदु पूरी तरह से झूठ बोलेंगे कोर ग्राफिक्स द्वारा खींची गई रेखा पर - ताकि आप पथ पर कई बिंदुओं पर पैटर्न खींचने जैसी चीजें कर सकें।
देखें: http://www.codeproject.com/Articles/22568/Computational-Geometry-C-and-Wykobi
इसके अलावा, के बाद मैं का उपयोग कर wykobi मैंने सुना है एक ऐसी ही, हो सकता है और भी बेहतर पुस्तकालय कि बूस्ट का एक हिस्सा है वहाँ है, लेकिन अभी तक इसे बाहर की जाँच नहीं की है शुरू कर दिया।
मैंने विकोबी पॉइंट्स और सीजीपॉइंट्स (सी ++ मज़े!) के बीच एक पुल के रूप में एक सी ++ क्लास WPoint बनाया है। यहाँ कुछ कोड (WPoint बिना बूस्ट ज्यामिति लाइब्रेरी का लिंक है, लेकिन आप कल्पना कर सकते हैं कि यह वास्तव में एक CGPoint रूप में एक ही लेआउट, इसलिए यदि आप सही डाली कर आप आसानी से परिवर्तित कर सकते हैं है
NSMutableArray* result = [[NSMutableArray alloc] init];
wykobi::cubic_bezier<CGFloat,2> bezier;
bezier[0] = (WPoint)p1; // start point, in CG we did a CGMoveToPoint
bezier[1] = (WPoint)b1i; // control 1
bezier[2] = (WPoint)b2i; // control 2
bezier[3] = (WPoint)p2; // end point
std::vector<WPoint> point_list;
int numPoints = p2.dist(p3) * pointDensity;
// *** here's the magic ***
wykobi::generate_bezier(bezier,std::back_inserter(point_list), numPoints);
for (int i=0; i<numPoints; i++) {
CGPoint p = (CGPoint)(point_list[i]);
[result addObject:[NSValue valueWithCGPoint:p]];
}
// result has your points!
यहाँ:। http://www.boost.org/doc/libs/1_47_0/libs/geometry/doc/html/geometry/introduction.html
स्रोत
2012-07-27 03:22:31
यहां ... http://stackoverflow.com/questions/4854035/how-do-i-detect-a-touch-on-a-uibezierpath-and-move-a-ball-along-that/ 4855932 # 4855932 – Fattie