none
trace d'une courbe avec for i to next RRS feed

  • Question

  • Je n'arrive pas à afficher la courbe . J'ai l'impression que je récupère mal les valeurs dans la boucle, ou Private Sub DrawLine est mal approprié. Merci de m'expliquer comment modifier pour obtenir un tracé.

     

    Private Sub DrawLineInt(ByVal e As PaintEventArgs)

     

     

    ' Create coordinates of points that define line.

     

    Dim Adegrs As Single = (ang.Text * F)

     

     

    Dim b As Single = ep.Text

     

     

    Dim u As Single = di.Text

     

     

    Dim N As Single = 12

     

     

    Dim coy As Single = 255 / z 'coef x

     

    Dim cox As Single = 555 / (u + b) * Pi 'coef y

     

    Dim X, XX, ZZ, XXX, ZZZ As Single

     

    'trac de la courbe

     

    Dim Ryy(N) As Single

     

    Dim Rxx(N) As Single

     

    For I As Integer = 0 To N Step 0.01

    d = (((u + b) / 2) * (Math.Cos((360) / N) * I))

     

    'calcul diagonale intermdiaire(u+b=diamtre moyen)

    z = d * (Math.Tan(Adegrs))

    'calcul gnratrice partir de l'axe

    Ryy(I) = z * coy

    ' valeur de la gnratrice sur les Y

    Rxx(I) = (u + b) * Pi / N * I * cox

     

    Dim x1 As Integer = 335 + Rxx(I)

     

     

    Dim x2 As Integer = 335 + Rxx(I)

     

     

    Dim y1 As Integer = 240 - Ryy(I)

     

     

    Dim y2 As Integer = 240 - Ryy(I) + 1

     

     

    ' Draw line to screen.

     

    Dim ggg As System.Drawing.Graphics = Me.CreateGraphics

     

     

    Dim Pen As New System.Drawing.Pen(System.Drawing.Color.Blue)

     

     

    Me.Graphics.DrawLine(Pen, x1, y1, x2, y2) 'trace la courbe

    samedi 8 mai 2010 07:06

