Spojení několika bodů čarou - Small Basic Vyřešeno

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

PetrJan
nováček
Příspěvky: 14
Registrován: květen 12
Pohlaví: Nespecifikováno
Stav:
Offline

Spojení několika bodů čarou - Small Basic

Příspěvekod PetrJan » 22 kvě 2012 17:28

Potřebuji nareslit zahnutou čáru... Mohl by mi někdo poradit, jak spojit ty body čarou? Díky
Naposledy upravil(a) PetrJan dne 22 kvě 2012 19:21, celkem upraveno 1 x.

Reklama
Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: Spojení několika bodů čarou

Příspěvekod faraon » 22 kvě 2012 17:42

Musíš spočítat jednotlivé body, nebo nepříliš vzdálené body na křivce, a sousední dvojice spojit čarou. Ukázka přímo z příručky: GraphicsWindow.DrawLine(prevX, prevY, x, y)
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

PetrJan
nováček
Příspěvky: 14
Registrován: květen 12
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Spojení několika bodů čarou

Příspěvekod PetrJan » 22 kvě 2012 18:43

Díky, tak už mi to kreslí parabolu... Ale jak odeberu tu první přímou čáru?

Kód: Vybrat vše

  x[1]=-10
  x[2]=-9
  x[3]=-8
  x[4]=-7
  x[5]=-6
  x[6]=-5
  x[7]=-4
  x[8]=-3
  x[9]=-3
  x[10]=-1
  x[11]=0
  x[12]=1
  x[13]=2
  x[14]=3
  x[15]=4
  x[16]=5
  x[17]=6
  x[18]=7
  x[19]=8
  x[20]=9
  x[21]=10
  For i = 1 To 21
    y[i] = x[i]*x[i]
  EndFor

For i = 1 To 21
  GraphicsWindow.DrawLine(((x[i]+52)*5), (y[i]*5), ((prewX+52)*5), (prewY*5))
    prewX = x[i]
    prewY = y[i]
EndFor

Díky

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Spojení několika bodů čarou

Příspěvekod CZechBoY » 22 kvě 2012 19:18

DrawCurve?

v čem to programuješ? kreslíš? maluješ? řežeš?
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

PetrJan
nováček
Příspěvky: 14
Registrován: květen 12
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Spojení několika bodů čarou

Příspěvekod PetrJan » 22 kvě 2012 19:20

Small Basic...

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: Spojení několika bodů čarou - Small Basic

Příspěvekod faraon » 22 kvě 2012 19:38

Takže už jsi přišel na to jak udělat zvětšení a posunutí ;-)

Já bych zkusil ještě trochu jiné řešení:

Kód: Vybrat vše

meritkoX = 30
meritkoY = 3

FOR i = 1 TO 20
    LINE (x(i)*meritkoX+320, 400-y(i)*meritkoY) - (x(i+1)*meritkoX+320, 400-y(i+1)*meritkoY)
NEXT i


Je to v QBasicu, takže tu mám velikost plochy pouze 640*480, a čemu odpovídají příkazy LINE a NEXT si asi domyslíš, stejně jako to, proč tahle smyčka počítá jen do 20... Zvýraznil jsem ti ty body na křivce:

PetrJan.png
PetrJan.png (10.25 KiB) Zobrazeno 842 x


Hádám že ta první čára vychází z levého horního rohu, tedy souřadnic 0,0. Zapomněl jsi do proměnných prevX a prevY vložit nějakou hodnotu, takže jsou v nich zatím nuly. Kdyby to byl jiný jazyk, třeba C, byl by jejich obsah náhodný, podle toho co na místě kde se v paměti nacházejí bylo při jejím minulém použití!
Mohl bys jim před začátkem smyčky přiřadit hodnoty x(1) a y(1), a smyčku počítat až od 2.
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

PetrJan
nováček
Příspěvky: 14
Registrován: květen 12
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Spojení několika bodů čarou - Small Basic

Příspěvekod PetrJan » 22 kvě 2012 19:53

