Autor Zpráva
Darker
Profil
Znám body A, B a C - jejich souřadnice. Jak spočítám libovolný bod ležící na ose úhlu ACB neshodný s C? Nepotřebuju nutně přímo kód, stačí nějaké nakopnutí.
Napadlo mě dlouhé řešení:
Najít úsečku AC a její parametrickou rovnici. Totéž pro BC. Poté si vybrat libovolné t menší než 0 a dosadit do obou rovnicí. Získám body N (leží na AC) a M (na BC). Najdu střed úsečky MN.

Problém je, že část s parametrikou rovnicí se mi zdá podezřele dlouhá. Když jsem se jí chystal použít naposledy, našel jsem nakonec toto: http://local.wasp.uwa.edu.au/~pbourke/geometry/lineline2d/.
frantisek.nesveda
Profil
Zkusím to napsat nějak v pseudokódu s komentáři:
//Spočtu si směrnici obou přímek CA a CB:
S_CA := (Ax - Cx) / (Ay - Cy);
S_CB := (Bx - Cx) / (By - Cy);
// Tyto směrnice odpovídají tangentu úhlu, který přímka CA, resp. CB svírají s osou X.
// Spočteme oba tyto úhly a vypočteme jejich průměr, to pak bude úhel osy.
U_CA := Arctan(S_CA);
U_CB := Arctan(S_CB);
U_Osa := (U_CA + U_CB) / 2;
//Z tohoto úhlu vypočteme zpět směrnici:
S_Osa = Tan(U_Osa);
//A pomocí té směrnice už jen bod D, který bude ležet na ose a bude mít x-ovou souřadnici o 1 větší, než původní C.
Dx = Cx + 1;
Dy = Cy + S_Osa;
LuBOSS
Profil *
Ak su vektory CA a CB rovnako velke tak ich vektorovy sucet CA + CB bude vektor ktory bude lezat na ose uhlu ACB. Ak nie su rovnako vekle nie je problem ich upravit aby rovnako velke boli. Napriklad sa daju normovat to znamena upravit na velkost 1. Vektor sa normuje tak ze sa podeli svojou velkostou a velkost vektora sa vypocita ako odmocnina z druhych mocnin suradnic vektoru.
frantisek.nesveda
Profil
LuBOSS:
Ak su vektory CA a CB rovnako velke tak ich vektorovy sucet CA + CB bude vektor ktory bude lezat na ose uhlu ACB. Ak nie su rovnako vekle nie je problem ich upravit aby rovnako velke boli. Napriklad sa daju normovat to znamena upravit na velkost 1. Vektor sa normuje tak ze sa podeli svojou velkostou a velkost vektora sa vypocita ako odmocnina z druhych mocnin suradnic vektoru.

To je lepší řešení, nemusí se tam ošetřovat, že jsou vektory svislé apod., a bude fungovat určitě rychleji, než to moje původní.

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