Oppure

Loading
29/11/12 21:03
Renny
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?
aaa
29/11/12 21:11
Come hai disegnato il rettangolo? E l'ellisse?
29/11/12 21:42
Renny
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
Private Sub Panel1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Panel1.Paint
    Dim ellipseX As Single = 50.0F
    Dim ellipseY As Single = 100.0F
    Dim ellipseA As Single = 200.0F
    Dim ellipseB As Single = 75.0F
    Dim locRatio As Single = 1.0F - 1.0F / Math.Sqrt(2D)
    Dim sizeRatio As Single = 2.0F / Math.Sqrt(2D)

    Dim rectEllipse As New RectangleF( _
        New PointF(ellipseX, ellipseY), _
        New SizeF(2.0F * ellipseA, 2.0F * ellipseB) _
    )
    Dim rectInner As New RectangleF( _
        New PointF(ellipseA * locRatio + ellipseX, ellipseB * locRatio + ellipseY), _
        New SizeF(ellipseA * sizeRatio, ellipseB * sizeRatio) _
    )

    e.Graphics.DrawEllipse(Pens.Black, Rectangle.Round(rectEllipse))
    e.Graphics.DrawRectangle(Pens.Black, Rectangle.Round(rectInner))
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 29/11/12 21:45
aaa
29/11/12 22:42
Il Totem
it.wikipedia.org/wiki/…

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).
aaa
29/11/12 23:08
Renny
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 29/11/12 23:58
aaa