2010-05-06 22 views
6

Ho un rettangolo in .NET in cui disegno un'ellisse.trovare un punto su una circonferenza dell'ellisse che si trova all'interno di un rettangolo con punto centrale, altezza e larghezza?

Conosco la larghezza, l'altezza e il punto centrale di quel rettangolo.

Ovviamente il punto centrale del rettangolo è anche il punto centrale dell'ellisse.

So come calcolare un punto su un cerchio, tuttavia non ho idea di un'ellisse.

Ho quei parametri e un angolo, ho bisogno del punto sull'ellisse, qualcuno può postare la formula?

Ho visto da qualche parte che devi calcolare 2 punti in cui andranno 2 raggi, la somma dei raggi sarà fissa e cambieranno di dimensioni di conseguenza.

Non so come farlo, ho solo l'altezza del rettangolo, la larghezza e il punto centrale e, naturalmente, l'angolo in cui desidero trovare il punto.

Grazie per qualsiasi aiuto Shlomi

+2

Questo appartiene a http://mathoverflow.net/ –

+2

@ Ganesh R: non tutte le domande sulla matematica appartengono a mathoverflow. In effetti, * pochissime * delle domande che le persone su SO * dicono * appartengono a mathoverflow appartengono effettivamente a mathoverflow. Leggi le sue FAQ. – AakashM

+0

@Shlomi: i lati del rettangolo sono paralleli agli assi? – AakashM

risposta

13

È possibile utilizzare il canonical form in polar coordinates per il vostro problema in cui la larghezza e l'altezza di un rettangolo è rispettivamente w e h.

alt text

alt text

dove t è un angolo in radianti, un è w/2 e b è h/2

Quindi, per tracciare la tua ellisse, tutto ciò che devi fare è variare t da a gradi (in radianti in modo che è e 2pi) ed a seconda di come si distanziare t, si ottengono i punti dell'ellisse.

Dal momento che il rettangolo non è centrata all'origine, si dovrà compensare facendo le coordinate del centro del rettangolo, diciamo, (C x, C y)

const double C_x = 10, C_y = 20, w = 40, h = 50; 
for(double t = 0; t <=2*pi; t+=0.01) 
{ 
    double X = C_x+(w/2)*cos(t); 
    double Y = C_y+(h/2)*sin(t); 
    // Do what you want with X & Y here 
} 
+0

Grazie, è stato il trucco. –

+0

Cosa succede se voglio solo passare una X data e ottenere la Y correlata all'elisse? Come devo procedere? –

+0

Quindi puoi risolvere per 't' e collegarlo a' Y (t) '. Per esempio. se 'a = 1, b = 1' e tu hai' X = 1', quindi 'X = a cos (t)' o '1 = 1 * cos (t)' il che significa che 't = 0' è una soluzione . Quindi, 'Y (t) = 0'. – Jacob

Problemi correlati