рдкреНрд░рдгрд╛рдо, рдкреНрдпрд╛рд░реЗ!
"рдЬрд╣рд╛рдЬ рдХрд╛ рдЕрд╕рд▓реА рд╕реНрдерд╛рди, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрдЬреНрдЮрд╛рдд, рдЖрдХрд╕реНрдорд┐рдХ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд┐рд╕ рдмрд┐рдВрджреБ рдкрд░ рдЕрдЬреНрдЮрд╛рдд рд╣реИ" рд╡реАред рдЕрд▓реЗрдХреНрд╕рд┐рд╢рд┐рди рдПрдЯ рдЕрд▓ред рдкреНрд░реИрдХреНрдЯрд┐рдХрд▓ рдиреЗрд╡рд┐рдЧреЗрд╢рди, 2006ред рдкреАред 71
"рдкреИрджрд▓ рдпрд╛рддреНрд░реА рдЖрдХрд╛рд╢рдЧрдВрдЧрд╛ рдХреЗ рджреЛ рдХрд┐рдирд╛рд░реЛрдВ рд╕реЗ рдмрд╛рд╣рд░ рдЖрдП ..." (рд╕реА) рд╕рд░реНрдЧреЗрдИ рдкреЛрдкреЛрд╡ (рдПрд╕реНрдЯреНрд░реЛрдлрд┐рдЬрд┐рд╕рд┐рд╕реНрдЯ)
рдЖрд░реНрдЯ рдиреЛрд╡реНрдпреВ рд╢реИрд▓реА рдореЗрдВ рдирдП рд░реБрдЭрд╛рдиреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд╢ рдореЗрдВ
, рдореИрдВ рд╕рдорддрд▓ рдЬрдореАрди рдкрд░ рднреВрдЧрд░реНрднрд┐рдХ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдЕрдм рддрдХ, рдпрд╣ рдХрдерди рдХрд┐ рдкреГрдереНрд╡реА рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХ рджреАрд░реНрдШрд╡реГрддреНрддрд╛рдХрд╛рд░ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрдорд╛рдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╡рд┐рдзрд░реНрдо рдФрд░ рд░рд╛рдЬрджреНрд░реЛрд╣ рдирд╣реАрдВ рд╣реИ, рдореИрдВ рд╕рднреА рд░реВрдЪрд┐ рдХреЛ рдЕрдзрд┐рдХ рд░реВрдврд╝рд┐рд╡рд╛рджреА рдореЙрдбрд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реВрдВред
- рджреЛ рднреМрдЧреЛрд▓рд┐рдХ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА
- рдЬреНрдЮрд╛рдд рджреНрд╡рд╛рд░рд╛ рдПрдХ рдмрд┐рдВрджреБ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг, рдЙрд╕рд╕реЗ рджреВрд░реА рдФрд░ рдЕрдЬрд╝реАрдореБрдерд▓ рдХреЛрдг
- рдЬреНрдЮрд╛рдд рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд▓рд┐рдП рдорд╛рдкрд╛ рджреВрд░реА (TOA, TOF) рджреНрд╡рд╛рд░рд╛ рдПрдХ рдмрд┐рдВрджреБ рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг
- рдорд╛рдкрд╛ рд╕рдВрдХреЗрдд рдЖрдЧрдорди рд╕рдордп (TDOA) рджреНрд╡рд╛рд░рд╛ рдПрдХ рдмрд┐рдВрджреБ рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг
рдпрд╣ рд╕рдм C #, Rust рдФрд░ Matlab рдореЗрдВ, рдЧреЛрд▓рд╛рдХрд╛рд░ рдФрд░ рджреАрд░реНрдШрд╡реГрддреНрдд рдкрд░, рдЪрд┐рддреНрд░, рдЧреНрд░рд╛рдлрд╝, рд╕реНрд░реЛрдд рдХреЛрдб - рдХрдЯ рдХреЗ рдиреАрдЪреЗред
рдФрд░ рдпрд╣, рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдХреЗрдбреАрдкреАрд╡реА:

