Matematické Fórum

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

#1 02. 11. 2012 19:50

Pazzi
Zelenáč
Příspěvky: 24
Reputace:   
 

Simulace točení rulety

Zdravím,

potřeboval bych pomoct s algoritmem pro simulaci rulety (nebo spíš kola štěstí).
Potřebuju ale, aby se mi ruleta zastavila na konkrétním políčku a taky potřebuju, aby mi ruleta zpomalovala a zrychlovala, když nějaký prvek projíždí kolem šipky (takový magnetizmus), co určuje výhru (určitě si pamatujete soutěž Kolotoč apod.).

Napsal jsem si oba způsoby, ale nepodařilo se mi je zkombinovat.
Mám proměnné:
- speed // rychlost rulety
- rotation // úhel otočení rulety
Políček v ruletě je 18, takže pokud je rotation dělitelné 20, je některé políčko na šipce.

Postup pro zpomalování (bez magnetizmu):
  Nastavím libovolnou rotaci (třeba -1000 stupnu) a přičítám rychlost dokud není rotace větší nebo rovna 0. Rychlost vypočítám jako speed = rotation/50, kde 50 je konstanta určující jak rychle se bude ruleta točit.

Postup s magnetizmem (nefunguje zastavení na předem vybrané výhře):
  Rychlost nastavím třeba na 10 (stupňů za snímek), rotaci třeba na 1000. Pokud je (rotace % 20) <> 10, přičítám nebo odečítám k rychlosti 0.1. Tu pak přičtu k rotaci a rychlost vynásobím 0.99 (čímž ji spomalím).


Kdybych u postupu z magnetismem zjistil na jakou hodnotu nastavit výchozí rotaci a rychlost, tak určitě budu schopný ovlivnit na jakém dílku se ruleta má zastavit. Podařilo se mi spočítat rychllost: speed = 1/(10*0.99^300). Kde 10 je omezení, že se ruleta bude točit dokud je rychlost větší než 0.1, 0.99 je konstanta o kterou spomaluju rychlost každý průběh a 300 je počet snímků, které se ruleta bude točit (30FPS * 10 vteřin).


Za každou radu budu moc vděčný, pokud někdo navrhnete lepší nápad, budu ještě radši.
Předem díky za pomoc,
Pazzi

Offline

 

#2 08. 11. 2012 12:23

RePRO
Místo: Jihlava
Příspěvky: 363
Škola: AI VŠPJ (09-12, Bc.)
Pozice: programátor
Reputace:   11 
Web
 

Re: Simulace točení rulety

Zdravím,
již vyřešené, nebo stále bádáš? Pokud bádáš, klidně pomohu (naznač implementačně).
Díky za odpověď.


Srdcem trochu-programátor, duší rádoby-matematik a povoláním analytik-vývojář.

Offline

 

#3 08. 11. 2012 16:12

Pazzi
Zelenáč
Příspěvky: 24
Reputace:   
 

Re: Simulace točení rulety

Stálé bádám. Napadlo mě řešení, kdy bych pustil algoritmus pozpátku ve for cyklu. Dal bych rotaci na 0 a rychlost 0.1 (což je hranice, kdy se rotace nakonec zastaví), potom bych k rotaci přičítal rychlost a tu každý cyklus bych rychlost násobil o konstantu a přičítal opačný magnetizmus.

Tohle řešení ale není optimální, protože jak se bude ruleta dotáčet, chci, aby ruleta přestřelila místo zastavení (o kousek) a magnetizmus by ji vrátil na správnou pozici (rychlost by se dostala do záporu). Tohle druhý algoritmus umí.

Za pomoc budu určitě rád

Offline

 

#4 10. 11. 2012 18:48 — Editoval RePRO (10. 11. 2012 18:52)

RePRO
Místo: Jihlava
Příspěvky: 363
Škola: AI VŠPJ (09-12, Bc.)
Pozice: programátor
Reputace:   11 
Web
 

Re: Simulace točení rulety

Ten problém je poněkud složitější (to jsem zjistil fakt brzo :-D). Takže se omlouvám, zkusím to ještě nastudovat. Jak dlouho na to máš a v čem to píšeš?
Pomoci Ti můžou určitě zdejší matematici. Hledej toto: roulette wheel selection.

Já Tě mohu (prozatím) odkázat na toto:
Odkaz-1
Odkaz-2
Odkaz-3
Odkaz-4
Odkaz-5


Srdcem trochu-programátor, duší rádoby-matematik a povoláním analytik-vývojář.

Offline

 

#5 11. 11. 2012 14:23 — Editoval Pazzi (11. 11. 2012 14:25)

Pazzi
Zelenáč
Příspěvky: 24
Reputace:   
 

Re: Simulace točení rulety

Poněkud těžší to je, ale myslím, že správný vzoreček to vyřeší :) Píšu to v C++ a né že bych na to měl času neomezeně, ale nějak extrémně to nespěchá.
Za odkazy díky

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson