मुझे अपनी 2 डी दुनिया में एक बिंदु से दूसरे बिंदु तक कम से कम दूरी की दिशा खोजने की आवश्यकता है जहां किनारों को लपेटा जाता है (जैसे क्षुद्रग्रह आदि)। मुझे पता है कि सबसे कम दूरी कैसे पता करें लेकिन मैं यह पता लगाने के लिए संघर्ष कर रहा हूं कि यह किस दिशा में है।
सबसे कम दूरी किसके द्वारा दी गई है:
int rows = MapY;
int cols = MapX;
int d1 = abs(S.Y - T.Y);
int d2 = abs(S.X - T.X);
int dr = min(d1, rows-d1);
int dc = min(d2, cols-d2);
double dist = sqrt((double)(dr*dr + dc*dc));
दुनिया का उदाहरण
:
: T
:
:--------------:---------
: :
: S :
: :
: :
: T :
: :
:--------------:
आरेख में किनारों को इसके साथ दिखाया गया है: और -। मैंने शीर्ष दाईं ओर भी दुनिया का एक लिपटा हुआ दोहराव दिखाया है। मैं S से T तक की दिशा में दिशा खोजना चाहता हूं। इसलिए सबसे छोटी दूरी T के शीर्ष दाएं दोहराना है। लेकिन मैं S से नीचे की ओर दोहराए जाने वाले दिशा में शीर्ष दाएं में कैसे गणना करूं?
मैं S और T दोनों की स्थिति जानता हूं, लेकिन मुझे लगता है कि मुझे दोहराया T की स्थिति का पता लगाने की जरूरत है, हालांकि 1 से अधिक है।
दुनिया निर्देशांक प्रणाली 0,0 से ऊपर बाईं ओर शुरू होती है और दिशा के लिए 0 डिग्री पश्चिम में शुरू हो सकती है।
ऐसा लगता है कि यह बहुत कठिन नहीं होना चाहिए, लेकिन मैं एक समाधान नहीं कर पा रहा हूं। मुझे उम्मीद है कि सोमोन मदद कर सकता है? किसी भी वेबसाइट की सराहना की जाएगी।