Forum » Programiranje » [python] Risanje Pomoč
[python] Risanje Pomoč
d_DJ ::
Pozdravljeni,
Že dva dni se ubadam s tole nalogo:
V pythonu moram narisati krivulju s pomočjo rekurzije, ki naj bi zgledala nekako takole:
Prva slika je reda 1, druga reda 2 itd...
vse kar mi ratata narisati je drugi red:
Moja ideja je, če je stopnja soda naj nariše pač te poševne črte če je liha naj bi pa narisal na najdalšo črto pol krog. Sprogramirat pa mi to nikakor ne rata.
Če ima kdo kakšen nasvet idejo bi bil zelo hvaležen.
Hvala
Že dva dni se ubadam s tole nalogo:
V pythonu moram narisati krivulju s pomočjo rekurzije, ki naj bi zgledala nekako takole:
Prva slika je reda 1, druga reda 2 itd...
vse kar mi ratata narisati je drugi red:
import turtle def krivulja_a(red, dolžina=200): if red == 2: turtle.forward(dolžina/3) turtle.left(45) turtle.forward(dolžina/3) turtle.right(90) if red == 1: turtle.forward(dolžina) else: krivulja_a(red-1, dolžina/3) turtle.forward(dolžina/3) turtle.left(90) krivulja_a(red-1, dolžina/3) turtle.right(45) krivulja_a(red-1, dolžina/3)
Moja ideja je, če je stopnja soda naj nariše pač te poševne črte če je liha naj bi pa narisal na najdalšo črto pol krog. Sprogramirat pa mi to nikakor ne rata.
Če ima kdo kakšen nasvet idejo bi bil zelo hvaležen.
Hvala
Math Freak ::
Jaz bi se verjetno lotil naloge približno tako (ni rečeno, da je prav):
Prve tri like bi definiral, ker so unikatni, ostale pa bi sestavil s pomočjo lika 2 in 3. Nisem siguren, da je to pravi način razmišljanja, tako da vzami to z rezervo.
import turtle def krivulja(level,dolžina = 200): if level == 1: turtle.forward(dolžina) elif level == 2: turtle.forward(dolžina/3) turtle.left(45) turtle.forward((3/2)*dolžina/3) turtle.right(90) turtle.forward(3*dolžina/3) turtle.right(-90) turtle.forward((3/2)*dolžina/3) turtle.right(45) turtle.forward(dolžina/3) elif level == 3: turtle.forward(dolžina/3) turtle.left(45) turtle.forward((3/2)*dolžina/3) turtle.right(90) turtle.forward(dolžina/3) turtle.right(90) turtle.circle((1/2)*dolžina/3, extent=-180, steps=None) turtle.right(90) turtle.forward(dolžina/3) turtle.right(-90) turtle.forward((3/2)*dolžina/3) turtle.right(45) turtle.forward(dolžina/3) else: turtle.forward(dolžina/3) turtle.left(45) turtle.forward((3/2)*dolžina/3) turtle.right(90) " -> rekurzija" turtle.right(-90) turtle.forward((3/2)*dolžina/3) turtle.right(45) turtle.forward(dolžina/3)
Prve tri like bi definiral, ker so unikatni, ostale pa bi sestavil s pomočjo lika 2 in 3. Nisem siguren, da je to pravi način razmišljanja, tako da vzami to z rezervo.
d_DJ ::
Kako pa bi potem klical lik 2 in lik 3. Če bi dal recimo level 4. Men je vsakič nekaj preveč narisal.
Math Freak ::
Sm mislu neki na to foro:
Če se spomnim kaj pametnejšega ti sporočim. Kaj so pa za ene dolžine črt? Ti si jih razdelil enakomerno na tri dele čeprav s slike ni videt, da bi bilo to res.
import turtle def krivulja(level,dolžina = 200): if level == 1: turtle.forward(dolžina) elif level == 2: turtle.forward(dolžina/3) turtle.left(45) turtle.forward((3/2)*dolžina/3) turtle.right(90) turtle.forward(3*dolžina/3) turtle.right(-90) turtle.forward((3/2)*dolžina/3) turtle.right(45) turtle.forward(dolžina/3) elif level == 3: turtle.forward(dolžina/3) turtle.left(45) turtle.forward((3/2)*dolžina/3) turtle.right(90) turtle.forward(dolžina/3) turtle.right(90) turtle.circle((1/2)*dolžina/3, extent=-180, steps=None) turtle.right(90) turtle.forward(dolžina/3) turtle.right(-90) turtle.forward((3/2)*dolžina/3) turtle.right(45) turtle.forward(dolžina/3) else: turtle.forward(dolžina/3) turtle.left(45) turtle.forward((3/2)*dolžina/3) turtle.right(90) krivulja(level-2,dolžina/(3)) turtle.right(90) turtle.circle((1/2)*dolžina/3, extent=-180, steps=None) turtle.right(90) krivulja(level-2,dolžina/(3)) turtle.right(-90) turtle.forward((3/2)*dolžina/3) turtle.right(45) turtle.forward(dolžina/3)
Če se spomnim kaj pametnejšega ti sporočim. Kaj so pa za ene dolžine črt? Ti si jih razdelil enakomerno na tri dele čeprav s slike ni videt, da bi bilo to res.
d_DJ ::
Uf tenx za tole...
ja pri stranicah se sploh nisem ubadu... drgač je če pogledaš sliko pri level dva vodoravne je vsaka 1/6, poševne so pa pomnožene za koren 2... Ampak to bom že sam popravu.
Hvala še enkrat!!
ja pri stranicah se sploh nisem ubadu... drgač je če pogledaš sliko pri level dva vodoravne je vsaka 1/6, poševne so pa pomnožene za koren 2... Ampak to bom že sam popravu.
Hvala še enkrat!!
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Poliranje avtomobilaOddelek: Na cesti | 8161 (967) | RejZoR |
» | Tekkit classic Coumputercraft ERROROddelek: Pomoč in nasveti | 586 (496) | [D]emon |
» | Python, prosim za pomoc pri programiranju (strani: 1 2 3 )Oddelek: Programiranje | 14034 (10136) | lenika |
» | python pomočOddelek: Programiranje | 1799 (1619) | jype |
» | Želvica Logo [Java]Oddelek: Programiranje | 1839 (1334) | medobear |