Python - grafika - cykloidy – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Python - grafika - cykloidy – Python – Fórum – Programujte.comPython - grafika - cykloidy – Python – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
allicce
~ Anonymní uživatel
10 příspěvků
17. 1. 2014   #1
-
0
-

Ahojte potrebovala by som pomôcť s grafikou v pythone keď napíšem daný kód:

import Image
import math


def demo1():
    im = Image.new("RGB", (20,20), (255,255,255))

    r = 5
    t = 360

    for i in range(t):    
        x = int(r*(t - math.sin(math.radians(t))))
        y = int(r*(1 - math.cos(math.radians(t))))

    im.putpixel((x,y), (100,255,105))

    im.show()
    im.save("demo.png")


demo1()

Vypíše to nasledujúcu hlášku:

Traceback (most recent call last):
  File "C:/Python27/cykloidy.py", line 16, in <module>
    demo1()
  File "C:/Python27/cykloidy.py", line 12, in demo1
    im.putpixel((x,y), (100,255,105))
  File "C:\Python27\lib\site-packages\PIL\Image.py", line 1267, in putpixel
    return self.im.putpixel(xy, value)
IndexError: image index out of range

Za radu vopred ďakujem.

Nahlásit jako SPAM
IP: 89.102.9.–
Reklama
Reklama
Wrunx
~ Anonymní uživatel
34 příspěvků
17. 1. 2014   #2
-
0
-

Nemá být místo

x = int(r*(t - math.sin(math.radians(t))))

spíš

x = int(r*(1 - math.sin(math.radians(t))))
Nahlásit jako SPAM
IP: 188.120.195.–
allicce
~ Anonymní uživatel
10 příspěvků
17. 1. 2014   #3
-
0
-

v materialoch z čoho som vychádzala bolo parametrické vyjadrenie cykloidy takto 

Nahlásit jako SPAM
IP: 89.102.9.–
sleepy
~ Anonymní uživatel
422 příspěvků
18. 1. 2014   #4
-
0
-

 Vyhod komenty a malo by to bezat. Za prve si mala im.putpixel((x,y),(farba)) mimo for cyklu a za druhe. tvoj obrazok nebol dostatocne velky. Preto ten IndexError. To si treba vzdy odhadnut. Napr. teraz cykloida moze max dosiahnut 6.28 * 50 px < 400 px v x a v y suradnici mas <0,2> * 50 < 200px. Este jedna vec cykloida bude opacne obratena. Lebo v pythone tak ako v inych jazykoch sa zacina pocitat od laveho horneho rohu.

import Image
import math

def demo1():
	im = Image.new('RGB', (400, 200)) // Toto musi byt vacsie ako tam, 
					// kde bude cykoloida
	pixels = im.load() // toto vraj urychluje
	r = 50
	max_angle = 360
	for t in range(max_angle):
		x = int(r*(math.radins(t) - math.sin(math.radians(t)))
		y = int(r*(1-math.cos(math.radians(t)))
		// tu vykreslujes pixely do obrazku, to musi byt v cykle
		// tak ako x a y
		pixels[x,y]=(100,255,105) // alebo im.putpixel((x,y), (100,255,105))
	im.show()
	im.save('demo.png')

demo1()
Nahlásit jako SPAM
IP: 147.175.177.–
allicce
~ Anonymní uživatel
10 příspěvků
18. 1. 2014   #5
-
0
-

ahoj aj po prepisaní kódu mi vyskakuje tá istá hláška

Nahlásit jako SPAM
IP: 89.102.9.–
sleepy
~ Anonymní uživatel
422 příspěvků
18. 1. 2014   #6
-
0
-

Tak este raz, mas to napisane konkretne takto:

import Image
import math

def demo():
	im = Image.new('RGB', (400,200), (255,255,255))
	pixels = im.load()
	r = 50
	max_angle = 360
	for t in range(max_angle):
		x = int(r*(math.radians(t) - math.sin(math.radians(t))))
		y = int(r*(1 - math.cos(math.radians(t))))
		pixels[x,y] = (100,255,105)
	im.show()
	im.save('demo1.png')

demo()

Tu je obrazok, ktory to vytvori:

Připojen obrázek.

Nahlásit jako SPAM
IP: 147.175.177.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 8 hostů

Podobná vlákna

Grafika v python — založil Le_Ze

Python-zavirani oken v python shell — založil Daniel zita

2D grafika — založil Dušan

Grafika — založil Michal115

Grafika — založil Gadael

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý