Portál AbcLinuxu, 23. července 2025 06:20


Dotaz: Pocitani pomoci goniometrickych funkci

Bundas avatar 11.7.2014 15:32 Bundas | skóre: 14 | Pardubice
Pocitani pomoci goniometrickych funkci
Přečteno: 658×
Odpovědět | Admin

Ahojte.

Pisu aplikaci, ktera bude pomoci g. funkci pocitat. Uzivatel tam treba zada delku jedne strany, rekne kde je pravy uhel a da tam nejakou funkci a rekne, u jakeho uhlu se nachazi a aplikace dopocita vsechny strany a uhly.. Casem to rozsirim o dalsi veci... Ale resim dilema. Az ted me napadlo, ze ta appka musi jit psat i nejak jinak, nez to ted pisu ja :-D

 

Strucne receno, muj program si pomoci milionu if, else if a else overi vsechny podminky (treba co je zadany) a pro kazdou situaci je tam originalne, individualne napsana adekvatni matematicka operace vcetne vystupu. Ale nejde to nejak jinak? Abych tam nemusel mit tisic ifu?

 

klidne prilozim zdrojak

 

predem dekuju za pomoc

Abe the Messiah has come.

Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

11.7.2014 16:32 NN
Rozbalit Rozbalit vše Re: Pocitani pomoci goniometrickych funkci
Odpovědět | | Sbalit | Link | Blokovat | Admin
Napriklad 'case' vetveni? Pouziti cyklu? Priloz ten zdrojak..
Bundas avatar 11.7.2014 16:35 Bundas | skóre: 14 | Pardubice
Rozbalit Rozbalit vše Re: Pocitani pomoci goniometrickych funkci
Příloha:
here you are
Abe the Messiah has come.
=^..^= AmigaPower® avatar 16.7.2014 03:29 =^..^= AmigaPower® | skóre: 30 | blog: BLB | Praha
Rozbalit Rozbalit vše Re: Pocitani pomoci goniometrickych funkci
proč nechceš aby ho všichni viděli? :P
Řešení 1× (=^..^= AmigaPower®)
vlastikroot avatar 16.7.2014 19:59 vlastikroot | skóre: 24 | blog: vlastikovo | Milevsko
Rozbalit Rozbalit vše Re: Pocitani pomoci goniometrickych funkci
Wow, takovou prasecinu jsem uz dlouho nevidel :-D
We will destroys the Christian's legion ... and the cross, will be inverted
Bundas avatar 18.7.2014 00:40 Bundas | skóre: 14 | Pardubice
Rozbalit Rozbalit vše Re: Pocitani pomoci goniometrickych funkci
Co je na tom nejhorsi? A je tam vubec neco, co je dobre napsany? :-D
Abe the Messiah has come.
vlastikroot avatar 18.7.2014 08:43 vlastikroot | skóre: 24 | blog: vlastikovo | Milevsko
Rozbalit Rozbalit vše Re: Pocitani pomoci goniometrickych funkci
No nejhorsi, me se nelibi pouziti maker, funkce bez parametru, globalni promenne a ten superstrom ifu :-D Ja bych treba tohle resil pointrama, obecnyma funkcema na pocitani nad tema pointrama a pak jednoduche funkce, ktere overi zadani parametru a vhodne prehazi poradi pointeru (aby vzdy a = f(b,c)). Melo by to jit napsat relativne kratky. Je dulezity to rozmyslet abstraktne, ne jit a rovnou psat.
We will destroys the Christian's legion ... and the cross, will be inverted
Bundas avatar 11.7.2014 17:55 Bundas | skóre: 14 | Pardubice
Rozbalit Rozbalit vše Re: Pocitani pomoci goniometrickych funkci

ted sem zjistil, ze vetsinu veci to pocita spatne :-D pracuju na oprave

Abe the Messiah has come.
11.7.2014 19:18 MadCatX
Rozbalit Rozbalit vše Re: Pocitani pomoci goniometrickych funkci
Odpovědět | | Sbalit | Link | Blokovat | Admin
Trojúhelník (libovolný) je v Euklidovské geometrii jednoznačně zadán třemi údaji přičemž jedním z nich musí být délka nějaké strany, žádný údaj navíc nesmí být nulový. U pravoúhlého je situace ještě jednodušší, protože jeden údaj je implicitně znám - velikost úhlu ACB.

Můžeš nechat uživatele zadat velikosti všech stran a dvou úhlů s tím, že neznámé údaje budou nula a podle toho, co je známo dopočítat zbytek.
pavlix avatar 18.7.2014 09:15 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Pocitani pomoci goniometrickych funkci
Při běžném značení...
a = 5 cm
b = 3 cm
beta = 30°
Podmínka na alespoň jeden údaj o délce strany je splněna, žádný údaj není nulový, ale nepřijde mi, že by to jednoznačně určovalo konkrétní trojůhelník.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
18.7.2014 14:42 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Pocitani pomoci goniometrickych funkci
Asi jsem natvrdlý, ale máš na mysli jeho polohu nebo tvar? - bo tvar/rozměr určuje přesně.
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
pavlix avatar 18.7.2014 14:54 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Pocitani pomoci goniometrickych funkci
Mám namysli tvar.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
18.7.2014 15:00 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Pocitani pomoci goniometrickych funkci

