Autor Zpráva
návštěvník
Profil *
Měřím vzdálenost ukazatele myši od ikony pomocí JS a
nerozumím tomu proč dostávám tento výsledek:

waitCorrection = distance < minMouseDistance ? minMouseDistance : wait * (distance << 5);
console.log("nearest: " + nearest.node.data.label);
console.log("distance: " + distance + " distance div: " + ( distance << 5) );

Výstup:
"nearest: Zábava"
"distance: 191.96796591019026 distance div: 6112"

191 má být 10111111, posunem o 5 míst doleva bych měl dostat 101 čili 5. Místo toho je výsledek 6112.
čili 1011111100000

u JS bitový posun funguje jinak než v C?
Davex
Profil
Při bitovém posunu vlevo se bity posouvají ve směru šipky << a zprava se doplňují nuly, takže to funguje stejně jako v jiných jazycích.
Chamurappi
Profil
Reaguji na návštěvníka:
Tento dotaz je myšlený vážně?
Doleva je na druhou stranu. Vzhled toho operátoru << napovídá, kam se bity posouvají…
návštěvník
Profil *
Chamurappi:
Ne, to jen mám špatně nastavený kalendářní měsíc na svém počítači na duben.

Davex
Aha, tak já to už zapomněl. Takže jsem si spletl operátor. Hm

https://jsperf.com/division-vs-bit-right-shift/3
juriad_
Profil *
návštěvník
Ver tomu, ze zrychleni aritmetiky o par procent ti vykon te zrudy nezlepsi.
Pokud mas problemy s rychlosti kresleni a nikoli(!) vypoctu, muzes zkusit toto: http://html5.litten.com/using-multiple-html5-canvases-as-layers/. To ale vyzaduje, aby se strom sam od sebe nehybal, tedy v tvem pridade ze springy odstranit to springy (vypocet rozlozeni grafu pomoci simulace pruzin).
návštěvník
Profil *
juriad_:
Ale jo, pomohlo to co jsem dělal pomohlo hodně. Docela dost velkým problémem tam bylo že při každé události myši se volala funkce na zjišťování nejbližšího uzlu, což prochází pole s např. 150 uzly. Takže kdykoliv hneš myší tak se volalo několik funkcí, včetně třech funkcí na převod a další věci. Takže jsem tam dal prodlevu, která je mění v závislosti na vzdálenosti kurzoru myši od ikony. Tím pádem se to spouští jenom občas a zbytek je tam return false tak se událost přeskočí. Když jsem měl zapnutý panel firebugu vpravo a rozlišení obrazovky na 800x600 tak to jelo svižně na cca 93% výkonu vlákna. To už je včetně implementace aby se ikony co nejsou na obrazovce vidět nevykreslovaly. Později ještě přidám zabalení neaktivních ikon, takže těch ikon tam bude 4x-5x méně a tak by pomalý výkon neměl hrozit. Teď chci udělat ještě seřazení a vykreslování ikon podle úrovně fadingu, čili ty uzly co jsou slabě vidět budou vykresleny jako první, ty co maje fade 0 budou vykresleny jako poslední.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0