से किसी दिए गए कोण पर सीधी रेखा से छेड़छाड़ किए गए यूआईवी व्यू आयत पर सीजीपॉइंट पाएं, मैं केंद्र बिंदु से परिधि रेखा से परिधि रेखा से छिद्रित आयत पर बिंदु निर्धारित करने की कोशिश कर रहा हूं पूर्व निर्धारित कोण पर आयताकार।आईओएस में केंद्र बिंदु
कहें कि मुझे केंद्र बिंदु, आयताकार का आकार, और कोण (पूर्व के लिए 0 डिग्री से शुरू होता है और उत्तर के लिए 90 के माध्यम से काउंटरक्लॉक वार और पश्चिम में 180 के लिए और पूर्व में 270 दक्षिण से 360 डिग्री पूर्व में) । मुझे अंतरंग बिंदु के निर्देशांक जानने की जरूरत है।
कुछ हद तक भ्रमित (मेरे लिए) गणितीय लेकिन अनुमानित सटीक उत्तर Finding points on a rectangle at a given angle पर मुझे निम्नलिखित कोड का प्रयास करने का नेतृत्व किया, लेकिन यह ठीक से काम नहीं करता है। यह प्रश्न उस के समान है, लेकिन मैं सामान्य गणितीय प्रतिक्रिया के बजाय एक सही उद्देश्य-सी/आईओएस विधि की तलाश में हूं।
मुझे लगता है कि कोड समस्या का एक हिस्सा इनपुट (नकारात्मक संख्या की कोई संभावना नहीं के साथ रेडियन में) एकल 0 करने के लिए 360 डिग्री कोण का उपयोग कर के साथ क्या करना है, लेकिन अन्य समस्याओं होने की संभावना नहीं है। नीचे दिया गया कोड अधिकतर the answer from belisarius में परिभाषित नोटेशन का उपयोग करता है, जिसमें परिभाषित चार क्षेत्रों में से प्रत्येक के लिए अंतरण बिंदुओं की गणना करने के मेरे प्रयास शामिल हैं।
इस कोड को मेरी UIImageView उपवर्ग में है:
- (CGPoint) startingPointGivenAngleInDegrees:(double)angle {
double angleInRads = angle/180.0*M_PI;
float height = self.frame.size.height;
float width = self.frame.size.width;
float x0 = self.center.x;
float y0 = self.center.y;
// region 1
if (angleInRads >= -atan2(height, width) && angleInRads <= atan2(height, width)) {
return CGPointMake(x0 + width/2, y0 + width/2 * tan(angleInRads));
}
// region 2
if (angleInRads >= atan2(height, width) && angleInRads <= M_PI - atan2(height, width)) {
return CGPointMake(x0 + height/(2*tan(angleInRads)),y0+height/2);
}
// region 3
if (angleInRads >= M_PI - atan2(height, width) && angleInRads <= M_PI + atan2(height, width)) {
return CGPointMake(x0 - width/2, y0 + width/2 * tan(angleInRads));
}
// region 4
return CGPointMake(x0 + height/(2*tan(angleInRads)),y0-height/2);
}
शानदार! धन्यवाद। मुझे इसके साथ कुछ परेशानी थी क्योंकि मेरे मामले में मुझे एहसास नहीं हुआ कि मुझे अपने UIImageview उपclass (अन्य नौसिखियों के लिए यहां आने वाले) में [self.superview convertPoint: thepoint toView: self] करना था। –
शानदार जवाब! – mrvincenzo
मैं आपके कोड का अध्ययन कर रहा हूं जो उत्कृष्ट है, यह समझने की कोशिश कर रहा है कि क्या करना है यदि मैं छवि को घुमाता हूं और अभी भी किनारे का पता लगाना चाहता हूं? कोई विचार? – flooie