Jo, na to jsem již přišel...
mám přepsané to Vaše do SB, ale ve SB to začíná na souřadnicích [0;0], takže u mě, když to mám posunuté [260;0] a poté až jede na další souřadnice..
dále mám parabolu vzhůru nohama :( vrchol má nahoře...
to je jedno, s dovolením použiji Vaše ření

dále mám dotaz, kam dát osový kříř

Díky moc

Uživatelský avatar
domitea
Tvůrce článků
Level 4.5
Level 4.5
Příspěvky: 1971
Registrován: červen 09
Bydliště: Královehradecký kraj
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Spojení několika bodů čarou - Small Basic

Příspěvekod domitea » 22 kvě 2012 19:55

Vypočítat souřadnice středu......

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: Spojení několika bodů čarou - Small Basic  Vyřešeno

Příspěvekod faraon » 22 kvě 2012 20:01

To obrácení vzhůru nohama zařídí právě to 400-y(i), tím pádem mám i osu x na souřadnicích (x,400).
Osa y ti stejným způsobem vyjde přesně tam, kam sis posunul nulu na ploše, takže (260,y).
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

PetrJan
nováček
Příspěvky: 14
Registrován: květen 12
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Spojení několika bodů čarou - Small Basic

Příspěvekod PetrJan » 22 kvě 2012 20:19

Jo, díky moc... Použil jsem Vaši metodu a hotovo.

Kód: Vybrat vše

TextWindow.WriteLine("Zadej číslo funkce, které graf chceš zobrazit:")
TextWindow.WriteLine("1 - y = x^2")
TextWindow.WriteLine("2 - y = x+2")
Znovu:
operace = TextWindow.ReadNumber()

If operace = 1 Then
  x[1]=-10
  x[2]=-9
  x[3]=-8
  x[4]=-7
  x[5]=-6
  x[6]=-5
  x[7]=-4
  x[8]=-3
  x[9]=-3
  x[10]=-1
  x[11]=0
  x[12]=1
  x[13]=2
  x[14]=3
  x[15]=4
  x[16]=5
  x[17]=6
  x[18]=7
  x[19]=8
  x[20]=9
  x[21]=10 
  For i = 1 To 21
    y[i] = x[i]*x[i]
  EndFor

FOR i = 1 TO 20
  GraphicsWindow.DrawLine(x[i]*3+260, 300-y[i]*3, x[i+1]*3+260, 300-y[i+1]*3)
EndFor
  GraphicsWindow.DrawLine(260, 10, 260, 510)
  GraphicsWindow.DrawLine(10, 300, 510, 300)

ElseIf operace = 2 Then
  GraphicsWindow.DrawLine(260, 10, 260, 510)
  GraphicsWindow.DrawLine(10, 300, 510, 300)
  x[1]=-10
  x[2]=-9
  x[3]=-8
  x[4]=-7
  x[5]=-6
  x[6]=-5
  x[7]=-4
  x[8]=-3
  x[9]=-3
  x[10]=-1
  x[11]=0
  x[12]=1
  x[13]=2
  x[14]=3
  x[15]=4
  x[16]=5
  x[17]=6
  x[18]=7
  x[19]=8
  x[20]=9
  x[21]=10 
  For i = 1 To 21
    y[i] = x[i]+2
  EndFor
 
FOR i = 1 TO 20
  GraphicsWindow.DrawLine(x[i]*15+200, 300-y[i]*15, x[i+1]*15+200, 300-y[i+1]*15)
EndFor

 
 Else
   TextWindow.WriteLine("Špatně, zadej 1 nebo 2")
   Goto Znovu
EndIf


Ještě jednou díky moc


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Výpadky spojení Wi-Fi Příloha(y)
    od vasekpetr1 » 24 led 2025 15:38 » v Sítě - hardware
    7
    4299
    od vasekpetr1 Zobrazit poslední příspěvek
    03 úno 2025 10:39

Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 3 hosti