Réponses

  • Bonjour,

    Je ne comprends pas tout, il faut dire que je débute plutôt sur vbNet, mais j'ai déjà tracé des cercle et des lignes, voici comment si ça peut te servire, l'exemple fonctionne il suffit de le coller dans un programme neuf :

    Option Explicit On
    Public Class Form1
    
     Dim g As System.Drawing.Graphics ' méthode
     Dim c As New Pen(Color.FromArgb(1, 2, 3), 2) ' couleur rgb 2) = taille trait
     Dim xy As PointF() = New PointF(360) {} ' nombre degrés boucle : matrice v(x, y)
     Dim noir As New Pen(Color.FromArgb(0, 0, 0), 2)
     Dim i As Long
     Dim r As Long
     Dim ar As Double ' angle en radians
     Dim sinus As Double
     Dim cosinus As Double
     Dim x As Long
     Dim y As Long
     Dim ox As Long
     Dim oy As Long
     Dim x1 As Long
     Dim x2 As Long
     Dim y1 As Long
     Dim y2 As Long
     '
    
     Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
      r = 200
      ox = 250
      oy = 250
      g = Me.CreateGraphics()
      '
      For i = 0 To 360 ' cercle
       ar = i * 3.14 / 180
       cosinus = Math.Cos(ar)
       x = r * cosinus + ox
       xy(i).X = x
       sinus = Math.Sin(ar)
       y = oy - r * sinus
       xy(i).Y = y
      Next i
      '
      g.DrawLines(c, xy) ' imprime écran matrice
      '
      '
      '
      For i = 0 To 360 Step 18 ' droites (centre vers extérieur)
       r = 240 ' point 1 petit rayon
       ar = i * 3.14 / 180
       cosinus = Math.Cos(ar)
       x1 = r * cosinus + ox
       sinus = Math.Sin(ar)
       y1 = oy - r * sinus
       r = 270 ' point 2 grand rayon
       ar = i * 3.14 / 180
       cosinus = Math.Cos(ar)
       x2 = r * cosinus + ox
       sinus = Math.Sin(ar)
       y2 = oy - r * sinus
       g.DrawLine(noir, x1, y1, x2, y2)
      Next i
      '
      c.Dispose()
      g.Dispose()
     End Sub
    
    
    End Class
    

    Ça doit donner ceci :

    http://cjoint.com/?fjlfQeHinP

    Cordialement.


    Joe ___ Romans et Logiciels ___ http://irolog.free.fr
    dimanche 9 mai 2010 09:06
  • Bonjour,

    Je ne suis pas assez bon en math pour suivre, désolé, tu peux t'adresser à des personnes plus pointues en ces domaines...

    Par contre voici pour les courbes, mais en VB6, j'ai quelque chose, si j'amais ça peut te servir :

    ' LISSAGE DES COURBES (Lissage de Malgrange)
    i=0
    For j = valeur To (valeur + x) Step 0.01
     posit = Hauteur - (Hauteur / 2) * (Sin(2 * 3.141592654 * j / cycle) + 1) 
     ' milieu -> haut
    'OU
     posit = Hauteur / 2 * (Sin(2 * 3.141592654 * j / cycle) + 1) 
     ' milieu -> bas
     i = i + 1
     PSet (i, posit), QBColor(couleur)
    Next j
    
    Commentaires:
    ("J" dans la boucle) est la valeur à afficher
    (X) est le nombre d'affichages
    (Hauteur) est la hauteur du graphique
    (Hauteur - (Hauteur / 2)) donne un départ du milieu vers le haut
    (Hauteur / 2) donne un départ du milieu vers le bas
    ("J" dans la formuler) + ou - donne le point de départ en hauteur
    (Cycle) donne la longueur du cycle à répéter
    Pset(L, C), couleur trace au pixel

    Ce qui donne ceci :

    http://irolog.free.fr/irolog_vente/biorythmes_v/index.htm

    Cordialement.

     


    Joe ___ Romans et Logiciels ___ http://irolog.free.fr
    • Marqué comme réponse prof1 dimanche 16 mai 2010 17:51
    dimanche 16 mai 2010 10:57

