Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Zdravím,
ačkoli problém, který mám se týká programování, jeho řešení je čistě matematické a proto bych rád poprosil o pomoc zde, protože to nějak né a né vymyslet...
Mějme zadaný vzorový obdélník o rozměrech X a Y.
Rozměr X je 1980, rozměr Y je 1024
Potřebujeme zjistit poměr stran obdélníku. Postup je známý a předem daný - vypočítáme největšího společného dělitele. Tímto získaným číslem vydělíme oba rozměry a dostaneme poměr 16:9
Nyní máme nový obdélník o rozměrech X a Y a my známe jeho rozměry, nicméně tyto rozměry jsou zadávány pomocí proměnných.
Opět vypočítáme největšího společného dělitele a získáme nějaký poměr stran (šířka:výška).
Otázka zní:
Existuje nějaký obecný matematický předpis, který by dokázal porovnat, jestli je daný poměr stran "širší" než vzorový poměr stran?
Pár příkladů:
Obdélník se zadáním X:1222 Y:128 -> NSD=2, poměr stran 611:64
Zadáno tak, že tento obdélník je širší (tedy více do obdélníku do šířky) než vzorový obdélník a bude třeba provést na základě tohoto zjíštění další akci.
Obdélník se zadáním X:1420 Y:1000 -> NSD=20, poměr stran 71:50
Zadáno tak, že tento obdélník je užší (tedy spíše směrem ke tvaru čtverce), než vzorový obdélník a není třeba provést na základě tohoto zjíštění další akci.
Obdélník se zadáním X:500 Y:1650 -> NSD=50, poměr stran 10:33
Zadáno tak, že tento obdélník je užší a postaven "na výšku". Tento "směr" ale omezen podmínkou není, takže ani zde není třeba provést další akci
Důležité je také zmínit, že vstupní hodnoty nejsou uživateli známé a vstupují do řešení sice jako konkrétní čísla, nicméně tato čísla nejsou uživateli známa a uživatel není ani předběžně schopen odhadnout možné řešení. Veškeré počítání se musí omezit na porovnání výsledného a vzorového poměru stran.
A samozřejmě hledáme obecné řešení aplikovatelné na porovnání poměru stran libovolného obdélníku s poměrem stran vzorového obdélníku, které je jasně pomocí jedné hodnoty nebo sady hodnot různě spojených logickými spojkami, schopné určit, zdali je náš obdélník "širší" nežli obdélník vzorový.
Ačkoliv je to matematická úloha, když by to někdo počítal a potřeboval pár dalších vzorových obdélníků a nechtělo by se mu s nimi vytvářet a uměl trochu programovat, dám sem i řešení v javascriptu (respektive v jQuery), které po zadání X a Y vyhodí Největší společný dělitel a výsledný poměr stran, stačí jen libovolně měnit proměnné X a Y :)
function gcd(x, y) {
if (y == 0){ return x }
return gcd (y, x % y)
}
function calcratio() {
var x = 1920;
var y = 1080;
var gdc = gcd(x,y)
alert("NSD = "+ gdc + "; "+x/gdc+":"+y/gdc);}
No, snad je to pochopitelné, pokud by cokoliv bylo nesrozumitelné, ihned doopravím.
Díky :)
Offline
Vydeliť.
1:2 =0,5
4:8= 0,5
3:5 = 0,6
Každému pomeru zodpovedá desatinné číslo. Zhodné pomery sú reprezentované zhodný mi desatinnými číslami, rôzne pomery zas rôznymi.
Offline
↑ Zorak:
Ahoj.
K příspěvku kolegyně ↑ misaH: ještě dodám, že poměr y/x je zde roven hodnotě
("tan" = "tg" = tangens), kde
je úhel, který svírá úhlopříčka se stranou délky x. Velikost
tohoto úhlu (či hodnota jeho funkce tangens) může sloužit jako míra "protáhlosti" obdélníka
"ve směru strany y", pokud Ti jde o toto (větší hodnota znamená větší protáhlost).
Offline
Ahoj, díky za odpovědi.
Použiji první řešení pro jeho jednoduchost .... pro 1980x1020 je výsledná hodnota po dělení poměru 1,7 periodických. Zběžné testy ukazují, že cokoliv je větší než tato hodnota, (logicky) vyhovuje zadání a detekce proběhne vpořádku.
Rumburakovo řešení je taktéž asi funkční, nezkoušel jsem ho, ale je logické, vypočítat úhlopříčku 
pak vypočítat úhel přes tg a ten porovnávat...
ale ... pro můj účel asi komplikované ... ne že by o moc, ale pro tento účel pravděpodobně zbytečná matematická operace k implementaci :)
...
to je tak když člověk hledá a vymejšlí tak dlouho, až přehlédne to nejjednodušší, co má přímo pod nosem... máte u mě keksík :)
Offline
↑ Zorak:
Abychom si rozuměli:
Že by se měla počítat délka úhlopříčky, o tom jsem nic nepsal. O úhlopříčce jsem se zmínil jen proto, abych pomocí ní
slovně "označil" patřičný úhel, který je jakýmsi měřítkem vlastnosti, která Tě zajímá.
Jestliže zvolíme za měřítko dané vlastnosti některou goniometrickou funkci tohoto úhlu, pak rozhodně se zde nejlépe
hodí funkce tangens jakožto podíl y/x. Použít třeba funkci sinus by šlo sice také, ale k tomu bychom museli spočítat
i délku oné úhlopříčky, což by opravdu bylo komplikovanější a ani jsem to neradil.
Offline