рдЬрд▓реНрджреА рдореЗрдВ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП (рдореИрдВ рдЦреБрдж рд╣реВрдВ), рдпрд╣рд╛рдВ
GitHub рдкрд░ рднрдВрдбрд╛рд░ рд╣реИ , рдЬрд╣рд╛рдВ рдкрд░реАрдХреНрд╖рдг рдФрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рд╕рднреА рд╕реНрд░реЛрдд рдХреЛрдб рд╣реИрдВред
рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдЖрдпреЛрдЬрди рдмрд╣реБрдд рд╕рд░рд▓рддрд╛ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рддреАрди рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ:
C # рдореЗрдВ рд╕рдмрд╕реЗ рдкреВрд░реНрдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди: рджреВрд╕рд░реЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЗрд╕рдореЗрдВ рддрдерд╛рдХрдерд┐рдд рддрд░реАрдХреЗ рд╣реИрдВ рд╡рд░реНрдЪреБрдЕрд▓ рд▓реЙрдиреНрдЧ рдмреЗрд╕ - рдпрд╣ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдЬрд┐рд╕рдХреА рд╕реНрдерд┐рддрд┐ рдЖрдкрдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд╕реНрдерд┐рд░ рд╣реИ, рдФрд░ рдПрдХ рдЬреНрдЮрд╛рдд рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде, рд╡рд┐рднрд┐рдиреНрди рдмрд┐рдВрджреБрдУрдВ рд╕реЗ рдЗрд╕реЗ рдорд╛рдкрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╕рдм рдХреБрдЫ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдХрд┐рди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдпрд╣ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреНрдпрд╛ рд░рд┐рдЯрд░реНрди рджреЗрддрд╛ рд╣реИ, рдФрд░ рд▓рдбрд╝рд╛рдИ рдореЗрдВ рдЯреЛрд╣реА рдЖрдЪрд░рдг рдХрд░рддрд╛ рд╣реИ, рдЕрд▓рдЧ-рдЕрд▓рдЧ рдбреЗрдореЛ рдФрд░ рдкрд░реАрдХреНрд╖рдг рд╣реИрдВ:
рдореИрдВрдиреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рд╕реНрд╡рддрдВрддреНрд░ рдФрд░ рдЖрддреНрдордирд┐рд░реНрднрд░ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рддрд╛рдХрд┐ рдЕрдЧрд░ рдЖрдк рдЪрд╛рд╣реЗрдВ, рддреЛ рдЖрдк рдХреЗрд╡рд▓ рд╡рд╛рдВрдЫрд┐рдд рдЯреБрдХрдбрд╝рд╛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ (рд╕реНрд░реЛрдд рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реБрдП, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ), рдмрд╛рдХреА рд╕рдм рдХреБрдЫ рдЦреАрдВрдЪреЗ рдмрд┐рдирд╛ред
рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ рдХреЛрдг рд░реЗрдбрд┐рдпрди рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдореАрдЯрд░ рдореЗрдВ рджреВрд░реА, рд╕реЗрдХрдВрдб рдореЗрдВ рд╕рдордпред
рдЕрдм, рд╢реБрд░реВ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:
рд╕рд░реНрд╡реЗрдХреНрд╖рдг рдХрд╛рд░реНрдп
рджреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рднреМрдЧреЛрд▓рд┐рдХ рдХрд╛рд░реНрдп рд╣реИрдВ: рдкреНрд░рддреНрдпрдХреНрд╖ рдФрд░ рд╡реНрдпреБрддреНрдХреНрд░рдоред
рдпрджрд┐ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЕрдкрдиреЗ рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ (рдЕрдХреНрд╖рд╛рдВрд╢ рдФрд░ рджреЗрд╢рд╛рдВрддрд░) рдХреЛ рдЬрд╛рдирддрд╛ рд╣реВрдВ, рдФрд░ рдлрд┐рд░ рдореИрдВ 1000
рдХрд┐рд▓реЛрдореАрдЯрд░ рддрдХ рдЙрддреНрддрд░ рдкреВрд░реНрд╡, рдХреБрдПрдВ рдпрд╛ рдЙрддреНрддрд░ рдХреА рдУрд░ рд╕рдЦреНрддреА рд╕реЗ рдЪрд▓рд╛ред рдЕрдм рдореЗрд░реЗ рдкрд╛рд╕ рдХреНрдпрд╛ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╣реЛрдВрдЧреЗ? - рдПрдХ рдкреНрд░рддреНрдпрдХреНрд╖ рдЬрд┐рдпреЛрдбреЗрд╕рд┐рдХ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ рдХреНрдпрд╛ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╣реИрдВ, рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдПред
рд╡рд╣ рд╣реИ:
рдПрдХ рдкреНрд░рддреНрдпрдХреНрд╖ рдЬрд┐рдпреЛрдбреЗрд╕рд┐рдХ рдХрд╛рд░реНрдп рдПрдХ рдЬреНрдЮрд╛рдд рджреВрд░реА рдФрд░ рдПрдХ рджрд┐рд╢рд╛ рдХреЛрдг рджреНрд╡рд╛рд░рд╛ рдПрдХ рдмрд┐рдВрджреБ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд░рд╣рд╛ рд╣реИредрдЙрд▓рдЯрд╛ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рд╛рде, рд╕рдм рдХреБрдЫ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реИ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдП, рдФрд░ рдлрд┐рд░ рдореИрдВ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реАрдзреА рд░реЗрдЦрд╛ рдореЗрдВ рдЪрд▓рд╛ рдЧрдпрд╛ рдФрд░ рдлрд┐рд░ рд╕реЗ рдЕрдкрдиреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдПред рдореИрдВ рдХрд┐рддрдирд╛ рдЧрдпрд╛ рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЙрд▓рдЯреЗ рдЬрд┐рдпреЛрдбреЗрд╕рд┐рдХ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ред
рд╡рд╣ рдпрд╣ рд╣реИ:
рд╡реНрдпреБрддреНрдХреНрд░рдо рдЬрд┐рдпреЛрдбреЗрд╕рд┐рдХ рд╕рдорд╕реНрдпрд╛ рдЬреНрдЮрд╛рдд рднреМрдЧреЛрд▓рд┐рдХ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╡рд╛рд▓реЗ рджреЛ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд░рд╣реА рд╣реИредрдЖрдк рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдХрдИ рддрд░реАрдХреЛрдВ рд╕реЗ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рд╕рдЯреАрдХрддрд╛ рдФрд░ рдЙрд╕ рдкрд░ рдЦрд░реНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╕рдордп рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред
рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдпрд╣ рдХрд▓реНрдкрдирд╛ рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдкреГрдереНрд╡реА
рд╕рдорддрд▓ рд╣реИ - рдпрд╣ рдПрдХ рдЧреЛрд▓рд╛ рд╣реИред рдЪрд▓реЛ рдЗрд╕реЗ рдЖрдЬрдорд╛рдПрдБред
рдпрд╣рд╛рдБ рдкреНрд░рддреНрдпрдХреНрд╖ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рд╕реВрддреНрд░ рд╣реИ (
рд╕реНрд░реЛрдд ):
рдпрд╣рд╛рдВ
ред
- рд╢реБрд░реБрдЖрддреА рдмрд┐рдВрджреБ рдХрд╛ рдЕрдХреНрд╖рд╛рдВрд╢ рдФрд░ рджреЗрд╢рд╛рдВрддрд░,
- рджрд┐рд╢рд╛рддреНрдордХ рдХреЛрдг, рдЙрддреНрддрд░ рджрд┐рд╢рд╛ рд╕реЗ рдШрдбрд╝реА рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рдорд╛рдкрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЬрдм рдКрдкрд░ рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ),
- рдХреЛрдгреАрдп рджреВрд░реА d / Rред d рдорд╛рдкрд╛ (рдпрд╛рддреНрд░рд╛ рдХреА рдЧрдИ) рджреВрд░реА рд╣реИ, рдФрд░ R рдкреГрдереНрд╡реА рдХреА рддреНрд░рд┐рдЬреНрдпрд╛ рд╣реИред
ред
- рдЗрдЪреНрдЫрд┐рдд рдмрд┐рдВрджреБ рдХрд╛ рдЕрдХреНрд╖рд╛рдВрд╢ рдФрд░ рджреЗрд╢рд╛рдВрддрд░ (рд╣рдо рдЬреЛ рдЖрдП рдереЗ)ред
рдЙрд▓рдЯрд╛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдФрд░ (рдХреЛрдИ рдХрдо рд╕рд░рд▓ рд╕реВрддреНрд░) рдирд╣реАрдВ рд╣реИ:
рдЬрд╣рд╛рдБ
ред
рдФрд░
ред
- рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ, рдЖрд░ - рдкреГрдереНрд╡реА рддреНрд░рд┐рдЬреНрдпрд╛ред
рд╡рд░реНрдгрд┐рдд рд╕реВрддреНрд░реЛрдВ рдХреЛ рд╣рд╛рд╡рд░рд╕рд╛рдЗрди рд╕рдореАрдХрд░рдг рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
C # рдХреЗ рд▓рд┐рдП, рдореИрдВ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рдирд╛рдо рдФрд░ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд▓рд┐рдВрдХ рдкреНрд░рджрд╛рди рдХрд░реВрдБрдЧрд╛ рдЬрд╣рд╛рдБ рд╡реЗ рд╕реНрдерд┐рдд рд╣реИрдВред рд░рд╕реНрдЯ рдХреЗ рд▓рд┐рдП - рдХреЗрд╡рд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдирд╛рдо (рдЪреВрдВрдХрд┐ рдкреВрд░реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реИ), рдФрд░ рдорддрд▓рд╛рдм рдХреЗ рд▓рд┐рдП - рд╕рдВрдмрдВрдзрд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд▓рд┐рдВрдХ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдЯрд▓реИрдм рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди - рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИред
рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдкрдХрдбрд╝ рд╣реИ: рдкреГрдереНрд╡реА рдПрдХ рдХреНрд╖реЗрддреНрд░ рдирд╣реАрдВ рд╣реИ,
рд▓реЗрдХрд┐рди рдПрдХ рд╡рд┐рдорд╛рди рд╣реИ, рдФрд░ рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЗрди рд╕реВрддреНрд░реЛрдВ рдФрд░ / рдпрд╛ рд╕рдорд╛рдзрд╛рди рдХреА рд╕рдЯреАрдХрддрд╛ рдХреА рдкреНрд░рдпреЛрдЬреНрдпрддрд╛ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВред рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреБрдЫ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
1975 рдореЗрдВ рд╡рд╛рдкрд╕, рдереЗрдбрд┐рдпрд╕ рд╡рд┐рдВрд╕реЗрдВрдЯреА
рдиреЗ рдПрдХ рдЧреЛрд▓рд╛рдХрд╛рд░ рдХреА рд╕рддрд╣ рдкрд░ рдкреНрд░рддреНрдпрдХреНрд╖ рдФрд░ рдЙрд▓рдЯреЗ рднреВ-рд╕рдордХрд╛рд▓рд┐рдХ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛
рдПрдХ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рд░реВрдк рд╕реЗ рдХреБрд╢рд▓ рд╕рдорд╛рдзрд╛рди
рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ (
рдЗрд╕реЗ рдХреНрд░рд╛рдВрддрд┐ рдХреЗ рдПрд▓реАрдкреЛрд╕рд┐рдб рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ
, рдХреЙрдорд░реЗрдб! рд░реЛрдЯреЗрд╢рди рдХрд╛ рдПрд▓рд┐рд╕реЙрдЗрдб, рдЬреЛ рд▓рдЧрднрдЧ рдорд╛рдирдХ рд╣реЛ рдЧрдпрд╛ рд╣реИред
рд╡рд┐рдзрд┐ рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рд╡рд┐рд╡рд░рдг рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЦреБрдж рдХреЛ рдХреЗрд╡рд▓
рд╡рд┐рдиреНрд╕реЗрдВрдЯреА рдХреЗ рдореВрд▓ рдХрд╛рдо рдореЗрдВ рднреЗрдЬрдиреЗ рдФрд░ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдПрдХ
рдСрдирд▓рд╛рдЗрди рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рддрдХ рд╕реАрдорд┐рдд рдХрд░ рджреВрдВрдЧрд╛ред
UCNLNav рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ, рд╡рд┐рдиреНрд╕реЗрдиреНрдЯреА рдлрд╝рд╛рд░реНрдореБрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рддреНрдпрдХреНрд╖ рдФрд░ рд╡рд┐рд▓реЛрдо рдЬрд┐рдпреЛрдбреЗрд╕рд┐рдХ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ:
рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рдиреНрд╕реЗрдиреНрдЯреА рдХрд╛ рд╕рдорд╛рдзрд╛рди рдкреБрдирд░рд╛рд╡реГрддреНрдд рд╣реИ, рдлрд┐рд░ рдЕрдзрд┐рдХрддрдо рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ (it_limit) рдкреИрд░рд╛рдореАрдЯрд░ рд╕реВрдЪреА рдореЗрдВ рдореМрдЬреВрдж рд╣реИрдВ, рдФрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдкрд░рд┐рдгрд╛рдо рд╕реВрдЪреА рдореЗрдВ рд╣реИред рд╕реНрдЯреЙрдк рдХрдВрдбреАрд╢рди (рдПрдкреНрд╕рд┐рд▓реЙрди) рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдПрдХ рджрд╣рд▓реАрдЬ рднреА рд╣реИред рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, 10 рд╕реЗ рдЕрдзрд┐рдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рд▓рдЧрднрдЧ рдПрдВрдЯреАрдкреЛрдбрд▓ рдмрд┐рдВрджреБ (рдЬреИрд╕реЗ рдХрд┐ рдЙрддреНрддрд░ рдФрд░ рджрдХреНрд╖рд┐рдг рдзреНрд░реБрд╡) рдХреЗ рд▓рд┐рдП рд╡рд┐рдзрд┐ рдЦрд░рд╛рдм рд░реВрдк рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛрддреА рд╣реИ, рдФрд░ 2000 рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рддрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред
рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдпреЗ рд╕реВрддреНрд░ рдПрдХ рдЧреЛрд▓рд╛рдХрд╛рд░ рдкрд░ рд╕рдорд╛рдзрд╛рди рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рд╕рдВрд░рдЪрдирд╛ рд╣реИ рдЬреЛ рдЗрд╕рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИред
рд╕рднреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рдорд╛рдирдХ рджреАрд░реНрдШрд╡реГрддреНрдд рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред (рдмрд╣реБрдд рдмрд╛рд░, WGS84 [https://en.wikipedia.org/wiki/World_Geodetic_System] рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╣рдо рдЗрд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдВрдЧреЗ:
рд╢реЗрд╖ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдирд╛рдо рдХрд╛рдлреА рд╕реНрдкрд╖реНрдЯ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдПрдХ рджреАрд░реНрдШрд╡реГрддреНрдд рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдЧреЛрд▓реЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдХреНрдпрд╛ рд▓рд╛рдЧрдд рдЖрдПрдЧреА, рдореИрдЯрд▓реИрдм рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдПрдХ
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИред
рдорддрд▓рд╛рдм рдореЗрдВ, рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЗрд╢рд╛рд░реЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХреБрдЫ рднреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдЪреБрдирд╛ред
рдЙрдирдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рддрд░реНрдХ:
1. рд╣рдо рдордирдорд╛рдиреЗ рд╕рдордиреНрд╡рдп рдХреЗ рд╕рд╛рде рдПрдХ рдмрд┐рдВрджреБ рд▓реЗрддреЗ рд╣реИрдВ
sp_lat_rad = degtorad(48.527683); sp_lon_rad = degtorad(44.558815);
рдФрд░ рдПрдХ рдордирдорд╛рдирд╛ рджрд┐рд╢рд╛ (рдореИрдВрдиреЗ рдкрд╢реНрдЪрд┐рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪреБрдирд╛):
fwd_az_rad = 1.5 * pi + (rand * pi / 4 - pi / 8);
2. рд╣рдо рдЗрд╕рд╕реЗ рд▓рдЧрд╛рддрд╛рд░ рдмрдврд╝рддреА рджреВрд░реА рдХреА рдУрд░ рдмрдврд╝рддреЗ рд╣реИрдВред рд╣рдо рддреБрд░рдВрдд рдЪрд░рдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдЪрд░рдг рдЖрдХрд╛рд░ рдХреНрдпреЛрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
n_samples = 10000; step_m = 1000;
3. рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдЧреЛрд▓рд╛рдХрд╛рд░ рдФрд░ рджреАрд░реНрдШрд╡реГрддреНрдд рдкрд░ рд╕реАрдзреА рдЬреНрдпрд╛рдорд┐рддреАрдп рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВ, рд╡рд╛рдВрдЫрд┐рдд рдмрд┐рдВрджреБ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:
[ h_lats_rad(idx), h_lons_rad(idx) ] = Nav_haversine_direct(sp_lat_rad,... sp_lon_rad,... distances(idx),... fwd_az_rad,... el.mjsa_m); [ v_lats_rad(idx), v_lons_rad(idx), v_rev_az_rad, v_its ] = Nav_vincenty_direct(sp_lat_rad,... sp_lon_rad,... fwd_az_rad,... distances(idx),... el,... VNC_DEF_EPSILON, VNC_DEF_IT_LIMIT);
4. рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдЙрд▓рдЯреЗ рдЬрд┐рдпреЛрдбреЗрд╕рд┐рдХ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВ - рд╣рдо рдПрдХ рдЧреЛрд▓реЗ рдФрд░ рдПрдХ рджреАрд░реНрдШрд╡реГрддреНрдд рдкрд░ рдкреНрд░рд╛рдкреНрдд рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ:
[ v_dist(idx) a_az_rad, a_raz_rad, its, is_ok ] = Nav_vincenty_inverse(h_lats_rad(idx),... h_lons_rad(idx),... v_lats_rad(idx),... v_lons_rad(idx),... el,... VNC_DEF_EPSILON, VNC_DEF_IT_LIMIT);
5. рд╣рдо рджреЛрдиреЛрдВ рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрд▓реНрдЯреЗ рд╕реАрдзреЗ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддреЗ рд╣реИрдВ:
[ ip_v_dist(idx) a_az_rad, a_raz_rad, its, is_ok ] = Nav_vincenty_inverse(sp_lat_rad,... sp_lon_rad,... v_lats_rad(idx),... v_lons_rad(idx),... el,... VNC_DEF_EPSILON, VNC_DEF_IT_LIMIT); ip_h_dist(idx) = Nav_haversine_inverse(sp_lat_rad,... sp_lon_rad,... v_lats_rad(idx),... v_lons_rad(idx),... el.mjsa_m);
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рдпрд╣ рдХреНрд░рдо рдкрд╣рд▓реЗ рдПрдХ рдЪрд░рдг = 1000 рдореАрдЯрд░ рдФрд░ рдлрд┐рд░ рдПрдХ рдЪрд░рдг = 1 рдореАрдЯрд░ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ (рдЕрдХреНрд╖рд╛рдВрд╢ рдФрд░ рджреЗрд╢рд╛рдВрддрд░) рдореЗрдВ рдкреНрд░рддреНрдпрдХреНрд╖ рдирд┐рд░реНрдгрдпреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреИрд╕реЗ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рдо "рдбреЗрд▓реНрдЯрд╛" рд╡реИрдХреНрдЯрд░ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╕рдм рдХреБрдЫ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдорддрд▓рд╛рдм рдкрд░ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ:
d_lat_deg = radtodeg(v_lats_rad - h_lats_rad);
рдЕрдХреНрд╖ рдкрд░, рдлрд░рд╕реАрд╕рд╛ рдХреЛ рд▓рдШреБрдЧрдгрдХреАрдп рдкреИрдорд╛рдиреЗ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реА рджреВрд░реА 1 рд╕реЗ 10,000 рдХрд┐рдореА рддрдХ рднрд┐рдиреНрди рд╣реЛрддреА рд╣реИ:
figure semilogx(distances, d_lat_deg, 'r'); title('Direct geodetic problem: Vincenty vs. Haversine (Latitude difference)'); xlabel('Distance, m'); ylabel('Difference, ┬░'); figure semilogx(distances, d_lon_deg, 'r'); title('Direct geodetic problem: Vincenty vs. Haversine (Longitude difference)'); xlabel('Distance, m'); ylabel('Difference, ┬░');
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рдЕрдХреНрд╖рд╛рдВрд╢ рдХреЗ рд▓рд┐рдП рдРрд╕реЗ рдЧреНрд░рд╛рдлрд╝ рдорд┐рд▓рддреЗ рд╣реИрдВ:

рдФрд░ рджреЗрд╢рд╛рдВрддрд░ рдХреЗ рд▓рд┐рдП:

рдореИрдВ рдбрд┐рдЧреНрд░реА рдореЗрдВ рдирд╣реАрдВ рд╕рдордЭрддрд╛, рдореБрдЭреЗ рд╣рдореЗрд╢рд╛ "рдЖрдВрдЦ рд╕реЗ" рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдХреА рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХрд╛ 1 ┬░ рдФрд╕рддрди 100-110 рдХрд┐рдореА рд╣реЛрддрд╛ рд╣реИред рдФрд░ рдЕрдЧрд░ рддреНрд░реБрдЯрд┐ рдПрдХ рдорд┐рд▓рд┐рдпрди рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ рдпрд╛ рдХрдо рд╕реЗ рдХрдо рд╕реМ рд╣рдЬрд╛рд░ рдбрд┐рдЧреНрд░реА рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ - рдпрд╣ рдмреБрд░реА рдЦрдмрд░ рд╣реИредрдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдЧреЛрд▓реЗ рдФрд░ рджреАрд░реНрдШрд╡реГрддреНрдд рдХреЗ рд▓рд┐рдП рд╕реВрддреНрд░реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкреНрд░рддреНрдпреЗрдХ рдмрд┐рдВрджреБ рдкрд░ рдкреНрд░рд╛рдкреНрдд рдмрд┐рдВрджреБ рдФрд░ рдмрд┐рдВрджреБ рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред рд╣рдо рд╡рд┐рдиреНрд╕реЗрдиреНрдЯреА рдХреЗ рд╕реВрддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреВрд░реА рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ (рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд╣реИ - рд▓реЗрдЦрдХ рдорд┐рд▓реАрдореАрдЯрд░ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХрд╛ рд╡рд╛рджрд╛ рдХрд░рддрд╛ рд╣реИ)ред рдореАрдЯрд░ рдФрд░ рдХрд┐рд▓реЛрдореАрдЯрд░ рдореЗрдВ рдЪрд╛рд░реНрдЯ рдЕрдзрд┐рдХ рдореВрд░реНрдд рдФрд░ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ:
figure semilogx(distances, v_dist, 'r'); title('Direct geodetic problem: Vincenty vs. Haversine (Endpoint difference by Vincenty)'); xlabel('Distance, m'); ylabel('Difference, m');
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рдирд┐рдореНрди рдЪрд┐рддреНрд░ рдорд┐рд▓рддреЗ рд╣реИрдВ:

рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ 10,000 рдХрд┐рдореА рдХреА рд░реЗрдВрдЬ рдореЗрдВ 10 рдХрд┐рдореА рдХреА рджреВрд░реА рддрдп рдХрд░рддреА рд╣реИред
рдпрджрд┐ рдЕрдм рд╕рдм рдХреБрдЫ рдПрдХ рдХрджрдо рдХреЗ рд▓рд┐рдП рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ 1000 рдЧреБрдирд╛ рдЫреЛрдЯрд╛ рд╣реЛрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рдЬрдм рдПрдХреНрд╕ рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде рдкреВрд░реА рд░реЗрдВрдЬ 10,000 рдХрд┐рдореА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ 10 рдХрд┐рдореА рд╣реИ, рддреЛ рдЪрд┐рддреНрд░ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:

рдпрд╛рдиреА 10 рдХрд┐рдореА рдХреА рджреВрд░реА рдкрд░ рдХреЗрд╡рд▓ 20 рдореАрдЯрд░ рдХреА рджреВрд░реА рддрдп рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ 1-2 рдореАрдЯрд░ рдХреЗ рд▓рд┐рдП рд╕реВрддреНрд░ рд▓рдЧрднрдЧ 1000 рдореАрдЯрд░ рдХреА рджреВрд░реА рдкрд░ рд╣реА рд╡рд┐рдЪрд░рдг рдХрд░рддреЗ рд╣реИрдВред
рдХрдкреНрддрд╛рди рдХрд╛ рдирд┐рд╖реНрдХрд░реНрд╖ рд╕реНрдкрд╖реНрдЯ рд╣реИ: рдпрджрд┐ рдХреНрд╖реЗрддреНрд░ рдкрд░ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рд╕реВрддреНрд░реЛрдВ рдХреА рд╕рдЯреАрдХрддрд╛ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рддреЛ рд╣рдо рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ - рд╡реЗ рд╕рд░рд▓ рдФрд░ рддреЗрдЬ рд╣реИрдВред
рдЦреИрд░, рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдорд┐рд▓реАрдореАрдЯрд░ рд╕рдЯреАрдХрддрд╛ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ, 2013 рдореЗрдВ рдиреИрдиреЛрдореАрдЯрд░ (!) рд╕рдЯреАрдХрддрд╛ рдХреЗ рд▓рд┐рдП рднреВрдЧрд░реНрднрд┐рдХ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реБрдП рдПрдХ
рдХрд╛рдо рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рддреБрд░рдВрдд рд╡рд╣рд╛рдВ рдкрд╣реБрдВрдЪ рд╕рдХрддрд╛ рд╣реВрдВ рдЬрд╣рд╛рдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ - рдЧреБрд░реБрддреНрд╡рд╛рдХрд░реНрд╖рдг-рд▓рд╣рд░ рдбрд┐рдЯреЗрдХреНрдЯрд░реЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп рднреВ-рд╕рд░реНрд╡реЗрдХреНрд╖рдг рд╕рд░реНрд╡реЗрдХреНрд╖рдгреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдпрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╢рд╛рдирджрд╛рд░)ред
рдЕрдм рд╕рдмрд╕реЗ рд╕реНрд╡рд╛рджрд┐рд╖реНрдЯ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ:
рдиреЗрд╡рд┐рдЧреЗрд╢рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди
рдлрд┐рд▓рд╣рд╛рд▓, рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИ:
- 2 рдбреА рдФрд░ 3 рдбреА рдореЗрдВ рдЬреНрдЮрд╛рдд рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рд╕рд╛рде рдмрд┐рдВрджреБ рд╕реЗ рджреВрд░реА рддрдХ рд╡рд╕реНрддреБ рдХрд╛ рд╕реНрдерд╛рдиред рдЗрд╕реЗ рд╣рдо TOA рдХрд╣рддреЗ рд╣реИрдВ - рдЖрдЧрдорди рдХрд╛ рд╕рдордп (рдпрд╛ рдЕрдзрд┐рдХ рд╕рд╣реА рдврдВрдЧ рд╕реЗ, TOF - рдЙрдбрд╝рд╛рди рдХрд╛ рд╕рдордп)
- 2 рдбреА рдФрд░ 3 рдбреА рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдордп рдореЗрдВ рдЕрдВрддрд░ рд╕реЗ рд╡рд╕реНрддреБ рдХрд╛ рд╕реНрдерд╛рдиред рдЗрд╕реЗ рд╣рдо TDOA (рдЯрд╛рдЗрдо рдбрд┐рдлрд░реЗрдВрд╕ рдСрдл рдЕрд░рд╛рдЗрд╡рд▓) рдХрд╣рддреЗ рд╣реИрдВред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдо рд╣рдореЗрд╢рд╛ рд╕рд┐рдЧреНрдирд▓ рдХреЗ рдЖрдЧрдорди рдХреА рд╕реАрдорд╛рдУрдВ рдпрд╛ рд╕рдордп рдХреЛ рдорд╛рдкрддреЗ рд╣реИрдВ (рдФрд░, рддрджрдиреБрд╕рд╛рд░, рдЙрдирдХреЗ рдЕрдВрддрд░) рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде, рд╢реЛрд░ рдХреЗ рд╕рд╛рдеред рдЗрд╕рд▓рд┐рдП, рдЕрдзрд┐рдХрд╛рдВрд╢ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдиреЗрд╡рд┐рдЧреЗрд╢рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдиреНрдпреВрдирддрдордХрд░рдг рд╣реИред рдХрдо рд╕реЗ рдХрдо рд╡рд░реНрдЧ рд╡рд┐рдзрд┐
рдФрд░ рд╡рд╣ рд╕рдм рд╣реИ ред
рдЬрд┐рд╕реЗ рдХрдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЙрд╕реЗ рдЕрд╡рд╢рд┐рд╖реНрдЯ рдлрд▓рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
TOA рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
argmin \ epsilon (x, y, z) = \ sum_ {i = 1} ^ {N} [\ sqrt {(x-x_i) ^ 2 + (y-y_i) ^ 2 + (z_i_i) ^ 2 )} - r_i] ^ 2
рдЬрд╣рд╛рдБ
- рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдмрд┐рдВрджреБ рдХреЗ рд▓рд┐рдП рдЕрд╡рд╢рд┐рд╖реНрдЯ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдореВрд▓реНрдп
; N рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╡рд╛рд▓реЗ рдирд┐рдпрдВрддреНрд░рдг рдмрд┐рдВрджреБрдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИ
ред
- рд╕рдВрджрд░реНрдн рдмрд┐рдВрджреБрдУрдВ рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╡рд╕реНрддреБ рддрдХ рджреВрд░реА рдХреЛ рдорд╛рдкрд╛ред
рдФрд░ рдЗрд╕ рддрд░рд╣ TDOA рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП:
рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕рдорд╛рди рд╣реИ, рдХреЗрд╡рд▓ рд╕рдВрджрд░реНрдн рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЬреЛрдбрд╝реЗ рдФрд░ рдЗрд╕реА рдЖрдЧрдорди рдХреЗ рд╕рдордп рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдФрд░
, рдФрд░
- рд╕рдВрдХреЗрдд рдкреНрд░рд╕рд╛рд░ рдЧрддрд┐ред
рдФрд░ рдЗрд╕рд▓рд┐рдП рдпреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб рдореЗрдВ рджрд┐рдЦрддреЗ рд╣реИрдВ:
рдЬрдВрдЧ рдкрд░: pub fn eps_toa3d(base_points: &Vec<(f64, f64, f64, f64)>, x: f64, y: f64, z: f64) -> f64 { let mut result: f64 = 0.0; for base_point in base_points { result += (((base_point.0 - x).powi(2) + (base_point.1 - y).powi(2) + (base_point.2 - z).powi(2)).sqrt() - base_point.3).powi(2); } result } pub fn eps_tdoa3d(base_lines: &Vec<(f64, f64, f64, f64, f64, f64, f64)>, x: f64, y: f64, z: f64) -> f64 { let mut result: f64 = 0.0; for base_line in base_lines { result += (((base_line.0 - x).powi(2) + (base_line.1 - y).powi(2) + (base_line.2 - z).powi(2)).sqrt() - ((base_line.3 - x).powi(2) + (base_line.4 - y).powi(2) + (base_line.5 - z).powi(2)).sqrt() - base_line.6).powi(2); } result }
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рджреЛрдиреЛрдВ рдлрд╝рдВрдХреНрд╢рди рдирд┐рдпрдВрддреНрд░рдг рдЕрдВрдХ рдпрд╛ рд▓рд╛рдЗрдиреЛрдВ рдХреА рдПрдХ рдЪрд░ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдХрд╛рд░реНрдп рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЕрд╡рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рднреАред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рди рдХреЗрд╡рд▓ рд╕реНрдерд╛рди рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЕрд╡рд╢рд┐рд╖реНрдЯ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рдХреЛрдг рд╣реЛрдВрдЧреЗред
рдЖрдЗрдП рд╣рдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдЖрдВрддрд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдзреНрдпрд╛рди рджреЗрдВ
рдЗрд╕ рд╕реНрддрд░ рдкрд░, рд▓рд╛рдЗрдмреНрд░реЗрд░реА 2 рдбреА рдФрд░ 3 рдбреА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреА рд╣реИ рдФрд░ рд╕реЙрд▓реНрд╡рд░ рдЦреБрдж рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдЬрд╛рдирдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рд╣реИ рдХрд┐ рдиреНрдпреВрдирддрдо рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреНрдпрд╛ рдкрд╕рдВрдж рд╣реИред рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕реЙрд▓реНрд╡рд░ рдХреЗ рджреЛ рдкрд╣рд▓реВ рд╣реЛрддреЗ рд╣реИрдВ: 2 рдбреА рдФрд░ 3 рдбреА
рд╕реЙрд▓рд░реНрд╕ ,
рдиреЗрд▓реНрдбрд░-рдореАрдб рд╡рд┐рдзрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдпрд╛, рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕реЗ рд╕рд┐рдореНрдкрд▓реЗрдХреНрд╕ рд╡рд┐рдзрд┐ рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЪреВрдБрдХрд┐ рдЗрд╕ рд╡рд┐рдзрд┐ рдореЗрдВ рд╡реНрдпреБрддреНрдкрддреНрддрд┐ рдХреА рдЧрдгрдирд╛ (рддрдерд╛рдХрдерд┐рдд
рд╡реНрдпреБрддреНрдкрдиреНрди-рдореБрдХреНрдд рдиреНрдпреВрдирддрдордХрд░рдг ) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЕрд╡рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╕рд╛рде рд╣реА, рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдирд┐рдпрдВрддреНрд░рдг рдмрд┐рдВрджреБрдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдХреЛрдИ рдКрдкрд░реА рд╕реАрдорд╛ рдирд╣реАрдВ рд╣реИред
C # рдФрд░ Rust рдореЗрдВ, 2D рдФрд░ 3D рд╕реЙрд▓реНрд╡рд░ рдЬреЗрдиреЗрд░рд┐рдХ рддрд░реАрдХреЗ рд╣реИрдВ:
public static void NLM2D_Solve<T>(Func<T[], double, double, double, double> eps, T[] baseElements,...
рд╕реЙрд▓реНрд╡рд░ рдХреЛ рдЦреБрдж рдмреБрд▓рд╛рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
public static void TOA_NLM2D_Solve(TOABasePoint[] basePoints, double xPrev, double yPrev, double z, int maxIterations, double precisionThreshold, double simplexSize, out double xBest, out double yBest, out double radialError, out int itCnt) { NLM2D_Solve<TOABasePoint>(Eps_TOA3D, basePoints, xPrev, yPrev, z, maxIterations, precisionThreshold, simplexSize, out xBest, out yBest, out radialError, out itCnt); }
рдЬрдВрдЧ рдкрд░ ...
pub fn nlm_2d_solve<T>(eps: Eps3dFunc<T>, base_elements: &Vec<T>...
рд╕рдм рдХреБрдЫ рд╕рдорд╛рди рд╣реИ, рднрд╛рд╖рд╛ рдХреЗ рд╡рд╛рдХреНрдп-рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд▓рд┐рдП рд╕рдЯреАрдХ рд╣реИред
рдорд╛рдЯреЗрд▓рд╛рдмреЗ рдореЗрдВ, рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕реНрд╡реИрдЪреНрдЫрд┐рдХрддрд╛ рдХреЗ рд╕рд╛рде, рд╕реЙрд▓реНрд╡рд░ рдХреЛ рдЦреБрдж рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЙрд╕рдХреЗ рд▓рд┐рдП рдХреМрди рд╕реЗ рдореВрд▓ рддрддреНрд╡ рдкрд╛рд░рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕реНрд╡рдпрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЕрд╡рд╢рд┐рд╖реНрдЯ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд▓рд┐рдВрдХ рдФрд░ рд╕реЙрд▓реНрд╡рд░ рдХреЛ рджрд┐рдП рдЧрдП рд╕рдорд░реНрдерди рддрддреНрд╡реЛрдВ рдХреЗ рд╕реЗрдЯ рд╕рдВрдЧрдд рд╣реИрдВ:
function [ x_best, y_best, rerr, it_cnt ] = Nav_nlm_2d_solve(eps, base_elements, ....
рдФрд░ рддрджрдиреБрд╕рд╛рд░, рд╕реЙрд▓реНрд╡рд░ рдХреЛ рдХреЙрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
function [ x_best, y_best, rerr, it_cnt ] = Nav_toa_nlm_2d_solve(base_points, x_prev, y_prev, z,... max_iterations, precision_threshold, simplex_size) [ x_best, y_best, rerr, it_cnt ] = Nav_nlm_2d_solve(@Nav_eps_toa3d, base_points, x_prev, y_prev, z,... max_iterations, precision_threshold, simplex_size); end
рдЯреАрдУрдП рдФрд░ рдЯреАрдбреАрдУрдП рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд╕рдорд╛рдзрд╛рди
рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд
рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдордЯрд▓рдм рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИред
2D рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рд╕рдВрдпреЛрдЧ рд╕реЗ рдирд╣реАрдВ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ - рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдХреИрд╕реЗ рддреАрди рдЖрдпрд╛рдореА рдЕрд╡рд╢рд┐рд╖реНрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмрд╕ рдФрд░ рд╕реВрдЪрдирд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП =)
So. рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдРрд╕реЗ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
рд╡рд╛рдВрдЫрд┐рдд рдмрд┐рдВрджреБ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
рдЗрд╕рдХреЗ рдмрд╛рдж, рдирд┐рдпрдВрддреНрд░рдг рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рд░рдЦреЗрдВ, рд╡рд╛рдВрдЫрд┐рдд рд╕реЗ рджреВрд░реА рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВ рдФрд░ рд╕рдм рдХреБрдЫ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ:
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рдирд┐рдореНрди рдЪрд┐рддреНрд░ рдорд┐рд▓рддреЗ рд╣реИрдВ:

рджреВрд░реА рдорд╛рдк рдореЗрдВ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЬреЛрдбрд╝реЗрдВ:
рд╣рдо рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкрд░рд┐рд╕реАрдорди рдХреЗ рд╕рд╛рде рдЪрдпрдирд┐рдд рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рдЕрд╡рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ - рдЕрдиреНрдпрдерд╛, рдЧрдгрдирд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╕рдордп рд▓реЗ рд╕рдХрддреА рд╣реИред рдореИрдВрдиреЗ рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЖрдХрд╛рд░ 1000 x 1000 рдореАрдЯрд░ рдЪреБрдирд╛ рд╣реИ рдФрд░ рдореИрдВ 10 рдореАрдЯрд░ рдХреЗ рдмрд╛рдж рдкреВрд░реЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЕрд╡рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рдорд╛рдирддрд╛ рд╣реВрдВ:
рдпрд╣рд╛рдБ рдЕрд╡рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рд╣реИ:

рдмреЗрд╢рдХ, рдореИрдВ рдереЛрдбрд╝рд╛ рдЪрд╛рд▓рд╛рдХ рдерд╛ - рдирд┐рдпрдВрддреНрд░рдг рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╕реНрдерд╛рди рдФрд░ рд╡рд╛рдВрдЫрд┐рдд рдПрдХ рдХреЛ рдЪреБрдирд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╡реЗ рд╣рдореЗрд╢рд╛ рдЕрдВрджрд░ рд╡рд╛рдВрдЫрд┐рдд рдмрд┐рдВрджреБ рдХреЗ рд╕рд╛рде рдПрдХ рдЙрддреНрддрд▓ рдЖрдХреГрддрд┐ рдмрдирд╛ рд╕рдХреЗрдВред рдореЛрдЯреЗ рддреМрд░ рдкрд░ рдЗрд╕рдХреЗ рдХрд╛рд░рдг, рд╕рддрд╣ рдореЗрдВ рдПрдХ рдиреНрдпреВрдирддрдо рд╣реИ, рдЬреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╣реИред
рдПрдХ рдЕрднрд┐рдорд╛рдиреА рдкрд╛рдардХ рдЪреАрдЬреЛрдВ рдХреЗ рдЗрд╕ рдХреНрд░рдо рдХреЛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рджреБрд░реНрдШрдЯрдирд╛ рд╕реЗ рд▓рдВрдЧрд░ рдмрд┐рдВрджреБрдУрдВ рдФрд░ рд╡рд╛рдВрдЫрд┐рдд рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдЕрдм рдЗрд╕реЗ рд╕рднреА рдорд┐рд▓рдХрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВред рдпрд╣ рд╕рддрд╣ рдкрд░ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ - рдКрд░реНрдзреНрд╡рд╛рдзрд░ рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореВрд▓реНрдпред рдЗрд╕рд▓рд┐рдП, рджреЛ-рдЖрдпрд╛рдореА рд╕реНрд▓рд╛рдЗрд╕ рдкрд░ рд╕рдм рдХреБрдЫ рдЦреАрдВрдЪрдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ:
figure hold on contourf(surf_a, surf_a, error_surface_toa, contour_levels); plot(actual_target_x, actual_target_y,... 'p',... 'MarkerFaceColor', 'red',... 'MarkerEdgeColor', 'blue',... 'MarkerSize', 15); plot(base_points(N, 1), base_points(N, 2),... 'o',... 'MarkerFaceColor', 'green',... 'MarkerEdgeColor', 'blue',... 'MarkerSize', 15); [ x_prev, y_prev ] = Nav_toa_circles_1d_solve(base_points, actual_target_z, pi / 180, 10, 0.1); [ x_best, y_best, rerr, it_cnt ] = Nav_toa_nlm_2d_solve(base_points, x_prev, y_prev, actual_target_z,... max_iterations, precision_threshold, simplex_size); plot(x_best, y_best,... 'd',... 'MarkerFaceColor', 'yellow',... 'MarkerEdgeColor', 'blue',... 'MarkerSize', 7); title(sprintf('TOA Solution: Residual function. Target location estimated with E_{radial} = %.3f m in %d iterations', rerr, it_cnt)); xlabel('X coordinate, m'); ylabel('Y coordinate, m'); legend('Residual function value', 'Actual target location', 'Base points', 'Estimated target location');
рдкрд░рд┐рдгрд╛рдо рдХреБрдЫ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

рд░реЗрдбрд┐рдпрд▓ рддреНрд░реБрдЯрд┐ рдХреЛ рдЧреНрд░рд╛рдлрд╝ рд╣реЗрдбрд░ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЕрд╡рд╢рд┐рд╖реНрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрддрд┐рдо рдореВрд▓реНрдп рдХреА рдЬрдбрд╝ред рдЧреНрд░рд╛рдл рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдерд╛рди рдФрд░ рдЧрдгрдирд╛ рдХреА рдЧрдИ рдЧрдгрдирд╛ рдЕрдЪреНрдЫреЗ рд╕рдордЭреМрддреЗ рдореЗрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкреИрдорд╛рдиреЗ рд╣рдореЗрдВ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рддрдиреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рд╣рдо рд╡рд╛рдВрдЫрд┐рдд рдмрд┐рдВрджреБ рдХреА рдЧрдгрдирд╛ рд╕реНрдерд╛рди рдФрд░ рдЙрд╕рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдерд╛рди рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ:
figure hold on grid on dx = actual_target_x - x_best; dy = actual_target_y - y_best; plot(0, 0,... 'p',... 'MarkerFaceColor', 'red',... 'MarkerEdgeColor', 'blue',... 'MarkerSize', 15); plot(dx, dy,... 'd',... 'MarkerFaceColor', 'yellow',... 'MarkerEdgeColor', 'blue',... 'MarkerSize', 7); plot(-dx * 2, -dy * 2, '.w'); plot(dx * 2, dy * 2, '.w'); d_delta = Nav_dist_3d(actual_target_x, actual_target_y, actual_target_z, x_best, y_best, actual_target_z); title(sprintf('TOA Solution: Actual vs. Estimated location, distance: %.3f m', d_delta)); xlabel('X coordinate, m'); ylabel('Y coordinate, m'); legend('Actual target location', 'Estimated target location');
рдпрд╣рд╛рдБ рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:

рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рддреНрд░реБрдЯрд┐ рдХрд╛ рдЖрдпрд╛рдо рд╣реИ - рд░реЗрдВрдЬ рдХрд╛ 1%, рдФрд╕рддрди, рд╕реАрдорд╛ ~ 200-400 рдореАрдЯрд░ рд╣реИ, рдЕрд░реНрдерд╛рддред рддреНрд░реБрдЯрд┐ рдЖрдпрд╛рдо рд▓рдЧрднрдЧ 2-4 рдореАрдЯрд░ рд╣реИред рд╕рдорд╛рдзрд╛рди рдХреА рдЦреЛрдЬ рдХрд░рддреЗ рд╕рдордп, рд╣рдордиреЗ рдХреЗрд╡рд▓ 70 рд╕реЗрдВрдЯреАрдореАрдЯрд░ рдХреА рдЧрд▓рддреА рдХреАред
рдЕрдм, рд╕рд╛рджреГрд╢реНрдп рджреНрд╡рд╛рд░рд╛, рдЙрд╕реА рдбреЗрдЯрд╛ рдкрд░ TDOA рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдпрд╣ рджрд┐рдЦрд╛рд╡рд╛ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рд╣рдо рдХреЗрд╡рд▓ рд╕рдВрдХреЗрдд рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд╡рд╛рдВрдЫрд┐рдд рдмрд┐рдВрджреБ рд╕реЗ рд╕рдВрджрд░реНрдн рдмрд┐рдВрджреБрдУрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд╕рдордп рдХреЛ рдЬрд╛рдирддреЗ рд╣реИрдВ (рдпрд╛ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛) - рд╣рдо рдХреЗрд╡рд▓ рд╕рдВрдХреЗрдд рдкреНрд░рд╕рд╛рд░ рдХреА рдЧрддрд┐ рд╕реЗ рдЕрдкрдиреА рджреВрд░реА рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВ - рдХреЗрд╡рд▓ рдЖрдкрдХреЗ рдЕрдВрддрд░ рдФрд░ рдкреВрд░реНрдг рдорд╛рди рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИрдВред
рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд╕рддрд╣ рдмрдирд╛рдПрдБ рдФрд░ рдбреНрд░рд╛ рдХрд░реЗрдВ:
error_surface_tdoa = zeros(n_tiles, n_tiles); for t_x = 1:n_tiles for t_y = 1:n_tiles error_surface_tdoa(t_x, t_y) = Nav_eps_tdoa3d(base_lines,... t_x * tile_size_m - area_width_m / 2,... t_y * tile_size_m - area_width_m / 2,... actual_target_z); end end figure surf(surf_a, surf_a, error_surface_tdoa); title('TDOA Solution: Residual function'); xlabel('X coordinate, m'); ylabel('Y coordinate, m'); view(45, 15);
рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдирд┐рдХрд▓рддрд╛ рд╣реИ:

рдФрд░ рд╕рдВрджрд░реНрдн рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд╕рд╛рде рдКрдкрд░ рд╕реЗ рджреГрд╢реНрдп, рд╡рд╛рдВрдЫрд┐рдд рдмрд┐рдВрджреБ рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдФрд░ рдЧрдгрдирд╛ рдХреА рдЧрдИ рд╕реНрдерд┐рддрд┐:

рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдФрд░ рдЧрдгрдирд╛ рдХрд┐рдП рдЧрдП рд╕реНрдерд╛рди рдХреЗ рдмреАрдЪ рд╡рд┐рд╕рдВрдЧрддрд┐:

рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЯреАрдбреАрдУрдП рд╕рдорд╛рдзрд╛рди рдЯреАрдУрдП рд╕рдорд╛рдзрд╛рди рд╕реЗ рднреА рдмреЗрд╣рддрд░ рдирд┐рдХрд▓рд╛ - рдкреВрд░реНрдг рддреНрд░реБрдЯрд┐ 0.3 рдореАрдЯрд░ рд╣реИред
рдореЙрдбрд▓ рдореЗрдВ рдЕрдЪреНрдЫрд╛ - рдЖрдк рд╣рдореЗрд╢рд╛ рдпрд╣ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рдмрд┐рдВрджреБ рдХрд╣рд╛рдБ рд╕реНрдерд┐рдд рд╣реИред рдпрд╣ рд╣рд╡рд╛ рдореЗрдВ рдмрджрддрд░ рд╣реИ - рд╢рд╛рдпрдж рдХрдИ рдмрд┐рдВрджреБ рд╣реИрдВ, рдкрд╛рдиреА рдХреЗ рдиреАрдЪреЗ рдЖрдкрдиреЗ рдЕрднреА рдХреБрдЫ рдЧрдгрдирд╛ рдХреА рд╣реИ рдФрд░ рд╕рднреА - 99% рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдерд╛рди рд╕реЗ рд╡рд┐рдЪрд▓рди рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ (рдЗрд╕ рд╕реНрдерд╛рди) рднреА рдкрд╣рд▓реЗ рдЧрдгрдирд╛ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред
рдЕрдм, рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдЕрдкрдиреЗ рдирдП рдЬреНрдЮрд╛рди рдХреЛ рдЬрд┐рдпреЛрдбреЗрдЯрд┐рдХ рдФрд░ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░реЗрдВрдЧреЗред
рдЕрдВрддрд┐рдо рд░рд╛рдЧ
рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдореЗрдВ рд╕реНрдерд┐рддрд┐ рдХреЗ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдХрд░реАрдм:
- рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рд╕рдВрджрд░реНрдн рдмрд┐рдВрджреБрдУрдВ рдореЗрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЬреАрдПрдирдПрд╕рдПрд╕ рд░рд┐рд╕реАрд╡рд░ рд╣реИрдВ рдФрд░ рд╣рдо рдХреЗрд╡рд▓ рдЙрдирдХреЗ рднреМрдЧреЛрд▓рд┐рдХ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдЬрд╛рдирддреЗ рд╣реИрдВ
- рдКрд░реНрдзреНрд╡рд╛рдзрд░ рд╕рдордиреНрд╡рдп рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЕрдЬреНрдЮрд╛рдд рд╣реИ (3D рд╕рдорд╕реНрдпрд╛)
- рд╣рдо рд╡рд╛рдВрдЫрд┐рдд рдпрд╛ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рд╕рдВрджрд░реНрдн рдмрд┐рдВрджреБрдУрдВ рд╕реЗ рд╕рдВрдХреЗрдд рдХреЗ рдХреЗрд╡рд▓ рдЖрдЧрдорди рдХреЗ рд╕рдордп рдХреЛ рдорд╛рдкрддреЗ рд╣реИрдВ
рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рддреАрдиреЛрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиреЛрдВ рдореЗрдВ рд╕рдмрд╕реЗ рд╣рд╛рд▓рд┐рдпрд╛ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореИрдВ рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ рдЬрдВрдЧ рд╕реЗ рд╡рдВрдЪрд┐рдд рд╣реВрдВ, рдФрд░ рдореИрдВ рдЗрд╕ рдкрд░ рдЕрдВрддрд┐рдо рдЙрджрд╛рд╣рд░рдг рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реВрдВрдЧрд╛ред
рддреЛ, рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рд╕рдмрд╕реЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдкрд░реАрдХреНрд╖рдгред рд╡рд╛рдВрдЫрд┐рдд рдмрд┐рдВрджреБ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ рдкрд╛рд░реНрдХ рдореЗрдВ рдПрдХ рдЬрдЧрд╣ рдЪреБрдиреА, рдЬрд╣рд╛рдВ рдореИрдВ рдЕрдХреНрд╕рд░ рдХреБрддреНрддреЗ рдХреЗ рд╕рд╛рде рдЪрд▓рддрд╛ рд╣реВрдВред
#[test] fn test_tdoa_locate_3d() { let el: Ellipsoid = Ellipsoid::from_descriptor(&WGS84_ELLIPSOID_DESCRIPTOR); let base_number = 4;
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдорд╛рд░реЗ рдкрд╛рд╕:
рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдерд╛рди (рд▓реИрдЯ, рд▓реЛрди, рдЬреЗрдб): 48.513724 44.553248 25
рдкрд░рд┐рдХрд▓рд┐рдд рд╕реНрдерд┐рддрд┐ (рд▓реИрдЯ, рд▓реЛрди, рдЬреЗрдб): 48.513726 44.553252 45.6
рд╕рддрд╣ рдкрд░ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА (рдПрдо): 0.389
Z рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ (m) рдореЗрдВ рдЕрдВрддрд░: 20.6
"рдпреЛрдЬрдирд╛" рдореИрдЪ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ, рддреНрд░реБрдЯрд┐ рдХреЗрд╡рд▓ 40 рд╕реЗрдВрдЯреАрдореАрдЯрд░ рд╣реИ, рдФрд░ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рд╕рдордиреНрд╡рдп 20 рдореАрдЯрд░ рд╣реИред рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд╛рдардХреЛрдВ рдХреЛ рд▓рдЧрддрд╛ рд╣реИ =)
рдкреБрдирд╢реНрдЪ
рд╡рд░реНрдгрд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдПрдХ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рд╢реИрдХреНрд╖рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдореИрдВ рдЖрдЧреЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдФрд░ рдлрд┐рд░ рд╕реЗ рднрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВред рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╕реА рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рд╡реНрдпрд╛рдкрдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рд▓рд┐рдЦрдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред
рдЗрд╕ рдкрд░, рдореБрдЭреЗ рдЕрдкрдирд╛ рдзреНрдпрд╛рди рд░рдЦрдиреЗ рджреЗрдВ, рдЖрдкрдХреЗ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдореИрдВ рдХрд┐рд╕реА рднреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдЕрд╕реАрдо рд░реВрдк рд╕реЗ рдЦреБрд╢ рд░рд╣реВрдВрдЧрд╛редрдЖрд╢рд╛ рд╣реИ рдХрд┐ рд▓реЗрдЦ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕рд╣рд╛рдпрдХ рд╣реЛрдВрдЧреЗредрдХрд┐рд╕реА рднреА рддреНрд░реБрдЯрд┐ (рд╡реНрдпрд╛рдХрд░рдгрд┐рдХ рдФрд░ рддрд╛рд░реНрдХрд┐рдХ) рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЗрдВ - рдореИрдВ рдЗрд╕реЗ рд╕рд╣реА рдХрд░реВрдВрдЧрд╛редрдкреА рдкреА рдПрд╕
рдмрд╕ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣рд╛рдБ рдСрдирд▓рд╛рдЗрди (рдФрд░ рди рдХреЗрд╡рд▓) рдореИрдЯрд▓реИрдм / рдСрдХреНрдЯреЗрд╡ рджреБрднрд╛рд╖рд┐рдпреЛрдВ рдХреА рдПрдХ рдХрдбрд╝реА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдореИрдВ рд╕реНрд╡рдпрдВ рдХрд░рддрд╛ рд╣реВрдВ: