2010-12-16 15 views
21

मैं चाहता हूँ नेत्रहीन दो हलकों कि अतिव्यापी हैं में शामिल होने के लिए इतना है किओवरलैपिंग मंडलियों में कैसे शामिल हों?

AltText

हो जाता है

alt text

मैं पहले से ही आंशिक हलकों के लिए तरीके हैं, लेकिन अब मुझे पता है कि कैसे बड़े की जरूरत है मार्च सर्कल के लिए ओवरलैपिंग कोण है, और मुझे नहीं पता कि यह कैसे करना है।

किसी को भी कोई विचार मिला है?

+0

हममम अच्छा एक के किसी भी संख्या! यदि आप अपने केंद्र और त्रिज्या को जानते हैं तो आप मंडलियों के चौराहे बिंदु पा सकते हैं। वहां से, आप ओवरलैपिंग सेगमेंट को समझने में सक्षम होना चाहिए - चौराहे बिंदुओं द्वारा बनाए गए प्रत्येक सर्कल पर दो सेगमेंट के छोटे ... क्या इससे मदद मिलती है? मैंने कभी कोडिंग करने की कोशिश नहीं की है, लेकिन मैं कुछ छद्म कोड की कोशिश कर सकता हूं ... – FrustratedWithFormsDesigner

+0

क्या मंडलियों में एक ही त्रिज्या है? – Ishtar

+0

सर्कल कभी-कभी एक ही रेडियो हो सकती है लेकिन आम तौर पर वे नहीं करते हैं। –

उत्तर

36

Phi= ArcTan[ Sqrt[4 * R^2 - d^2] /d ] 

HTH!

संपादित

दो अलग त्रिज्या के लिए:

एक छोटे से सरल बनाना:

Phi= ArcTan[Sqrt[-d^4 -(R1^2 - R2^2)^2 + 2*d^2*(R1^2 + R2^2)]/(d^2 +R1^2 -R2^2)] 

संपादित

यदि आप दूसरे सर्कल सेंटर से कोण को देखना चाहते हैं, तो अंतिम समीकरण में R2 द्वारा R1 का आदान-प्रदान करें।

f[center1_, d_, R1_, R2_] := Module[{Phi, Theta}, 

    Phi= ArcTan[Sqrt[-d^4-(R1^2-R2^2)^2 + 2*d^2*(R1^2 + R2^2)]/(d^2 +R1^2 -R2^2)] 

    Theta=ArcTan[Sqrt[-d^4-(R1^2-R2^2)^2 + 2*d^2*(R1^2 + R2^2)]/(d^2 -R1^2 +R2^2)] 

    {Circle[{center1, 0}, R1, {2 Pi - Phi, Phi}], 
    Circle[{d,  0}, R2, {Pi - Theta, -Pi + Theta}]} 

    ]; 
Graphics[f[0, 1.5, 1, 1]] 

alt text

Graphics[f[0, 1.5, 1, 3/4]] 

alt text

और ...

ImageMultiply[ 
[email protected][#], 
ImageResize[[email protected] 
"http://i305.photobucket.com/albums/nn235/greeneyedgirlox/blondebabybunny.jpg", 
    [email protected]#]] &@ 
[email protected][f[0, 1.5, 1, 1], Background -> Black] 

0:

यहाँ मेथेमेटिका में एक नमूना कार्यान्वयन है

:)

+2

दो त्रिज्या जरूरी नहीं हैं। –

+0

@Ignacio संपादित करें –

+0

डी के साथ क्या? मैं डी कैसे प्राप्त करूं? यह संपादन में कहीं और क्यों तैर रहा है? –

5

अभी इसे हल करने का समय नहीं है। विकिपीडिया आप त्रिकोण ए, बी, सी देखने पर

http://en.wikipedia.org/wiki/Triangle#The_sine.2C_cosine_and_tangent_rules

तस्वीर में: लेकिन मैं तुम्हें दे देंगे क्या आप इसे बाहर काम करने के लिए की जरूरत है। चलो बाएं सर्कल का केंद्र बनें, बी सही सर्कल के केंद्र। और एसी बाएं सर्कल और बीसी के त्रिज्या दाएं सर्कल के त्रिज्या।

alt text

तब बिंदु सी शीर्ष प्रतिच्छेदन बिंदु होगा। ए, α में कोने, बाएं सर्कल में आधा कोण है। बी, β, कोने में सही कोण में कोण कोण। ये कोण हैं जिन्हें आपको चाहिए, है ना?

विकिपीडिया आगे बताता है: 'यदि किसी त्रिभुज के सभी तीन किनारों की लंबाई ज्ञात है तो तीन कोणों की गणना की जा सकती है।'

स्यूडोकोड:

a=radius_a 
b=radius_b 
c=b_x - a_x 
alpha=arccos((b^2 + c^2 - a^2)/(2*b*c)) //from wikipedia 
left_angle=2*alpha 

गुड लक :)

8

अब यह आपके लिए 100% काम करेंगे भी आंकड़ा अंडाकार और है आंकड़े

private void Form1_Paint(object sender, PaintEventArgs e) 
    { 
     Pen p = new Pen(Color.Red, 2);  

     Rectangle Fig1 = new Rectangle(50, 50, 100, 50); //dimensions of Fig1 
     Rectangle Fig2 = new Rectangle(100, 50, 100, 50); //dimensions of Fig2 
     . . . 

     DrawFigure(e.Graphics, p, Fig1); 
     DrawFigure(e.Graphics, p, Fig2); 
     . . . 

     //remember to call FillFigure after drawing all figures. 
     FillFigure(e.Graphics, p, Fig1); 
     FillFigure(e.Graphics, p, Fig2); 
     . . . 
    } 
    private void DrawFigure(Graphics g, Pen p, Rectangle r) 
    { 
     g.DrawEllipse(p, r.X, r.Y, r.Width, r.Height); 
    } 
    private void FillFigure(Graphics g, Pen p, Rectangle r) 
    { 
     g.FillEllipse(new SolidBrush(this.BackColor), r.X + p.Width, r.Y + p.Width, r.Width - 2 * +p.Width, r.Height - 2 * +p.Width);  //Adjusting Color so that it will leave border and fill 
    } 

alt text

+6

प्रश्न और टिप्पणियों को ध्यान से पढ़ने के लिए धन्यवाद। मैं OpenGL, NOT .net ड्राइंग के साथ काम कर रहा हूं। –

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