Autor Zpráva
malek8
Profil *
zdravim,
nevím najit na webu vzorec pro vypocet určitého bodu .. nasel jsem jen pro vypocet středu :/

Jde o různé úsečky na kterych potřebuji ziskat konkretni bod.

napr. mam usecku A[20,2] B[240, 212] bod na tejto usecke D[x, 104]

jak vypočítám x?

Diky
Zechy
Profil
Znas dva body - dosad si do predpisu linearni funkce y = ax +b za y a x, dostanes soustavu dvou rovnic o dvou neznamych, vypocitas a a b, a mas funkci pro graf, do toho uz si pak dosadis co potrebujes.
Edit presne jak pise juriad
juriad
Profil
vektorová rovnice:
a * A + (1-a) * B = D

tedy soustava dvou rovnic o dvou neznámých:
20 * a + 240 * (1-a) = x
2 * a + 212 * (1-a) = 104
_es
Profil
Zechy:
dosad si do predpisu linearni funkce y = ax +b za y a x
Takto sa nedajú vyjadriť priamky rovnobežné s osou y, preto to nie je všeobecný postup k riešeniu.
Zechy
Profil
_es:
Všeobecný né, ovšem v tomdle případě to rovnoběžné s y neni.
quatzael
Profil
malek8:
Koukám, že tady zase někdo chyběl na střední škole na matematiku..
To je naprosto triviální úloha s vektory..

Vypočítáš si vektor, např: ->BA = B - A, tzn. [xa; ya] - [xb; yb] = (xa - xb; ya - yb)
A s tímhle vektorem se dostaneš do jakýhokoli bodu na úsečce AB, když ho vynásobíš číslem v intervalu <0; 1> a přičteš k bodu A..

Když chceš zjistit druhou souřadnici, tak úplně jednoduchou trojčlenkou dopočteš.. Je to pravoúhlý trojúhelník, žádnej zakřivenej nadprostor, takže totální hračka..:o)

x = [(y - ya)/(yb - ya)]*(xb - xa) + xa

tzn. v Tvým případě:
A[20; 2] B[240; 212] D[x; 104]

x = [(104 - 2)/(212 - 2)]*(240 - 20) + 20 = (102/210)*220 + 20 = 126,8571429...

Takže vůbec nic složitýho..
malek8
Profil *
Super diky vsetkym :)

Som teda myslel ze to bude o dost jednoduchsie :)
juriad
Profil
malek8:
Téměř všechny úlohy s vektory vedou na soustavu několika lineárních rovnic, která jsou algoritmicky řešitelná.
Stačí si tedy najít software na řešení soustav rovnic a svou úlohu v něm vhodně formulovat.
quatzael
Profil
malek8:
Tohle je jednoduchý.. Co na tom vidíš složitýho?
Jinak FYI, přímo tomu Tvýmu případu se říká lineární interpolace..;-)
juriad
Profil
quatzael:
Tvá úvaha je stejná jako Zechyho a není vždy funkční. Viz [#4] _es.
Vypadá to trochu jako magie; pro tento případ to funguje, ale složitější problém přeformulovat jako trojčlenku nepůjde.

Řešení pomocí wolframu: http://www.wolframalpha.com/input/?i=20+*+a+%2B+240+*+%281-a%29+%3D+x+and+2+*+a+%2B+212+*+%281-a%29+%3D+104
malek8
Profil *
Potreboval som to do scriptu, tak idealna bola ta rovnica od quatzael-a, ale pomohlo mi aj celkove nasmerovanie. Som rad ze viem čo neviem a možem študovat :))
diky
quatzael
Profil
juriad:
No tak snad to dělá v PHPku, ne? Jestli tam bude mit i případy, kdy je ta úsečka vodorovná, tak tam stačí přidat podmínku:

if (ya == yb)
{
if (y == ya)
x = "<xa; xb>";
else
x = "neexistuje";
}
else
 x = [(y - ya)/(yb - ya)]*(xb - xa) + xa;

Wolfram na to vůbec nepotřebuje..

Záleží co se snaží vypočítat, ale vertikální úsečku mu to normálně spočítá. A počítat pozici x na horizontální úsečce jaksi nedává moc smysl, protože tam vyjde celej interval, pokud se tím y strefí do hodnoty ya resp. yb.. V opačným případě nic..

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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