2012-11-19 16 views
5

मैं उपयोगकर्ताओं को त्रिभुज आकार खींचने की अनुमति देने की कोशिश कर रहा हूं। मुझे प्रारंभ बिंदु और अंत बिंदु मिल रहा है और त्रिभुज बनाने के लिए एक समतुल्य त्रिकोण के तीसरे बिंदु को खोजने के लिए सूत्र का उपयोग कर रहा है, लेकिन ऐसा लगता है कि मैं यह कैसे कर सकता हूं? शायद एक सर्कल का उपयोग कर रहा हूं, लेकिन मुझे नहीं पता कि इसके बारे में कैसे जाना है। मेरा वर्तमान कोड यहाँ है।एक त्रिभुज चित्रण

NSValue *point = [_path objectAtIndex:0]; 
CGPoint startPoint = point.CGPointValue; 

point = [_path lastObject]; 
CGPoint endPoint = point.CGPointValue; 

CGPoint thirdPoint = CGPointMake(((startPoint.x+endPoint.x)/2), (((startPoint.x-endPoint.x)/2)*(tan(60))+1)); 
UIBezierPath *triangle = [UIBezierPath bezierPath]; 
[triangle moveToPoint:startPoint]; 
[triangle addLineToPoint:endPoint]; 
[triangle addLineToPoint:thirdPoint]; 
[triangle addLineToPoint:startPoint]; 
triangle.lineWidth=size; 
+0

तो समस्या यह है कि यह कुछ भी आकर्षित नहीं करता है या यह एक गलत आकार बनाना है कि है? 'आकार' क्या है? आपका ड्रॉ कॉल कहां है? –

+0

यह एक त्रिकोण खींचता है लेकिन यह वह नहीं है जिसे मैं आकर्षित करता हूं .. यह किसी प्रकार की शिफ्ट करता है जब मैं इसे – JProg

उत्तर

9

यह एक समभुज त्रिकोण के तीसरे बिंदु की गणना करने के काम करना चाहिए:

CGPoint startPoint = ..., endPoint = ...; 

CGFloat angle = M_PI/3; // 60 degrees in radians 
// v1 = vector from startPoint to endPoint: 
CGPoint v1 = CGPointMake(endPoint.x - startPoint.x, endPoint.y - startPoint.y); 
// v2 = v1 rotated by 60 degrees: 
CGPoint v2 = CGPointMake(cosf(angle) * v1.x - sinf(angle) * v1.y, 
         sinf(angle) * v1.x + cosf(angle) * v1.y); 
// thirdPoint = startPoint + v2: 
CGPoint thirdPoint = CGPointMake(startPoint.x + v2.x, startPoint.y + v2.y); 

UIBezierPath *triangle = [UIBezierPath bezierPath]; 
[triangle moveToPoint:startPoint]; 
[triangle addLineToPoint:endPoint]; 
[triangle addLineToPoint:thirdPoint]; 
[triangle closePath]; 
// ... 
+0

पर जाने देता हूं, जब मैं त्रिकोण खींचता हूं तो यह ठीक काम करता है, लेकिन जब मैं एक और त्रिकोण खींचने की कोशिश करता हूं जो पिछले कुछ को ओवरलैप करता है लाइनों का कट ऑफ हो जाता है और स्क्रीन से गायब हो जाता है – JProg

+0

@JProg: आपको पिछले 'addLineToPoint' के बजाय' क्लोजपैथ 'का उपयोग करना चाहिए, मैंने अपने कोड में वह कोड जोड़ा है। - अन्यथा मुझे कोई जानकारी नहीं है, समस्या का प्रदर्शन करने वाले स्क्रीनशॉट के बिना कहना मुश्किल है (और शायद आपके कोड का अधिक)। –

+0

यह एक प्रिंट स्क्रीन का एक लिंक है, मैं वास्तव में आपकी मदद की सराहना करता हूं! कोई भी विचार यह हो सकता है कि यह http://postimage.org/image/o7uxeoipb/ – JProg

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