A co je nejednoznačné?

Pokud vyjdu z:

Trojúhelník je tvořen body A,B,C a jeho strany jsou tvořeny úsečkami strana a úsečkou BC, strana b úsečkou CA, strana c úsečkou AB a úhly BAC=α ABC=β ACB=δ (nebo-li α u bodu A, β u bodu B, δ u bodu C).

Tak mi vychází vždy právě jeden tvar.

To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
18.7.2014 15:02 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Pocitani pomoci goniometrickych funkci
Opravička: δ −> γ
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
pavlix avatar 18.7.2014 15:08 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Pocitani pomoci goniometrickych funkci
Kontroloval jsem jen zajímavé úhly, tedy...
|BC| = a = 5 cm
|AC| = b = 3 cm
|ABC| = beta = 30°
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
pavlix avatar 18.7.2014 15:04 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Pocitani pomoci goniometrickych funkci
Mně vycházejí právě dva tvary.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
18.7.2014 15:15 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Pocitani pomoci goniometrickych funkci
Asi nemáš body A,B na ose X ve směru +, ale -.
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
pavlix avatar 18.7.2014 15:19 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Pocitani pomoci goniometrickych funkci
Ptal ses na tvar, takže žádnou osu nemám.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
18.7.2014 15:22 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Pocitani pomoci goniometrickych funkci
Při takovém zadání se bere trojúhelník ABC, pokud chceš zavádět ACB, je třeba to definovat.
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
pavlix avatar 18.7.2014 15:27 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Pocitani pomoci goniometrickych funkci
Máš alespoň matnou představu o čem píšeš? Možná bych si trochu toho matroše koupil.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
18.7.2014 15:32 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Pocitani pomoci goniometrickych funkci

Matnou, jediné řešení, které vidím a klidně je možné, že se pletu, abych dostal dva tvary je udělat trojúhelník ACB (řekněme „zrcadlený“ trojúhelník; bod C je druhý proti směru hodinových ručiček po bodu A), místo trojúhelníku ABC.

Jinak nevím a nechám se podat.

To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
Josef Kufner avatar 18.7.2014 16:14 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Pocitani pomoci goniometrickych funkci
Zapíchni kružítko do C a vyznač si kružnicí délku strany b. Uvidíš dva průsečíky s polopřímkou BA a tedy i dvě místa, kde může být bod A. (Snad jsem neprohodil nějaká písmenka.)
Hello world ! Segmentation fault (core dumped)
18.7.2014 16:42 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Pocitani pomoci goniometrickych funkci
Aááá, blik a > b - dík (nemám kružítko, dělal jsem to v hlavě :-) )
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
18.7.2014 16:16 MadCatX
Rozbalit Rozbalit vše Re: Pocitani pomoci goniometrickych funkci
Při tomto zadání
|BC| = 5 cm
|AC| = 3 cm
úhel ABC = 30°
platí, že bod A leží na přímce procházející bodem B, která se stranou BC svírá úhel 30°. Dále platí, že bod A leží na kružnici se středem v bodě C a poloměrem 3 cm. V tomto případě se zmíněná kružnice a přímka protne ve dvou bodech, takže trojúhelník jednoznačně zadán není - nejde o dva symetrické trojúhelníky. Z toho důvodu se trojúhelník musí sestrojovat dle věty "sus", kdy platí, že známý úhel svírají dvě zadané strany, což jsem si při psaní původního příspěvku neuvědomil. Dvě výjimky tvoří situace, kdy je přímka tečnou té kružnice a nebo je úhel ABC == 90°.
pavlix avatar 18.7.2014 16:20 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Pocitani pomoci goniometrickych funkci
Těch výjimek existuje víc, používá se Ssu, kdy máš stranu, menší stranu a úhel mezi ní a zbylou stranou. To pak taky funguje jednoznačně.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
pavlix avatar 18.7.2014 16:21 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Pocitani pomoci goniometrickych funkci
Mimochodem ten úhel 90 stupňů mezi to taky patří, pokud má vůbec nějaký trojúhelník vyjít.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
pavlix avatar 18.7.2014 16:18 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Pocitani pomoci goniometrickych funkci
To je nesmysl. Pokud dokážeš vyrobit zrcadlený trojúhelník, tedy takový, kde jsou oproti zvyklostem písmena A, B, C po směru hodinových ručiček, můžeš ho triviálně překlopit a získáš tím trojúhelník identického tvaru, jen překlopený (promínutý osovu souměrností, pokud to chceš víc matematicky).

Kdybys prováděl konstrukci podle výše uvedeného zadání, tak nejdřív umístíš stranu a, tedy body B a C. Bod A bude ležet na průniku kružnice (se středem v bodě C a poloměrem b) a polopřímky (z bodu B, která svírá zadaný úhel s úsečkou BC). Jsou dvě možnosti jak může vést ta polopřímka může vést a každá z těch dvou polopřímek protíná kružnici ve dvou bodech. Existují tedy čtyři různá možná umístění bodu A a tím pádem ti z konstrukce vzniknou čtyři trojúhelníky, ale po dvojicích shodné (překlopené podle přímky BC).

