Byla vydána beta verze openSUSE Leap 16. Ve výchozím nastavení s novým instalátorem Agama.
Devadesátková hra Brány Skeldalu prošla portací a je dostupná na platformě Steam. Vyšel i parádní blog autora o portaci na moderní systémy a platformy včetně Linuxu.
Lidi dělají divné věci. Například spouští Linux v Excelu. Využít je emulátor RISC-V mini-rv32ima sestavený jako knihovna DLL, která je volaná z makra VBA (Visual Basic for Applications).
Revolut nabídne neomezený mobilní tarif za 12,50 eur (312 Kč). Aktuálně startuje ve Velké Británii a Německu.
Společnost Amazon miliardáře Jeffa Bezose vypustila na oběžnou dráhu první várku družic svého projektu Kuiper, který má z vesmíru poskytovat vysokorychlostní internetové připojení po celém světě a snažit se konkurovat nyní dominantnímu Starlinku nejbohatšího muže planety Elona Muska.
Poslední aktualizací začal model GPT-4o uživatelům příliš podlézat. OpenAI jej tak vrátila k předchozí verzi.
Google Chrome 136 byl prohlášen za stabilní. Nejnovější stabilní verze 136.0.7103.59 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 8 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.
Homebrew (Wikipedie), správce balíčků pro macOS a od verze 2.0.0 také pro Linux, byl vydán ve verzi 4.5.0. Na stránce Homebrew Formulae lze procházet seznamem balíčků. K dispozici jsou také různé statistiky.
Byl vydán Mozilla Firefox 138.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 138 je již k dispozici také na Flathubu a Snapcraftu.
Šestnáctý ročník ne-konference jOpenSpace se koná 3. – 5. října 2025 v Hotelu Antoň v Telči. Pro účast je potřeba vyplnit registrační formulář. Ne-konference neznamená, že se organizátorům nechce připravovat program, ale naopak dává prostor všem pozvaným, aby si program sami složili z toho nejzajímavějšího, čím se v poslední době zabývají nebo co je oslovilo. Obsah, který vytvářejí všichni účastníci, se skládá z desetiminutových
… více »Dělal jsem úkol z programování, ale nějak špatně to funguje.
Mám 2 úsečky, každá je zadaná dvěma body. Mám zjistit jestli jsou rovnoběžné, různoběžné, kolmé, jestli leží na jedné přímce a v tomto případě jestli se nepřekrývají. Pokud mají průsečík, vypsat ho.
Vyřešil jsem to nějak takto:
y = kx + q
k1 * k2 + 1 == 0
. Pak najdu průsečík přímek (k1*x + q1 = k2*x + q2, potom dopočtu y) a zjistím, jestli bod leží na obouch úsečkách.A právě ve zjišťování, zda je bod na úsečce je zakopaný pes. Zjišťuji to takto:
sqrt((A.x - B.x)^2 + (A.y - B.y)^2)
sqrt((A.x - bod.x)^2 + (A.y - bod.y)^2) + sqrt((B.x - bod.x)^2 + (B.y - bod.y)^2)
Tak co teď s tím? Jak jinak zjistit, jestli tam ten bod leží nebo ne?
Tiskni
Sdílej:
Tak neděl, ale násob - test rovnosti ("rovnici") k_AB == k_CD můžeš vyjádřit jako (y_B - y_A)/(x_B - x_A) == (y_D - y_C)/(x_D - x_C), což je ekvivalentní (y_B - y_A)*(x_D - x_C) == (y_D - y_C)*(x_B - x_A) (což je ekvivalentní nulovému skalárnímu součinu normály prvního vektoru a druhého vektoru, jak jsem poznamenal v odpovědi Platonixovi)
Ovšem, také záleží, co máš na vstupu.
Neni to sice idealni reseni, ale rozhodne nejjednodussi a v realnych aplikacich je to asi uplne jedno.
Jen je potreba zvolit vhodny odstup delty a presnosti reprezentace realneho cisla v zavislosti na poctu operaci, aby chyba nikdy nepresahla velikost delty.
Toto je standardne riesenie ktore sa uci aj na numerickej matematike, proste sa treba zmierit s konecnou presnoustou cisel s poh. rad. ciarkou. Ked to chces presne tak to rataj symbolicky cez zlomky..
Nebylo by jednodušší napočítat směrové vektory obou úseček (to pomocí rozdílu souřadnicí jejich bodů). Potom stačí provést skalární součin těchto vektorů. Je-li roven nule, jsou kolmé, je-li roven 1 jsou rovnoběžné. Je-li něco mezi, tak jsou obecně různoběžné.
je-li roven 1 jsou rovnoběžné.
Co třeba (1,1) a (-1,-1)? Ne, tohle by se testovalo přes normálový vektor - pokud je normálový vektor prvního vektoru kolmý na druhý vektor (tedy skalární součin druhého vektoru a normály prvního je roven nule). Normálový vektor (a,b) = (-b,a)
Ale jinak dobrý - už jsem chtěl v předešlém vlákně odpovědět, jak řešit situaci se zlomky - tohle je o poznání elegantnější.
I když - je to vlastně to samý, co jsem chtěl navrhnout, jenom jinak vyjádřený.
Není třeba testovat přes normálový vektor. Skačí, když malinko opravím ten svůj návrh: bude se počítat absolutní hodnota skalárního součinu. Jo jinak je samozřejmě třeba vektory normovat!
Tedy celý vzoreček by byl asi takovýto:
1. najdu směrové vektory pomocí rozdílu souřadnic obou bodů
2. spočítám výraz: (skalární součin 1 a 2 vektoru)^2/((skalární součin 1 a 1 vektoru)^2*(skalární součin 2 a 2 vektoru)^2)
3. je-li výsledek 1 - rovnoběžné, 0 - kolmé, něco mezi jsou obecně různoběžné svírají úhel = acos(sqrt(výsledek))
No, ale těm operacím bych se radši vyhnul - narůstá časová složitost a dochází k nepřesnostem (normála je levná).
Nevím, co je na normále tak super. Samozřejmě musíš ty vědět, jaké funkce má ten program poskytovat. Já navrhuji řešení, které je robustní (neselže při vyšším počtu rozměrů) a je naprosto standardní (opírá se o definice skalárního součinu a příslušné věty). Alternativně můžeš na 0 testovat skalární součin obou vektorů a zároveň jednoho vektoru a normálového k druhému. Přijde mi to ale zbytečné, když se vše dá ošetřit jedním vzorečkem.
Časová složitost je stejná.
Jo a nedoporučuji normálový vektor používat protože pro více dimenzí je problém s jeho definicí (je nejednoznačný). Např.: Jaký bude normálový vektor k vektoru (1,1,1). Je to totiž celá normálová rovina.
Ty vole! Tyhle problémy bych chtěl mít!
(By - Ay)(CyDx - CxDy) - (Dy - Cy)(AyBx - AxBy) y = --------------------------------------------- (By - Ay)(Dx - Cx) - (Dy - Cy)(Bx - Ax)
Nevim proc presne to neproslo tobe, ale v tom modu -pedantic si to zkus nejdriv zkompilovat na progtestu v sekci prekladace. Muze ti to na tvym systemu hazet jiny warningy nez u nich a uz to neprojde..
Z bodů zjistím k a q pro rovnici přímky y = kx + qTímto tvarem rovnice nejsi schopen popsat přímky rovnoběžné s osou y - ty chyby by mohly být pokusy počítače o dělení různých čísel nulou (ale nejsem programátor, takže netuším, jestli je to správný výklad). Blbuvzdorný tvar rovnice přímky v rovině je:
ax + by +c = 0
, kde "a" a "b" jsou pořadnice normálového vektoru k úsečce a c je konstanta, která se dopočítá dosazením souřadnic bodu ležícího na přímce za "x" a "y".
Ve tří- a vícerozměrném prostoru ti pak nezbyde, než přímky vyjadřovat parametrickými rovnicemi {x}T = {a}T + {b}Tt
, kde vektor "x" jsou souřadnice libovolného bodu na přímce, vektor "a" souřadnice známého bodu ležícího na přímce, vektor "b" souřadnice směrového vektoru přímky a "t" je parametr.
0x = 0
(úsečky leží na jedné přímce, je potřeba spočítat překryv) a 0x != 0
(úsečky leží na dvou různých rovnoběžných přímkách).
vektorový součin = 0 -> rovnoběžné/na společné přímce c1 == c2 -> na společné přímce A, B na CD nebo C na AB -> překrývají se jinak ne jinak rovnoběžné skalární součin směrových vektorů = 0 -> kolmé jinak různoběžné ze soustavy průsečík (jako "zlomek", abych mohl přesně zjišťovat, jestli leží na úsečce) průsečík na AB a CD -> průsečík úsečekHlavní je, že to funguje, jenom by to asi příště chtělo pořádnou analýzu, což nemám rád
Hlavní je, že to funguje, jenom by to asi příště chtělo pořádnou analýzu, což nemám rádHm, tak v tomhle se informatika od stavařiny moc neliší. Když se člověk vybodne na pořádnou analýzu, tak potom vycházejí v lepším případě nesmysly a v horším správně se tvářící úplně špatné výsledky...