Toutes les réponses

  • Bonjour,

    Je ne comprends pas tout, il faut dire que je débute plutôt sur vbNet, mais j'ai déjà tracé des cercle et des lignes, voici comment si ça peut te servire, l'exemple fonctionne il suffit de le coller dans un programme neuf :

    Option Explicit On
    Public Class Form1
    
     Dim g As System.Drawing.Graphics ' méthode
     Dim c As New Pen(Color.FromArgb(1, 2, 3), 2) ' couleur rgb 2) = taille trait
     Dim xy As PointF() = New PointF(360) {} ' nombre degrés boucle : matrice v(x, y)
     Dim noir As New Pen(Color.FromArgb(0, 0, 0), 2)
     Dim i As Long
     Dim r As Long
     Dim ar As Double ' angle en radians
     Dim sinus As Double
     Dim cosinus As Double
     Dim x As Long
     Dim y As Long
     Dim ox As Long
     Dim oy As Long
     Dim x1 As Long
     Dim x2 As Long
     Dim y1 As Long
     Dim y2 As Long
     '
    
     Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
      r = 200
      ox = 250
      oy = 250
      g = Me.CreateGraphics()
      '
      For i = 0 To 360 ' cercle
       ar = i * 3.14 / 180
       cosinus = Math.Cos(ar)
       x = r * cosinus + ox
       xy(i).X = x
       sinus = Math.Sin(ar)
       y = oy - r * sinus
       xy(i).Y = y
      Next i
      '
      g.DrawLines(c, xy) ' imprime écran matrice
      '
      '
      '
      For i = 0 To 360 Step 18 ' droites (centre vers extérieur)
       r = 240 ' point 1 petit rayon
       ar = i * 3.14 / 180
       cosinus = Math.Cos(ar)
       x1 = r * cosinus + ox
       sinus = Math.Sin(ar)
       y1 = oy - r * sinus
       r = 270 ' point 2 grand rayon
       ar = i * 3.14 / 180
       cosinus = Math.Cos(ar)
       x2 = r * cosinus + ox
       sinus = Math.Sin(ar)
       y2 = oy - r * sinus
       g.DrawLine(noir, x1, y1, x2, y2)
      Next i
      '
      c.Dispose()
      g.Dispose()
     End Sub
    
    
    End Class
    

    Ça doit donner ceci :

    http://cjoint.com/?fjlfQeHinP

    Cordialement.


    Joe ___ Romans et Logiciels ___ http://irolog.free.fr
    dimanche 9 mai 2010 09:06
  • Je te remercie d'avoir eu l'amabilité de m'adresser une réponse.

    je débute en VB et des choses simples, sont pour moi un obstacle insurmontable sans aide. 

    lundi 10 mai 2010 08:59
  • Salut,

    Je suis content que ceci puisse t'aider, moi aussi je suis récent en vbNet, je nage encore dans pas mal de démarches, avant sur vb6 on dessinait sur la feuille, désormais il faut dessiner dans une sorte de matrice qui ensuite dessine sur la feuille, tout est plus compliqué et plus long, est-ce ça le progrès...

    Cordialement.


    Joe ___ Romans et Logiciels ___ http://irolog.free.fr
    • Proposé comme réponse EhJoe lundi 10 mai 2010 14:50
    lundi 10 mai 2010 14:50
  • Je bloque encore.

     Ma valeur de l'angle est variable La compilation me dit " La conversion de la chaîne en type double n'est pas valide. (Dim Adegres As Single= ang.Text*F) F est la conversion en degrés.

    d'autrepart, la "matrice" doit différer je suppose car mon tracé doit ressembler à une sinusoîde. Mon programme est le développement d'un cylindre de révolution coupé par un plan.

    j'avais traité ce problème sous GWBASIC,repris avec TURBOBASIC,repris avec POWERBASIC et là, je tente d'actualiser avec une programmation sous Windows

    Merci par avance

     

     

    ''Public Class Form1

     

    Dim g As System.Drawing.Graphics ' mthode

     

    Dim c As New Pen(Color.FromArgb(1, 2, 3), 2) ' couleur rgb 2) = taille trait

     

    Dim xy As PointF() = New PointF(360) {} ' nombre degrs boucle : matrice v(x, y)

     

    'Dim noir As New Pen(Color.FromArgb(0, 0, 0), 2)

     

    'Dim z As Long

     

    'Dim d As Long

     

     

    Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint

    g =

    Me.CreateGraphics()

     

    Dim Adegrs As Single = (ang.Text) * F

     

    Dim N As Long = 12

     

    Dim X As Long

     

    Dim coy As String = 255 / z 'coef x

     

    Dim cox As String = 555 / (u + b) * Pi 'coef y

     

    Dim XX As Long

     

    Dim ZZ As Long

     

    Dim XXX As Long

     

    Dim ZZZ As Long

     

    'trac de la courbe

     

    Dim Ryy As Long

     

    Dim Rxx As Long

     

    Dim x1 As Long

     

    Dim x2 As Long

     

    Dim y1 As Long

     

    Dim y2 As Long

     

    For I = 0 To 12 Step 0.01

    d = u + b / 2 * Math.Cos(360) / 12 * I

    'calcul diagonale intermdiaire(u+b=diamtre moyen)

    z = d * Math.Tan(Adegrs)

    'calcul gnratrice partir de l'axe

    Ryy = z * coy

    ' valeur de la gnratrice sur les Y

    Rxx = u + b * Pi / 12 * I * cox

    x1 = 335 + Rxx

    x2 = 335 + Rxx

    y1 = 240 - Ryy

    y2 = 240 - Ryy + 1

     

    Dim Pen As New System.Drawing.Pen(System.Drawing.Color.Red)

    g.DrawLine(Pen, x1, y1, x2, y2)

    'trace la courbe

    XX = X

    ZZ = z

    XXX = X - XX

    ZZZ = z - ZZ

     

    Next

     

     

     

    mardi 11 mai 2010 09:32
  • Bonjour,

     

    Vous devez convertir ang.Text, qui est une variable de type string, au type single.

     

    On peut utiliser la méthode Single.Parse ou la méthode Single.TryParse

     

     Vous avez aussi des exemples d’utilisation dans les pages de documentation.

     

    Cordialement,

    Alex


    Appel à contribution ! http://social.msdn.microsoft.com/Forums/fr-FR/vbasicfr/thread/bd974e0e-5519-4122-b8fc-3b998207c34f
    mardi 11 mai 2010 11:33
  • Bonjour;

    Tu écris :

    Dim Adegres As Single= ang.Text*F

    D'après ce que dit Alex, si va variable est une chaîne, évidemment ça peut mal se marier avec du numérique, la conversion sur un double est

    dim d as double
    d = cdbl(ang.text)

    Sinon, j'aurais mis en plus détaillé moi, et tout en double, genre

    dim Adegres as double = 0
    dim angle as double = 0
    dim f as double
    angle = cdbl(angle.text)
    Adegres = angle * f

    Cordialement

     


    Joe ___ Romans et Logiciels ___ http://irolog.free.fr
    • Proposé comme réponse EhJoe jeudi 13 mai 2010 09:36
    jeudi 13 mai 2010 09:35
  • merci de me consacrer du temps , j'essaie la méthode d'Alex que je remercie et la tienne, mais je suis toujours aussi nul .

    je joins le programme complet pour le tracé d'un cylindre coupé par un plan.La partie calcul s'inscrit convenablement à l'écran, ainsi qu'un rectangle et les axes X et Y du tracé de la courbe, mais impossible d'arriver à tracer la courbe(sinusoîde) trop de choses me bloquent.

    ang.text se compile bien dans la première partie, mais ne se compile plus pour le même calcul que j'utilise pour tracer la courbe (text,n'est pas un membre double) je n'arrive pas à traduire.

    avec l'ensemble du programme peut être qu'il sera plus facile de repérer mes erreurs.

    l'envoi ne prend en compte que 4 à 60000 caractères je tente un envoi en deux fois.

    Merci à tous.

    PREMIERE PARTIE

    Option

     

    Explicit On

    Imports

     

    System.IO

    Public

     

    Class Form1

     

    Const Pi = 3.141592654

     

    Const F = 0.017453293 'conversion en degrs

     

    'Dim Pencolor As New System.Drawing.Pen(System.Drawing.Color.Red)

     

    Dim d, z, co, co1, u, b, l As Double

     

     

    Private Sub PictureBox1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs)

     

    End Sub

     

     

     

    Private Sub ang_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)

     

    ' If ang.Text = 0 Then ang.Text = 0.0001

     

    'If ang.Text >= 90 Then ang.Text = ("impossible")

     

    'Dim q As Double = ang.Text

     

    End Sub

     

    Private Sub h_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)

     

    End Sub

     

    Private Sub ep_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ep.TextChanged

     

    Dim b As Double = ep.Text

     

    End Sub

     

    Private Sub di_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles di.TextChanged

     

    Dim u As Double = di.Text

     

    End Sub

     

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

     

     

    Dim result As String = "" 'calcul result

     

    Dim Adegrs As Double = ang.Text * F

     

    Dim b As Double = ep.Text

     

    Dim u As Double = di.Text

     

    Dim N As Integer = 12

     

    Dim Ryy(N) As Double

     

    Dim Rxx(N) As Double

     

    Dim hh As Double = h.Text

     

    For I As Integer = 0 To N

    d = (((u + b) / 2) * (Math.Cos(360 / N * I * F)))

    'calcul diagonale intermdiaire(u+b=diamtre moyen)

    z = d * (Math.Tan(Adegrs))

    'calcul gnratrice partir de l'axe

    Ryy(I) = hh + z

    ' valeur de la gnratrice sur les Y

    Rxx(I) = (u + b) * Pi / N * I

    'diamtre moyen*pi sur les X

     

    Next

     

    For I As Integer = 0 To N

    result = result + Format(I,

    "00") + " " + Format(Rxx(I), " 000000.00") + " " + Format(Ryy(I), " ######.00" + Chr(13) + Chr(10)) 'en absisses valeurs entre gnratrices jusqu' Pi*Dmoyen

     

    Next

    TextBox1.Text = result

     

    Dim result1 As String = ""

     

    Dim l As Single

    l = (b + u) * Pi

    result1 = result1 + Format(l,

    "######.#") + Chr(13) + Chr(10)

    TextBox2.Text = l

     

    End Sub

     

     

    Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged

     

    'Dim g As System.Drawing.Graphics ' mthode

     

    Dim gg As Graphics = Me.CreateGraphics

     

    Dim Rect As New Rectangle(315, 230, 675, 350)

    gg.DrawRectangle(Pens.Black, Rect)

     

    Dim g1 As Graphics = Me.CreateGraphics

     

    Dim Pencolor As New System.Drawing.Pen(System.Drawing.Color.Blue)

    g1.DrawLine(Pencolor, 335, 400, 970, 400)

    'trace ligne d'essai

     

    Dim g2 As Graphics = Me.CreateGraphics

     

    Dim Pencolorx As New System.Drawing.Pen(System.Drawing.Color.Red)

    g2.DrawLine(Pencolorx, 325, 545, 975, 545)

    'trace l'axe des absisses rouge

     

    Dim g3 As Graphics = Me.CreateGraphics

     

    Dim Pencolorxs As New System.Drawing.Pen(System.Drawing.Color.Red)

    g3.DrawLine(Pencolorxs, 970, 540, 975, 545)

    'trace flche des absisses rouge

     

    Dim g4 As Graphics = Me.CreateGraphics

     

    Dim Pencolorxi As New System.Drawing.Pen(System.Drawing.Color.Red)

    g4.DrawLine(Pencolorxi, 970, 550, 975, 545)

    'trace flche des absisses rouge

     

    Dim g5 As Graphics = Me.CreateGraphics

     

    Dim Pencolors As New System.Drawing.Pen(System.Drawing.Color.Red)

    g5.DrawLine(Pencolors, 335, 240, 335, 557)

    'trace l'axe des ordonnes en rouge

     

    Dim g6 As Graphics = Me.CreateGraphics

     

    Dim Pencoloro As New System.Drawing.Pen(System.Drawing.Color.Red)

    g6.DrawLine(Pencoloro, 335, 240, 330, 245)

    'trace l'axe des ordonnes en rouge

     

    Dim g7 As Graphics = Me.CreateGraphics

     

    Dim Pencolorog As New System.Drawing.Pen(System.Drawing.Color.Red)

    g7.DrawLine(Pencolorog, 335, 240, 340, 245)

    'trace l'axe des ordonnes en rouge

     

    Dim g8 As Graphics = Me.CreateGraphics

     

    Dim Pencoloroo As New System.Drawing.Pen(System.Drawing.Color.Red)

    g8.DrawLine(Pencoloroo, 335, 450, 835, 300)

    'trace ligne d'essai en rouge

    Label8.Text =

    "0 1 2 3 4 5 6 7 8 9 10 11 12"

     

    End Sub             

      TOUT FONCTIONNE BIEN JUSQU'ICI Après c'est la panique            

     

    jeudi 13 mai 2010 13:43
  •  

    merci de me consacrer du temps , j'essaie la méthode d'Alex que je remercie et la tienne, mais je suis toujours aussi nul .

    je joins le programme complet pour le tracé d'un cylindre coupé par un plan.La partie calcul s'inscrit convenablement à l'écran, ainsi qu'un rectangle et les axes X et Y du tracé de la courbe, mais impossible d'arriver à tracer la courbe(sinusoîde) trop de choses me bloquent.

    ang.text se compile bien dans la première partie, mais ne se compile plus pour le même calcul que j'utilise pour tracer la courbe (text,n'est pas un membre double) je n'arrive pas à traduire.

    avec l'ensemble du programme peut être qu'il sera plus facile de repérer mes erreurs.

    l'envoi ne prend en compte que 4 à 60000 caractères je tente un envoi en deux fois.

    Merci à tous.

    DEUXIEME PARTIE(SUITE)

     

     

     

     

    End Sub

     

     

    Dim r As Long

     

    Dim ar As Double ' angle en radians

     

    Dim sinus As Double

     

    Dim cosinus As Double

     

    'Dim x As Long

     

    Dim y As Long

     

    Dim ox As Long

     

    Dim oy As Long

     

    ''Dim q = CType(T(0), Single)

     

    ' q = Single.Parse(T(0), System.Globalization.CultureInfo.InvariantCulture)

     

    Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint

     

    'trac de la courbe

     

    Dim g As System.Drawing.Graphics ' mthode

     

    Dim c As New Pen(Color.FromArgb(1, 2, 3), 2) ' couleur rgb 2) = taille trait

     

    Dim xy As PointF() = New PointF(360) {} ' nombre degrs boucle : matrice v(x, y)

     

    Dim d As Double

     

    'Dim q As Double

     

    'q = CDbl(ang.Text)

     

    ' Sinon, j 'aurais mis en plus dtaill moi, et tout en double, genre

     

    Dim Adegres As Double = 0

     

    Dim ang As Double = 0

     

    'Dim f As Double

    ang =

    CDbl(ang.Text)

    Adegres = ang * F

     

    Dim Adegrs As Single = (ang.Text) * F

     

    Dim N As Long = 12

     

    Dim X As Long

     

    Dim Rx As Long

     

    Dim x1 As Long

     

    Dim x2 As Long

     

    Dim y1 As Long

     

    Dim y2 As Long

    g =

    Me.CreateGraphics()

     

    For k = 0 To 360 ' cercle

    ar = k * 3.14 / 180

    cosinus = Math.Cos(ar)

    X = r * cosinus + ox

    xy(k).X = X

    sinus = Math.Sin(ar)

    y = oy - r * sinus

    xy(k).Y = y

     

    Next k

    g.DrawLines(c, xy)

    ' imprime cran matrice

     

    For courbe = 0 To 12 Step 0.01

    d = u + b / 2 * Math.Cos(360) / 12 * courbe

    'calcul diagonale intermdiaire(u+b=diamtre moyen)

    z = d * Math.Tan(Adegrs)

    'calcul gnratrice partir de l'axe

    Rx = u + b * Pi / 12 * courbe

     

    Dim coy As Single = 255 / z 'coef y

     

    Dim cox As Single = 555 / Rx 'coef x

    z = z * coy

    ' valeur de la variation gnratrice sur les Y

    Rx = Rx * cox

    ' valeur sur les X

    x1 = 335 + Rx

    x2 = 335 + Rx

    y1 = 240 - z

    y2 = 240 - z + 1

     

    'g.DrawLines(c, xy) ' imprime cran matrice

     

    Dim Pen As New System.Drawing.Pen(System.Drawing.Color.Red)

    g.DrawLine(Pen, x1, y1, x2, y2)

    'trace la courbe

     

    Dim XX As Long

     

    Dim ZZ As Long

     

    Dim XXX As Long

     

    Dim ZZZ As Long

    XX = Rx

    ZZ = z

    XXX = X - XX

    ZZZ = z - ZZ

     

    Next courbe

     

    'Trac des gnratrices

     

    For II = 0 To 12

    d = u + b / 2 * Math.Cos(360) / 12 * II

    'calcul diagonale intermdiaire(u+b=diamtre moyen)

    z = d * Math.Tan(Adegrs)

    'calcul gnratrice partir de l'axe

    Rx = u + b * Pi / 12 * II

    ' valeur sur les X

     

    Dim coy As Single = 255 / z 'coef y

     

    Dim cox As Single = 555 / Rx 'coef x

    z = z * coy

    Rx = Rx * cox

    ' valeur de la variation gnratrice sur les Y

     

    Dim XX As Long

     

    Dim ZZ As Long

     

    Dim XXX As Long

     

    Dim ZZZ As Long

    XX = Rx

    ZZ = z

    XXX = Rx - XX

    ZZZ = z - ZZ

    x1 = 335 + Rx + XXX

    x2 = 335 + Rx + ZZZ + ZZZ

    y1 = 545 - z + ZZZ

    y2 = 240

     

    Dim Pen As New System.Drawing.Pen(System.Drawing.Color.Blue)

    g.DrawLine(Pen, x1, y1, x2, y2)

    'trace gnratrices

     

    Next II

    c.Dispose()

    g.Dispose()

     

    End Sub

    End

     

    Class

    jeudi 13 mai 2010 13:50
  • La traduction en mettant tout en double semble "passer" mais ma courbe ne se trace pas j'ai modifié aussi la matrice avec mes calculs
    dimanche 16 mai 2010 07:10
  • Bonjour,

    Je ne suis pas assez bon en math pour suivre, désolé, tu peux t'adresser à des personnes plus pointues en ces domaines...

    Par contre voici pour les courbes, mais en VB6, j'ai quelque chose, si j'amais ça peut te servir :

    ' LISSAGE DES COURBES (Lissage de Malgrange)
    i=0
    For j = valeur To (valeur + x) Step 0.01
     posit = Hauteur - (Hauteur / 2) * (Sin(2 * 3.141592654 * j / cycle) + 1) 
     ' milieu -> haut
    'OU
     posit = Hauteur / 2 * (Sin(2 * 3.141592654 * j / cycle) + 1) 
     ' milieu -> bas
     i = i + 1
     PSet (i, posit), QBColor(couleur)
    Next j
    
    Commentaires:
    ("J" dans la boucle) est la valeur à afficher
    (X) est le nombre d'affichages
    (Hauteur) est la hauteur du graphique
    (Hauteur - (Hauteur / 2)) donne un départ du milieu vers le haut
    (Hauteur / 2) donne un départ du milieu vers le bas
    ("J" dans la formuler) + ou - donne le point de départ en hauteur
    (Cycle) donne la longueur du cycle à répéter
    Pset(L, C), couleur trace au pixel

    Ce qui donne ceci :

    http://irolog.free.fr/irolog_vente/biorythmes_v/index.htm

    Cordialement.

     


    Joe ___ Romans et Logiciels ___ http://irolog.free.fr
    • Marqué comme réponse prof1 dimanche 16 mai 2010 17:51
    dimanche 16 mai 2010 10:57
  • Hello,

    Pour ton code, pour ne pas qu'il soit étalé comme ça ici, tu as la balise la plus à droite qui te permet de mieux présenter tout ça ("insérer le bloc de code"), sinon, à mon sens, ce serait d'y aller doucement, tu prends ma base qui fonctionne, tu y rajoutes un élément à toi, tu vérifies, et ne valides que si ça fonctionne etc...

    Cordialement.


    Joe ___ Romans et Logiciels ___ http://irolog.free.fr
    dimanche 16 mai 2010 11:00
  • HEJO,

    Je te remercie vivement pour tes conseils, ne te minimise pas, ce n'est pas une question de" fort en maths". Tu es sans doute aussi fort que moi, mais je connais encore trop mal les syntaxes de VB j'ai fait fonctionner ta courbe c'est très bien. La miene ne veut pas tourner .Rien ne me presse mais j'y arriverai. Il y a longtemps que je n'ai pas programmé et c'était en Powerbasic. Pour sortir une courbe du for i to next c'était tout simple avec Line(x1,y1)-(x2,y2).quand j'aurai acquis la maitrise de la syntaxe j'ai d'autres programmes à reécrire qui utilisent  For i to next.

    Si tu as une idée elle sera la bien venue.

    Toute réponse me sera utile.

    dimanche 16 mai 2010 17:49