2009-06-01 9 views
5

मैं एक छवि के पिक्सल के माध्यम से स्थानांतरित करना चाहता हूं, रेखा से लाइन नहीं जाकर, "सामान्य" तरीके से कॉलम द्वारा कॉलम। लेकिन केंद्र पिक्सेल से शुरू करें और सर्पिल गति में बाहर जायें। लेकिन मुझे यकीन नहीं है कि यह कैसे करें। इस पर कोई सुझाव दिया जा सकता है कि यह कैसे किया जा सकता है?सी # एक सर्पिल गति में एक छवि के माध्यम से चल रहा है?

+0

क्या आप थोड़ा स्पष्ट हो सकते हैं कि आप गैर-स्क्वायर छवि पर व्यवहार करने की अपेक्षा कैसे करते हैं? ... केवल स्क्वायर छवियां सर्पिल के साथ पूरी तरह से काम करती हैं, अन्यथा आप दूसरों के सामने किनारों का एक सेट हिट करेंगे ... – jerryjvl

उत्तर

5

आप पैरामीट्रिक कार्यों का उपयोग करके ऐसा कर सकते हैं, त्रिज्या के लिए समारोह आर (टी) = आर, और एक्स (टी) = Rcos (टी) और y (टी) = rsin (टी) है। क्या आपका मतलब this जैसा है?

+0

ऐसा लगता है कि मैं क्या चाहता हूं। आपका बहुत बहुत धन्यवाद! –

0

यह रिवर्स में इस बारे में सोचने के लिए मददगार होगा।

उदाहरण के लिए, ऊपरी बाएं कोने से शुरू करना और घड़ी की दिशा में आगे बढ़ना, आप शीर्ष पंक्ति के साथ आगे बढ़ेंगे, फिर दाएं हाथ की ओर नीचे, नीचे की तरफ, और बाएं किनारे को पिक्सेल तक शुरुआती बिंदु के नीचे ले जाएं ।

तब दूसरी पंक्ति के साथ ले जाते हैं, और एक सर्पिल में जारी है।

छवि आप पिक्सल के एक एकल स्तंभ या पिक्सल की एक पंक्ति किसी के साथ खत्म हो जाएगा के आयामों पर निर्भर करता है या तो ऊपर/नीचे या/दाएँ से बाएँ चलती हो जाएगा।

इस परिष्करण बिंदु आप तो अपने कदम पीछे का पालन करें और सभी पिक्सल की प्रक्रिया के रूप में आप की जरूरत है सकते हैं से।

गणितीय रूप से अपनी शुरुआती स्थिति को काम करने के लिए आपको छवि की चौड़ाई/ऊंचाई और साथ ही पिक्सेल को समाप्त करना होगा और जिस दिशा में आप अंतिम पिक्सेल पर जा रहे हैं उस दिशा में यात्रा करना चाहते हैं ।

0

कुछ इस तरह यह करना चाहिए:

int x = width/2; 
int y = height/2; 
int left = width * height; 
int dir = 0; 
int cnt = 1; 
int len = 2; 
int[] move = { 1, 0, -1, 0, 1 }; 
while (left > 0) { 
    if (x >= 0 && x < width && y >= 0 && y < height) { 
     // here you do something with the pixel at x,y 
     left--; 
    } 
    x += move[dir % 4]; 
    y += move[(dir % 4) + 1]; 
    if (--cnt == 0) { 
     cnt = len++/2; 
     dir++; 
    } 
} 

यदि छवि वर्ग नहीं है, सर्पिल छवि के निर्देशांक के बाहर जारी रहेगा जब तक पूरी छवि को कवर किया गया है। if कथन में स्थिति यह सुनिश्चित करती है कि छवि का हिस्सा केवल समन्वयित हो।

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