यदि मेरे पास कोई बिंदु (x, y z) है, तो मैं उस बिंदु के लिए रैखिक अनुक्रमणिका कैसे प्राप्त करूं? मेरी क्रमांकन योजना (0,0,0) 0 होगी, (1, 0, 0) 1 है,। । ।, (0, 1, 0) अधिकतम-x-आयाम है, .... इसके अलावा, यदि मेरे पास रैखिक समन्वय है, तो, मैं (x, y, z) कैसे ढूंढूं? मुझे यह Google पर नहीं लगता है, सभी परिणाम अन्य अप्रासंगिक सामान से भरे हुए हैं। धन्यवाद!मैं एक 3 डी समन्वय के रैखिक सूचकांक की गणना कैसे करूं और इसके विपरीत?
उत्तर
एक नंबर पर 3 डी समन्वय को मैप करने के कुछ तरीके हैं। यहाँ एक रास्ता है।
कुछ फ़ंक्शन f (x, y, z) समन्वय (x, y, z) की रैखिक अनुक्रमणिका देता है। इसमें कुछ स्थिरांक ए, बी, सी, डी हैं जिन्हें हम प्राप्त करना चाहते हैं ताकि हम एक उपयोगी रूपांतरण समारोह लिख सकें।
f(x,y,z) = a*x + b*y + c*z + d
आपने उल्लेख किया है कि (0,0,0) 0. तो करने के लिए नक्शे:
f(0,0,0) = a*0 + b*0 + c*0 + d = 0
d = 0
f(x,y,z) = a*x + b*y + c*z
हल d है यही कारण है कि। आपने उल्लेख किया है कि (1,0,0) 1. तो करने के लिए नक्शे:
f(1,0,0) = a*1 + b*0 + c*0 = 1
a = 1
f(x,y,z) = x + b*y + c*z
एक हल है यही कारण है कि। आइए मनमाने ढंग से निर्णय लें कि अगले अधिकतम संख्या (MAX_X, 0, 0) (0,1,0) है।
f(MAX_X, 0, 0) = MAX_X
f(0, 1, 0) = 0 + b*1 + c*0 = MAX_X + 1
b = MAX_X + 1
f(x,y,z) = x + (MAX_X + 1)*y + c*z
यह बी हल हो गया है। आइए मनमाने ढंग से निर्णय लें कि (MAX_X, MAX_Y, 0) के बाद अगला उच्चतम नंबर (0,0,1) है।
f(MAX_X, MAX_Y, 0) = MAX_X + MAX_Y * (MAX_X + 1)
f(0,0,1) = 0 + (MAX_X + 1) * 0 + c*1 = MAX_X + MAX_Y * (MAX_X + 1) + 1
c = MAX_X + MAX_Y * (MAX_X + 1) + 1
c = (MAX_X + 1) + MAX_Y * (MAX_X + 1)
c = (MAX_X + 1) * (MAX_Y + 1)
अब है कि हम जानते हैं कि एक, ख, ग, और घ, हम अपने कार्य के रूप में निम्नानुसार लिख सकते हैं:
function linearIndexFromCoordinate(x,y,z, max_x, max_y){
a = 1
b = max_x + 1
c = (max_x + 1) * (max_y + 1)
d = 0
return a*x + b*y + c*z + d
}
आप समान तर्क द्वारा रैखिक सूचकांक से समन्वय प्राप्त कर सकते हैं। मेरे पास इसका एक अद्भुत प्रदर्शन है, जो इस पृष्ठ को शामिल करने के लिए बहुत छोटा है। तो मैं गणित व्याख्यान छोड़ दूंगा और आपको केवल अंतिम विधि दूंगा।
function coordinateFromLinearIndex(idx, max_x, max_y){
x = idx % (max_x+1)
idx /= (max_x+1)
y = idx % (max_y+1)
idx /= (max_y+1)
z = idx
return (x,y,z)
}
महान उत्तर! मुझे लगता है कि मैं 375 साल के लिए अपने अद्भुत सबूत पर बस पहेली करूंगा (लेकिन अब यह समझ में आता है)। बहुत बहुत धन्यवाद। – user1438116
@ केविन हैलो! मुझे एहसास है कि यह सवाल लगभग 2 साल पुराना है, लेकिन मैं सोच रहा था: क्या आपके पास उस गणित व्याख्यान का लिंक हो सकता है जिसका आपने उल्लेख किया था? आपकी विधि बिल्कुल शानदार लगती है, इसलिए मैं इसके पीछे गणित के बारे में उत्सुक था। –
आपको जवाब स्वीकार करने के बाद संपादन में कोड को नहीं बदला जाना चाहिए - यह एक टिप्पणी में किया जाना चाहिए। –
यदि आपके पास निर्देशांक पर कोई ऊपरी सीमा नहीं है, तो आप उन्हें उत्पत्ति और बाहर से संख्या दे सकते हैं। परत दर परत।
(0,0,0) -> 0
(0,0,1) -> 1
(0,1,0) -> 2
(1,0,0) -> 3
(0,0,2) -> 4
: :
(a,b,c) -> (a+b+c)·(a+b+c+1)·(a+b+c+2)/6 + (a+b)·(a+b+1)/2 + a
उलटा कठिन है, क्योंकि आपको तीसरी डिग्री बहुपद को हल करना होगा।
m1 = InverseTetrahedralNumber(n)
m2 = InverseTriangularNumber(n - Tetra(m1))
a = n - Tetra(m1) - Tri(m2)
b = m2 - a
c = m1 - m2
InverseTetrahedralNumber(n) = { x ∈ ℕ | Tetra(n) ≤ x < Tetra(n+1) }
Tetra(n) = n·(n+1)·(n+2)/6
InverseTriangularNumber(n) = { x ∈ ℕ | Tri(n) ≤ x < Tri(n+1) }
Tri(n) = n·(n+1)/2
InverseTetrahedralNumber(n)
large analytic solution से गणना जहां सकता है या तो, या some numeric method साथ की खोज की।
यहां बीजगणितीय समाधान (जावास्क्रिप्ट) में मेरा प्रयास है। मैं समीकरणों को सरल बनाने के लिए प्रतिस्थापन p = a+b+c
, q = a+b
, r = a
का उपयोग कर रहा हूं।
function index(a,b,c) {
var r = a;
var q = r + b;
var p = q + c;
return (p*(p+1)*(p+2) + 3*q*(q+1) + 6*r)/6;
}
function solve(n) {
if (n <= 0) {
return [0,0,0];
}
var sqrt = Math.sqrt;
var cbrt = function (x) { return Math.pow(x,1.0/3); };
var X = sqrt(729*n*n - 3);
var Y = cbrt(81*n + 3*X);
var p = Math.floor((Y*(Y-3)+3)/(Y*3));
if ((p+1)*(p+2)*(p+3) <= n*6) p++;
var pp = p*(p+1)*(p+2);
var Z = sqrt(72*n+9-12*pp);
var q = Math.floor((Z-3)/6);
if (pp + (q+1)*(q+2)*3 <= n*6) q++;
var qq = q*(q+1);
var r = Math.floor((6*n-pp-3*qq)/6);
if (pp + qq*3 + r*6 < n*6) r++;
return [r, q - r, p - q];
}
- 1. 3 डी एक साथ तिरछा परिवर्तन मैट्रिक्स समन्वय अक्ष
- 2. 3 डी में त्रिभुज के चेहरे के सामान्य कोण को ढूंढें, इसके शिखर के समन्वय
- 3. मैं प्रत्येक 3 सूचकांक को एक स्ट्रिंग कैसे स्लाइस करूं?
- 4. एक 3 डी heightmap के रूपों की गणना?
- 5. मैं लाइन सेगमेंट के सामान्य वेक्टर की गणना कैसे करूं?
- 6. बाइट [] और इसके विपरीत स्ट्रिंग?
- 7. आप पाइथन 2 और 3 के बीच कैसे स्विच करते हैं, और इसके विपरीत?
- 8. एनएसएममेज से सीवी :: मैट और इसके विपरीत
- 9. स्ट्रिंग के लिए बाइट ऐरे की छवि (और इसके विपरीत)
- 10. कोकोस 2 डी समन्वय प्रणाली
- 11. मैं ग्राफ के लिए एक ट्रेंडलाइन की गणना कैसे करूं?
- 12. जावा लाइब्रेरी जो एमजीआरएस समन्वय के लिए अक्षांश/देशांतर को परिवर्तित करती है और इसके विपरीत?
- 13. मैं दो तत्वों के बीच चौड़ाई की गणना कैसे करूं?
- 14. आरएसए के लिए, मैं गुप्त एक्सपोनेंट की गणना कैसे करूं?
- 15. एंड्रॉइड में किसी अन्य प्रोजेक्ट की गतिविधि से एक प्रोजेक्ट की गतिविधि को कैसे कॉल करें? इसके विपरीत इसके विपरीत?
- 16. ज़ेंड_Mail और = 0 डी = 0 ए = 3 डी = 3 डी = 3 डी = 3 डी = 3 डी
- 17. एक महीने के अंत की गणना, या इसके अंतिम दूसरे
- 18. विमान के 3 डी रोटेशन
- 19. 3 डी
- 20. मैं दो पूर्णांक की समानता की गणना कैसे करूं?
- 21. मैं \ n और इसके विपरीत के बजाय PHP_EOL का उपयोग कब करूं? अजाक्स/Jquery ग्राहक समस्या
- 22. 3 डी परिप्रेक्ष्य प्रोजेक्शन
- 23. दो 3 डी सर्कल पर निकटतम बिंदुओं की एक जोड़ी की गणना कैसे करें?
- 24. 3 अंक दिए गए, मैं सामान्य वेक्टर की गणना कैसे करूं?
- 25. मैं डी 3 में प्रारंभिक ज़ूम स्तर कैसे निर्दिष्ट करूं?
- 26. मैं डायरेक्ट 3 डी डिवाइस मैनेजर का उपयोग कैसे करूं?
- 27. जावा में BufferedImage की चमक और इसके विपरीत समायोजित करें
- 28. 1 डी सरणी सूचकांक 2 डी सरणी सूचकांक
- 29. आईफोनएसडीके कैटर्रांसफॉर्म 3 डी
- 30. मैं डायरेक्ट 3 डी
क्या समन्वय हमेशा पूर्णांक से बने होते हैं? क्या आपके पास नकारात्मक निर्देशांक हो सकते हैं? क्या आपके पास एक्स अक्ष के अलावा किसी भी अक्ष के लिए अधिकतम सीमा है? – Kevin
क्या प्रत्येक समन्वय में समान संख्या में विभाजन होते हैं, या अलग होते हैं? अंतिम बिंदु '(एन, एन, एन) 'या' (एन 1, एन 2, एन 3)' द्वारा दर्शाया गया है? – ja72