Proto se někdy dělá to, že se ta polopřímka použije jedna a z důvodu konvence se používá zrovna ta, která způsobí, že vrcholy trojúhelníků vyjdou označené proti směru hodinových ručiček. Trojúhelník je celkem jasně definovaný útvar a označení vrcholů v tom nehraje roli. Konvence je dobrá jenom k tomu, aby bylo možné zadat takto zjednodušené zadání a aby se vědělo, který z dvojice shodných trojúhelníků vybrat.

Každopádně výsledkem je to, že tvrzení, že k jednoznačnému určení tvaru trojúhelníku stačí mít tři údaje, z nichž alespoň jeden je strana a zbytek jsou další strany nebo úhly, není pravdivé, protože existují zadání, která generují více než jedno řešení.

Stačí si zkusit provést tu konstrukci, ale při troše snahy to lze i spočítat, akorát zrovna nemám po ruce zadání, kde by to vycházelo nějak hezky ani si nejsem jistý, jestli lze takové zadání vyrobit.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
18.7.2014 16:48 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Pocitani pomoci goniometrickych funkci

Dík.

Každopádně výsledkem je to, že tvrzení, že k jednoznačnému určení tvaru trojúhelníku stačí mít tři údaje, z nichž alespoň jeden je strana a zbytek jsou další strany nebo úhly, není pravdivé, protože existují zadání, která generují více než jedno řešení.

Netvrdil jsem, že to stačí, jen jsem pro konkrétní zadání viděl jen jedno řešení.

OT: Držím se konvence, že pokud není zadáno jedná se o ABC.

To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
pavlix avatar 18.7.2014 18:56 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Pocitani pomoci goniometrickych funkci
Netvrdil jsem, že to stačí, jen jsem pro konkrétní zadání viděl jen jedno řešení.
Pokud bych udělal chybu a zvolil bych příklad, kdy je skutečně jen jedno řešení, bylo by asi záhodno spíše navrhnout správný příklad než se vrtat v tom špatném ;).
OT: Držím se konvence, že pokud není zadáno jedná se o ABC.
Všechny čtyři trojúhelníky jsou kandidáti na trojúhelník ABC. Jestli se točí písmena proti směru nebo po směru nemá z hlediska zadání žádný význam, pokud není orientace explicitně uvedena.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
18.7.2014 19:07 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Pocitani pomoci goniometrickych funkci

Až jsem odeslal, tak jsem si uvědomil, že to není kompletní, doplnění „Držím se konvence, že pokud není explicitně zadáno jedná se o ABC a platí že jsou v pořadí CCW“, tak aspoň bylo psáno a používáno.

OT: Trojúhelníky používám už jen snad definované třemi 3d souřadnicemi a definicí CW nebo CCW(což je obvykle default), a pak mám ještě jeden v autě…

To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
Řešení 1× (Bundas (tazatel))
Josef Kufner avatar 11.7.2014 21:47 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Pocitani pomoci goniometrickych funkci
Odpovědět | | Sbalit | Link | Blokovat | Admin
Můžeš to pojmout jako grafový algoritmus na prohledávání stavového prostoru od požadovaných parametrů k zadaným parametrům.

Prostě vemeš chybějící hodnotu, všechny známé vzorečky na její výpočet a zkusíš je dosadit. Když po dosazení bude něco chybět, rekurzivně budeš postup opakovat. Použij prohledávání do šířky, jinak se ti to zacyklí.

Musíš si u toho hlídat, co která hodnota znamená, aby jsi nedosazoval blbosti.

Takto si symbolicky odvodíš vzoreček na kompletní výpočet a cestou zpět z rekurze můžeš počítat. Sestup do hlubin se ti zastaví v okamžiku, kdy budeš moct dosadit nějaký známý parametr. Tedy přesněji to nebude jeden vzoreček, ale posloupnost/strom aplikování připravených vzorečků na sadu známých hodnot (odtud to procházení stavového prostoru).

Až pak místo trojúhelníku budeš chtít implementovat výpočty na něčem složitějším, bude stačit vyměnit sadu vzorečků. Logiku budeš moct ponechat stejnou.

Jako bonus můžeš přidat výpis odvozených vzorečků v TeXu a umožnit krásný výstup do PDF. Hezky vysázet zadané parametry, odvozené vzorečky, dosazení do nich a výsledky.

A pokud to chceš extra cool, přidej parser pro načítání vzorečů z textového souboru, aby jsi mohl snadno rozšiřovat, co všechno to umí řešit.

A až tě to přestane bavit, tak se koukni na Prolog.
Hello world ! Segmentation fault (core dumped)
pavlix avatar 18.7.2014 09:17 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Pocitani pomoci goniometrickych funkci
A až tě to přestane bavit, tak se koukni na Prolog.
A až zjistíš, že k tomu není žádný software, ve kterém by se to dalo rozumně ladit, tak se vrať zpátky na zem.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.