2013-03-14 6 views
6

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

मैं ऐसा करने के लिए क्वार्ट्ज 2 डी का उपयोग कर रहा हूं और लाइन बनाने के लिए एपीआई इनपुट के रूप में दो बिंदु तक सीमित है। तो मैं आईओएस डिवाइस की सीमाओं पर एक बिंदु और कोण को दो बिंदुओं में कैसे परिवर्तित करूं?

+0

http://stackoverflow.com/a/1571429/1311910 – 7usam

उत्तर

8

यह सरल त्रिकोणमिति के साथ शुरू होता है। आपको दूसरे बिंदु के एक्स और वाई समन्वय की गणना करने की आवश्यकता है। 0,0 का एक मूल के साथ और एक लाइन है कि 0 डिग्री के रूप में सही करने के लिए सीधे चला जाता है इलाज, और वामावर्त (आप में से कुछ के लिए वामावर्त) जा रहा है, तुम क्या:

double angle = ... // angle in radians 
double newX = cos(angle); 
double newY = sin(angle); 

यह 1 के एक त्रिज्या मान लिया गया है प्रत्येक बार वांछित त्रिज्या गुणा करें। एक संख्या चुनें जो स्क्रीन से बड़ी होगी जैसे 480 के लिए एक आईफोन या आईपैड के लिए 1024 (मान लीजिए कि आप अंक चाहते हैं और पिक्सेल नहीं)।

फिर अंतिम बिंदु प्राप्त करने के लिए मूल बिंदु जोड़ें।

मान लिया जाये कि आप CGPoint start, double angle है, और लंबाई, अपने अंतिम बिंदु है:

double endX = cos(angle) * length + start.x; 
double endY = sin(angle) * length + start.y; 
CGPoint end = CGPointMake(endX, endY); 

यह ठीक है अगर अंत बिंदु स्क्रीन बंद है।

+0

संभवतः उपयोगी: यदि आपको रेडियंस और डिग्री के बीच कनवर्ट करने की आवश्यकता है - http://iosdevelopertips.com/graphics/radians-to-degrees-and-degrees- टू-radians.html –

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