Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    vb.net disegnare circonferenza con setpixel

    ciao a tutti e sopratutto a chi se ne intende un pò di matematica.
    vorrei disegnare una semplice circonferenza utilizzando la funzione setpixel ho provato ad effettuare una ricerca ed ho trovato le varie formule ma sono poco azzeccato in mate.

    In un ciclo for inseriso la seguente formula ma non riesco ad ottenere il risultato voluto...

    For X = 1 To 50

    Y = Math.Sqrt((-1 * X) ^ 2 + r ^ 2)

    image.SetPixel(X + 100, Y + 100, Color.FromArgb(0, 0, 0))

    Next

    se qualcuno sa aiutarmi grazie tante
    jabjoint

  2. #2
    Perché vuoi usare SetPixel? Non fai prima ad usare i normali metodi GDI+ dell'oggetto Graphics per disegnare il cerchio?
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    forse si ma era una mia curiosità se non è troppo difficile....
    jabjoint

  4. #4
    L'equazione di una circonferenza generica di centro (0,0) è
    x^2 + y^2 = r^2
    quindi
    y^2 = r^2 - x^2
    quindi
    y = Sqrt(r^2 - x^2)
    perciò in sostanza la tua formula è corretta, ma se vedi come l'abbiamo ricavata capirai subito che di questa radice dobbiamo considerare sia il risultato positivo che quello negativo (ad ogni coordinata x infatti corrispondono due punti simmetrici rispetto all'asse delle ascisse). Perciò:
    codice:
    Dim raggio As Integer, xoffset As Integer, yoffset As Integer
    raggio = 50
    xoffset = 100
    yoffset = 100
    For X = 0 To raggio - 1
        Y = Math.Sqrt(raggio^2 - X^2)
        image.SetPixel(X + xoffset, Y + yoffset, Color.Black)
        image.SetPixel(X + xoffset, -Y + yoffset, Color.Black)
    Next
    .
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Ok sono riuscito, ... io non relazionavo il raggio alla x:
    Con questo codice disegno i 4 archi.

    For X = 0 To raggio-1
    Y = Math.Sqrt(raggio ^ 2 - X ^ 2)
    image.SetPixel(X + xoffset, Y + yoffset, Color.FromArgb(255, 0, 0))
    image.SetPixel(X + xoffset, -Y + yoffset, Color.FromArgb(255, 0, 0))
    image.SetPixel(-X + xoffset, Y + yoffset, Color.FromArgb(255, 0, 0))
    image.SetPixel(-X + xoffset, -Y + yoffset, Color.FromArgb(255, 0, 0))
    Next

    Solo che al centro rimangono vuoti dei puntini.....
    Immagini allegate Immagini allegate
    jabjoint

  6. #6
    ok... ok.. si risolve rifacendo il procedimento con le Y
    jabjoint

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.