Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 10 odgovora
  • 7.786 pregleda

Najnovija ↓

Kako nacrtati sinusoidu 13.03.2010. u 18:23 · pre 202 meseca #1
Imam problem sa crtanjem sinusoide, cini mi se da je code ok ali mi je slichica "zguzvana"

Code:

pic1.ScaleMode = vbUser

pic1.Scale (0, 50)-(360, -50)

pic1.Line (0, 0)-(0, 0)


For x = 0 To 360 Step 0.05
y = Sin(x)
pic1.Line -Step(x, y), vbBlue

Debug.Print x; y

Next x


Potpis
http://www.youtube.com/watch?v=kyE8ye8XZ60
Re: Kako nacrtati sinusoidu 13.03.2010. u 19:02 · pre 202 meseca #2
Ne mogu uopste da ukapiram u cemu je problem, npr

Code:

Dim x As Double
Dim y As Double

pic2.ScaleMode = vbUser

pic2.Scale (0, 100)-(10, 0)

pic2.Line (0, 0)-(0, 0)

For x = 0 To 10 Step 1
y = x * x

pic2.Line -Step(x, y), vbRed

Next x

pic2.Line (0, 0)-(10, 100), vbBlue

SavePicture pic2.Image, "C:\diff.bmp"


i dobijem




jasno je da bi se crvena kriva i plava linije trebale sresti u gornjoj tacki 10,100 <x=10 -> y=x*x=10*10=100



Potpis
http://www.youtube.com/watch?v=kyE8ye8XZ60
Re: Kako nacrtati sinusoidu 15.03.2010. u 15:04 · pre 202 meseca #3
Koliko se secam sin(x) funkcija nije u stepenima

Trebalo bi da posluzi

PI=3.14
sin(x*PI/180)

PI je u radijanima i jednak je 180 stepeni, tj 2PI je ceo krug.
Mislim da ima i vec definisana konstanta PI (vidi u helpu)
Re: Kako nacrtati sinusoidu 18.03.2010. u 09:43 · pre 202 meseca #6
Kad se već niko ne javlja.....

Pošto dugo nisam radio ove stvari sa iscrtavanjima u VB6, jedino ti mogu predložiti da ako si malo vičan programiranju sve to odradiš u Matlabu, sa GUI interfejsom,jednostavno, "5 minuta posla...." (ako praviš program za sopstvenu upotrebu, koji verovatno nije složen?).

Onda možes iscrtavati šta god hoćeš i kako god hoćeš.
Re: Kako nacrtati sinusoidu 18.03.2010. u 11:13 · pre 202 meseca #7
evo ga kod u vb.net-u koji radi. Nadam se da ti neće biti problem da ga pretvoriš u VB6
Code:

 Private Sub Form1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Click
        Dim g As Graphics = Me.CreateGraphics
        For x As Integer = 0 To 460
            Dim p As Point
            p.X = x + 100
            p.Y = CInt(Math.Sin(x * Math.PI / 180) * 100) + 100

            Dim p1 As Point
            p1.X = p.X + 1
            p1.Y = p.Y
            g.DrawLine(Pens.Black, p, p1)
        Next
    End Sub
Potpis
Naučio sam...
Da je važnije biti ljubazan nego biti u pravu
Re: Kako nacrtati sinusoidu 18.03.2010. u 15:04 · pre 202 meseca #8

Da nije mozda ScaleWidth i ScaleHight, valjda trebaju da budu isti.
Nisam skoro radio u VB, pa mozda lupam gluposti
Re: Kako nacrtati sinusoidu 18.03.2010. u 18:04 · pre 202 meseca #9
@VBscout


Nije nikakav prog vec neka matematika. Prvo sto sam hteo da uradim je da nacrtam u Excelu, but guess what? Excel ne moze da crta funkcije sa opseg vec moraju da se izracunaju tacke tj parovi x,y i onda on od toga generise funkciju..prilicno bez vez. Sledece po redu cega sam se dovatio je VB i relativno lako sam zbudzio proceduru ali nije ispala kako treba :)
Sa Matlabom se nisam nikada druzio, sa Mathematicom jesam davno, vise se i ne secam sintakse :)

@vujkev

prevedeno u VB je

Code:

Private Type Point
x As Integer
y As Integer
End Type


Private Sub Command1_Click()


Dim x As Integer
Dim p0 As Point
Dim p1 As Point
     
        
        pic1.Scale (100, 560)-(560, -560)
        
                
        For x = 0 To 460
            p0.x = x + 100
            p0.y = CInt(Sin(x * 3.14 / 180) * 100) + 100

            p1.x = p0.x + 1
            p1.y = p0.y
            
                      
            pic1.Line (p0.x, p0.y)-(p1.x, p1.y), vbRed
                      
        Next
        
        
End Sub




Ako sam dobro razumeo ti interpoliras f-ciju kao mnogo "malih" horizontalnih linija (0,0 - 1,0 na scali od 560x100) . A ne "dijagonalno" duz funkcije?
Potpis
http://www.youtube.com/watch?v=kyE8ye8XZ60
Re: Kako nacrtati sinusoidu 18.03.2010. u 18:51 · pre 202 meseca #10
u .net-u ne znam kako da nacrtam jednu tačku i ovo mi je bilo najlakše i najbrže da napravim :) Naravno ti napravi kako god hoćeš
Potpis
Naučio sam...
Da je važnije biti ljubazan nego biti u pravu
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme