2012-06-03 33 views
11

मैं xy (2 डी) निर्देशांक के रूप में एक सर्पिल आकाशगंगा उत्पन्न करने की कोशिश कर रहा हूं - लेकिन गणित मेरा मजबूत सूट नहीं है।XY निर्देशांक उत्पन्न करने के लिए एक सर्पिल का वर्णन करने वाले सूत्र के माध्यम से लूपिंग

मैं सर्पिल पर एक excellent source से निम्नलिखित gleaned है:

r त्रिज्या (टी) और कोण टी simpliest सर्पिल, आर्किमिडीज के सर्पिल के लिए आनुपातिक हैं। इसलिए समीकरण है:

(3) ध्रुवीय समीकरण: आर (टी) = पर [एक स्थिर है]। एक्स (टी) = क्योंकि (टी) में, वाई (टी) पाप में = (टी),
(1) केन्द्रीय समीकरण:
इस से
(2) पैरामीटर प्रपत्र इस प्रकार x² + y² = a² [ आर्क टैन (वाई/एक्स)] ²।

This question आकाशगंगा पीढ़ी पर भी चर्चा की तरह, लेकिन जवाब में बिखरे हुए थे और अभी भी बहुत ज्यादा मैं क्या जरूरत है (उर्फ, मेरे गणित-गूंगा मन उन्हें समझ में नहीं कर सकते हैं) के लिए जटिल।

अनिवार्य रूप से, मुझे 513x513 XY ग्रिड पर अंक उत्पन्न करने के लिए PHP ~ 5000 बार में एक सर्पिल सूत्र के माध्यम से लूप करना है। ग्रिड का आकार और आवश्यक अंकों की संख्या भविष्य में बदल सकती है। इससे भी बेहतर होगा कि उन बिंदुओं को सर्पिलों की उत्पत्ति की तरफ आवृत्ति में और दोनों सटीक गणितीय सूत्र से भटक सकते हैं, इसी तरह आकाशगंगा वास्तव में कैसा दिखता है।

यह गणितीय पेपर a formula that describes the structure of spiral galaxies के बारे में बात करता है।

मुझे पूरी तरह से खो देता है कि गणितीय सूत्र का अनुवाद कैसे करें जो मैं PHP में लूप कर सकता हूं!

उत्तर

6
// a is 5 here 
function x($t){ return 5 * $t * cos($t); } 
function y($t){ return 5 * $t * sin($t); } 

for ($t = 0; $t < 50; $t += 0.01) { 
    $xyPoint = array(x($t), y($t)); 
    // draw it 
} 

जब आप इस तरह पैरामीट्रिक समीकरणों सामना करते हैं, पैरामीटर चर के लिए अपने आम t होने के लिए, जो समय का मतलब है। तो आप कार्यों में टी के बढ़ते मूल्यों को जोड़ने के बारे में सोच सकते हैं, और निर्देशांक प्राप्त कर सकते हैं जो धीरे-धीरे समय के रूप में बदल जाते हैं।

आपको टी के लिए, और टी के बढ़ते चरण आकार के लिए अपना खुद का मूल्य चुनना होगा। यह सिर्फ आपकी आवश्यकताओं पर निर्भर करता है। दोनों cos() और sin() का अधिकतम मान 1 है, यदि यह आपके कैनवास आकार

+0

आपकी सहायता के लिए धन्यवाद, क्रिस के आधार पर ए और टी के लिए उपयुक्त मानों को समझने में आपकी सहायता करता है। यह एक पैरामीट्रिक समीकरण के माध्यम से लूपिंग के संबंध में मेरे प्रश्न का बिल्कुल जवाब दिया। मेरा अगला कार्य फॉर्मूला को एक अलग ग्रिड का पालन करने के लिए ट्विक करना है, जो मुझे यकीन नहीं है कि यह संभव है। – Nick

+0

एक्स (टी) का अधिकतम मूल्य ग्रिड की आधा चौड़ाई से अधिक नहीं हो सकता है, मानते हुए कि आप अपनी सर्पिल को केंद्रित करते हैं। इसलिए, 'ए 'का मान <=' ग्रिडविड्थ/(ऊपरी बाउंडऑफ $ टी * 2) होना चाहिए। टी के लिए आप जिस श्रेणी को चुनते हैं वह यह बताता है कि आप कितने सर्पिल आकर्षित करते हैं। उदाहरण के लिए, यदि टी 0 से 2 पीआई तक जाता है, तो आप एक लूप बनाते हैं। 0 से 50 लगभग 8 लूप है। यही कारण है कि टी को चर के रूप में छोड़ा जाना चाहिए, और केवल आप एक उपयुक्त मूल्य चुन सकते हैं (कोई भी नहीं, लेकिन आप जानते हैं कि आप कितने लूप चाहते हैं)। लूप के चरण का आकार 'श्रेणी से $ t/numDesiredPointsToDraw' द्वारा निर्धारित किया जाता है – goat