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 03. 09. 2014 15:17

HULKEE
Místo: tmavé
Příspěvky: 55
Reputace:   
 

zjištění, zda se bod nachází vně trojúhelníku/elipsy

Ahoj,

potřebuji co nejjednodušším způsobem zjistit, zda se zadaný bod náchází uvnitř elipsy zadané délkami os a a b a středem nebo trojúhelníku daného rohem a dvěma délkami stran. (už jsem tuhle matematiku zapomněl a bohužel nemám čas si ji zopakovat, tak se ptám přímo na řešení).

Potřebuji co nejjednodušší řešení - např. pokud by to šlo pomocí ohnisek apod. (už si skoro nic nepamatuju :( )

Celé je to kvůli algoritmu pro maskování rohů fotky, takže mi stačí zadat o jaký roh se jedná, rozměry A a B a mám všechny potřebné údaje. To samé platí i pro trojůhelník, který bude mít vrchol v jednom z rohů a strany A a B budou souběžné s hranami obrazu. (To jen pro vysvětlení že tyto údaje jsou dostačující pro přesné určení trojúhelníku v souřadném systému).


Člověk, který se usmívá když mu nic nejde, už ví na koho hodí vinu.

Offline

 

#2 03. 09. 2014 16:37

mák
Místo: Vesmír, Galaxie MD
Příspěvky: 917
Reputace:   63 
 

Re: zjištění, zda se bod nachází vně trojúhelníku/elipsy

Zdravím,
pokud vám jde o hotový výpočet, tak třeba v wxMaximě je to:

Code:

Test(a,b,x,y):=block([u],
    u: atan2(y,x),
    is((((a*cos(u))^2+(b*sin(u))^2)-(x^2+y^2))>=0)
);

V excelu to je trochu složitější (VBA neumí funkci atan2, tak se musí napsat):

Code:

Private Const Pi As Double = 3.14159265358979

Public Function Atn2(y As Double, x As Double) As Double
      If x > 0 Then
        Atn2 = Atn(y / x)
      ElseIf x < 0 Then
          Atn2 = Sgn(y) * (Pi - Atn(Abs(y / x)))
    ElseIf y = 0 Then
        Atn2 = 0
    Else
        Atn2 = Sgn(y) * Pi / 2
      End If
End Function

Function Test(a,b,x,y)
    Dim u, z
    u = Atn2(y,x)
    z = ((a*Cos(u))^2+(b*Sin(u))^2)-(x^2+y^2)
    if z>=0 Then Test = 1 Else Test = 0
End Function

Volání funkce je

Code:

Test(a,b,x,y)

přičemž $a$ a $b$ jsou poloosy elipsy a $x$ a $y$ jsou souřadnice testovaného bodu. Vrací hodnotu $1$ nebo $true$ pokud test byl úspěšný, jinak $0$ nebo $false$.


LibreOffice Verze: 7.6.6.3, Maxima 5.47.0 (SBCL)

Offline

 

#3 04. 09. 2014 09:08

HULKEE
Místo: tmavé
Příspěvky: 55
Reputace:   
 

Re: zjištění, zda se bod nachází vně trojúhelníku/elipsy

Stačil by mi i matematický výpočet :) Každopádně díky, tohle vypadá dostatečně jednoduše :)


Člověk, který se usmívá když mu nic nejde, už ví na koho hodí vinu.

Offline

 

#4 04. 09. 2014 10:25

Rumburak
Místo: Praha
Příspěvky: 8691
Reputace:   502 
 

Re: zjištění, zda se bod nachází vně trojúhelníku/elipsy

↑ HULKEE:

Ahoj. 

Když  $F, G$ jsou ohniska a $a > \frac{|FG|}{2}$ je délka hlavní poloosy dané elipsy, pak obecný bod $X$ příslušné roviny leží

- na elipse, právě když  $|XF| + |XG| = 2a$ ,

- "uvnitř"  elipsy, právě když  $|XF| + |XG| < 2a$ ,

- "vně"  elipsy, právě když  $|XF| + |XG| > 2a$ .


Symbol $|AB|$  zde značí vzdálenost bodů $A, B$ .

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson