Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB.NET] Rettangolo inscritto in ellisse da disegnare
Forum - C# / VB.NET - [VB.NET] Rettangolo inscritto in ellisse da disegnare

Avatar
Renny (Normal User)
Expert


Messaggi: 231
Iscritto: 30/07/2011

Segnala al moderatore
Postato alle 22:03
Giovedì, 29/11/2012
Ciao ragazzi.
Ho un problemino che forse è più di matematica che programmazione.. Comunque visto che uso vb.net...
Dunque, io ho le coordinate di un rectangle che disegno senza problemi. Ora vorrei però disegnare anche un ellisse, in modo che il rettangolo di cui conosco le caratteristiche (punto di origine, larghezza e altezza) risulti
INSCRITTO all'interno dell'ellisse che devo disegnare.
Ho fatto un po di prove ma non riesco a passare dalle coordinare del rettangolo a quelle per l'ellisse...
Come potrei fare?


In attesa della fine del mondo, fissata per l'anno prossimo, sono alla ricerca di un notaio con cui fare testamento...
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 22:11
Giovedì, 29/11/2012
Come hai disegnato il rettangolo? E l'ellisse?


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
Renny (Normal User)
Expert


Messaggi: 231
Iscritto: 30/07/2011

Segnala al moderatore
Postato alle 22:42
Giovedì, 29/11/2012
Ciao
Dunque, le coordinate e la dimensione del rettangolo variano a seconda del caso, nel senso che sono determinante da altre routine, nel progetto.
In ogni caso devo disegnare il rettangolo in una picturebox: semplicemente ottengo l'oggetto graphics e con drawrectangle disegno il rettangolo.
Il mio problema però riguarda come calcolare le coordinate dell'ellisse, in modo che il rettangolo risulti inscritto in essa.
Ho trovato questo codice
Codice sorgente - presumibilmente VB.NET

  1. Private Sub Panel1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Panel1.Paint
  2.     Dim ellipseX As Single = 50.0F
  3.     Dim ellipseY As Single = 100.0F
  4.     Dim ellipseA As Single = 200.0F
  5.     Dim ellipseB As Single = 75.0F
  6.     Dim locRatio As Single = 1.0F - 1.0F / Math.Sqrt(2D)
  7.     Dim sizeRatio As Single = 2.0F / Math.Sqrt(2D)
  8.  
  9.     Dim rectEllipse As New RectangleF( _
  10.         New PointF(ellipseX, ellipseY), _
  11.         New SizeF(2.0F * ellipseA, 2.0F * ellipseB) _
  12.     )
  13.     Dim rectInner As New RectangleF( _
  14.         New PointF(ellipseA * locRatio + ellipseX, ellipseB * locRatio + ellipseY), _
  15.         New SizeF(ellipseA * sizeRatio, ellipseB * sizeRatio) _
  16.     )
  17.  
  18.     e.Graphics.DrawEllipse(Pens.Black, Rectangle.Round(rectEllipse))
  19.     e.Graphics.DrawRectangle(Pens.Black, Rectangle.Round(rectInner))
  20. End Sub


Che però fa il contrario di quello che serve a me: io ho le coordiante di partenza del rettangolo e non riesco a calcolare quelle per l'ellisse... :_doubt::noway:

Ultima modifica effettuata da Renny il 29/11/2012 alle 22:45


In attesa della fine del mondo, fissata per l'anno prossimo, sono alla ricerca di un notaio con cui fare testamento...
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 23:42
Giovedì, 29/11/2012
http://it.wikipedia.org/wiki/Ellisse

L'ellisse ha semi-altezza b e semi-larghezza a. Intersecando l'ellisse con le rette y = +-(b/a) x troverai dei punti che costituiscono i vertici del rettangolo inscritto.
Per trovare l'ellisse circoscritta, risolvi il problemi al contrario (dati x, y, trova a e b).


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM Quote
Avatar
Renny (Normal User)
Expert


Messaggi: 231
Iscritto: 30/07/2011

Segnala al moderatore
Postato alle 0:08
Venerdì, 30/11/2012
Non ho capito.. :noway::noway::noway::-|
Ragioniamo.. dunque, ipotizziamo che l'ellisse sia al centro del piano cartesiano, disposta simmetricamente rispetto agli assi cartesiani. In questo caso le diagonali del rettangolo che ho sono come 2 rette che passano per l'origine, e volendo ho l'equazione di queste due rette, come scrivi tu y=(b/a)x e quel'altra col segno meno... Ma la X quanto vale?

EDIT: no, non è vero: io le coordinate dei vertici del rettangolo che intersecano l'ellisse già li conosco: ho i dati del rettangolo per disegnarlo, cioè il suo vertice in alto a sinistra e Width e Height... :noway:

Ultima modifica effettuata da Renny il 30/11/2012 alle 0:58


In attesa della fine del mondo, fissata per l'anno prossimo, sono alla ricerca di un notaio con cui fare testamento...
PM Quote