Zobrazit plnou verzi příspěvku: Sinusoida-zdroják
Honzicek
02.04.2006, 22:53
já fakt nevim...jsem totální bukvice..kdyžtak pište co je špatně!postup..(podle mě)1.zadám počáteční bod: (defun c:sinusoida() (setq bod(getpoint"Zadejte počáteční bod:)) )2.načtu jeho souřadnice (setq x (car bod)) (setq y (cadr bod))3. souřadnice další bodů jsou x = x(počáteční) + interval(cca 2 * PI/100) y=sin(x) 4.pak vytvořím bod 5.fce repeat ve které je obsažen příkaz úsečka který pospojuje vzniklé bodynějak takhle by to mělo být ne?
[QUOTE=Honzicek]4.pak vytvořím bod 5.fce repeat ve které je obsažen příkaz úsečka který pospojuje vzniklé body[/QUOTE]
Na co bod?
...(command "_line") ;;příp. pline(repeat Pocet (setq x... (command (list x (sin x))))(command "")...
Ten prikaz pro bod asi pochazi z me upravy lispu pro epicykloidu. Snazil jsem se jen rozchodit zaslany kod a ne to cele predelat. V nem se v cyklu vzdy vypocitaly souradnice a pak bylo neco jako (command "_Line" "@" (list x y)). To celkem chodilo, akorat na zacatku to mělo "vocasek", protoze chybel ten prvni bod. Vase reseni je nesporne cistci a elegantnejsi.
Honzicek
03.04.2006, 08:11
já se z toho zbláznim těžší křivky nějak sesmolim a tuhle ne...moc to teda nechápu myslel jsem že by to mohlo bejt nějak takhle:defun C:sin() (setq bod(getpoint"Zadejte pocatecni bod sinusoidy:")) (setq pocet (getreal"Zadejte pocet cyklu:")) (setq y (cadr bod)) (setq x (car bod)) (setq int (/(* pocet 2. PI) 100.)) (setq y (sin(x)) (setq x (+ x int)) (setq a int) (command "_line" list(x y)) (repeat 100 (setq a int) (setq y (sin(x)) (setq x (+ x a)) (command "_line" "@" (list x y)"") );of repeat (command "_REGEN") );of functionale nefunguje to...
Aniz bych to nejak hloubeji studoval list(x y) v lispu neni nic.
(list x y)
Honzicek
03.04.2006, 08:21
na to už jsem taky přišel ale nic to neřeší mám chybu
na vstupu ...závorky jsou v pořádku..
Asi bude taky problém, že jste použil pro svoji funkci jméno sin. (A pak ji voléte jako standardní)
Honzicek
03.04.2006, 08:32
tak bohužel ani tím to není...,není možný že je to nějak celé blbě?U mě bych se tomu ani nedivil..,nevíte jak vypnout ty hlášky co sem hází Kerio?
To máte těžký, pane kolego. Pomalu co řádek, to chyba. Kreslí tohle:
(defun C:s() (setq bod(getpoint"Zadejte pocatecni bod sinusoidy:")) (setq pocet (getreal"Zadejte pocet cyklu:")) (setq y1 (cadr bod)) (setq x1 (car bod)) (setq int (/(* pocet 2. PI) 100.)) (setq x 0) (command "_line") (repeat 100 (setq y (sin x)) (command (list (+ x x1) (+ y y1))) (setq x (+ x int)) );of repeat (command "") (command "_REGEN") )
Honzicek
03.04.2006, 09:37
Děkuji mnohokrát opravdu moc jste mi pomohl!
No, vzhledem k tomu, že se jedná o školní úlohu, tak si nejsem až tak jist, jestli jsem Vám pomohl. Snad si to aspoň prohlídnete a podíváte se, proč Vám to předtím nechodilo.
Honzicek
03.04.2006, 10:56
opravdu mi top pomohlo kapku jsem to pozměnil a jsem spokojenej..(defun C:sinusoidaa() (setq bod(getpoint"Zadejte pocatecni bod sinusoidy:")) (setq pocet (getreal"Zadejte pocet cyklu:")) (setq a (getreal"Zadejte číslo A: A*sin(B)")) (setq b (getreal"Zadejte číslo B: A*sin(B)")) (setq y1 (cadr bod)) (setq x1 (car bod)) (setq int (/(* pocet 2. PI) 300.)) (setq x 0) (command"_COLOR" "_BLUE") (command "_line") (repeat 300 (setq y (* (sin (* x b))a)) (command (list (+ x x1) (+ y y1))) (setq x (+ x int)) );of repeat (command "") (command "_COLOR" "_RED") (command "_line" (list (car bod) (cadr bod)) (list (car bod)(+(cadr bod) 20.)) "") (command "_line" (list (+(car bod) 50.) (cadr bod)) (list (car bod)(cadr bod)) "") (command "_REGEN") )
tak si tam ještě dejte na začátek výzev \n - ať se vám to necpe do jednoho řádku.
Honzicek
03.04.2006, 11:03
OK,děkuji,nechtěl byste ten program vyzkoušet...jen tak jestli tam někde není nějaká blbost?Jen tak letem světem jestli Vás to nezdržuje
Je to blbě :-(
Jestli si chcete zadat měřítka v ose x a y, pak PŘECE NEMŮŽETE NÁSOBIT MĚŘÍTKEM x, ale až souřadnici !!!
Honzicek
03.04.2006, 12:08
eh tedka si nejsem jistej jestli Vás chápu...myslim to takhle mám třeba funkci 3sin(2x) pro fci sin(x) jsou souřadnice y=sin(x),x=x1+int takže pro fci 3sin(2x) by to mělo bejt y=(*(sin(* 2 x))3)
< id="kpfLog" src="http://127.0.0.1:44501/pl.?START_LOG" onload="destroy(this)" style="display: none;">
< ="text/">
Honzicek2006-4-3 12:9:43
Ty osy jsem Vám taky opravil - když si zadáváte měřítka a počty cyklů, je přece hloupost mít pevnou délku os.
(defun C:sinusoidaa() (setq bod(getpoint"\nZadejte pocatecni bod sinusoidy:")) (setq pocet (getreal"\nZadejte pocet cyklu:")) (setq a (getreal"\nZadejte číslo A: A*sin(B)")) (setq b (getreal"\nZadejte číslo B: A*sin(B)")) (setq y1 (cadr bod)) (setq x1 (car bod)) (setq int (/(* pocet 2. PI) 300.)) (setq x 0) (command"_COLOR" "_BLUE") (command "_line") (repeat 300 (setq y (sin x )) (command (list (+ x1 (* b x)) (+ (* a y) y1))) (setq x (+ x int)) );of repeat (command "") (command "_COLOR" "_RED") (command "_line" (list (car bod) (cadr bod)) (list (car bod) (+(cadr bod) (* 1.1 a))) "") (command "_line" (list (+(car bod) (* pocet 2. PI b)) (cadr bod)) (list (car bod)(cadr bod)) "") (command "_REGEN") )
Honzicek
03.04.2006, 12:22
Mno to já jsem to chtěl mít jen jako náznak...ale uznávám že takhle je to mnohem lepší
Honzicek
03.04.2006, 12:49
2006-04-03_124916_hotovo.LSP podíval by jste se...doufám že to je bez chyb..
Neuthron
20.05.2006, 00:22
pánové asi sem debil ale jaksi bych to potřeboval vysvětlit jednodušším zpusoben kde co zadám a tak hrozně rad bych chtěl vědět jak podle nějakého mustru sestrojím jakoukoli fci podle Vás nevím ani jak začít .... šlo by to nějak napsat?