
рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рд╣рдордиреЗ рдкреБрд░рд╛рдиреА рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдХреЛ рдЖрдзреБрдирд┐рдХ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛, рдЬреЛ рдХрд┐ рдХрдЯреМрддреА рдХреЗ рддрд╣рдд рдкрдврд╝реА рдЧрдИ рдереАрдВред
рд╕рдВрд╡рд░реНрдзрд┐рдд рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛
рд╢рд╣рд░ рдЧрд╛рдЗрдб рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрд╡рд░реНрдзрд┐рдд рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдРрдк рдПрдХ рдкреНрд░рд╕рд┐рджреНрдз рд╡рд┐рд╖рдп рд╣реИ рдФрд░ рдХрдИ рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдЖрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдпрд╣ рджрд┐рд╢рд╛ рдкрд╣рд▓реЗ рдореЗрдВ рд╕реЗ рдПрдХ рдереА, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдкрдХреЛ рд╕рдВрд╡рд░реНрдзрд┐рдд рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдХреА рд╕рднреА рд╕реНрдкрд╖реНрдЯ рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЗрдорд╛рд░рддреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рджрд┐рдЦрд╛рдирд╛, рд╕рдВрд╕реНрдерд╛ рдХреЗ рдХрд╛рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рджреЗрдирд╛ рдФрд░ рд╕реНрдерд▓реЛрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдирд╛ред рдЕрдВрддрд┐рдо рд╣реИрдХрдереЙрди рдореЗрдВ, рдЬрд┐рд╕реЗ рдХрдВрдкрдиреА рдХреЗ рдЕрдВрджрд░ рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╕рдВрд╡рд░реНрдзрд┐рдд рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдкреНрд░рд╕реНрддреБрдд рдХреА рдЧрдИрдВ, рдФрд░ рд╣рдо рдПрдХ рдПрдЖрд░-рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд╕рд╛рде рдЖрдП, рдЬреЛ рдпрд╣ рджрд┐рдЦрд╛рдПрдЧрд╛ рдХрд┐ рдЕрддреАрдд рдореЗрдВ рдПрдХ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рдпрд╛ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд╕реНрдерд╛рди рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рдерд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреБрд░рд╛рдиреА рддрд╕реНрд╡реАрд░реЛрдВ рдХреЗ рд╕рд╛рде рдЖрдзреБрдирд┐рдХ рд╕рдВрд╡рд░реНрдзрд┐рдд рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдХреЛ рдорд┐рд▓рд╛рдПрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реЗрдВрдЯ рдЖрдЗрдЬреИрдХ рдХреИрдереЗрдбреНрд░рд▓ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛, рдЖрдк рдЙрд╕ рдкрд░ рдПрдХ рд╕реНрдорд╛рд░реНрдЯрдлреЛрди рдХреИрдорд░рд╛ рдЗрдВрдЧрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕рдХреА рдкрд╣рд▓реА рд▓рдХрдбрд╝реА рдХреА рдЗрдорд╛рд░рдд рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ 1715 рдореЗрдВ рдзреНрд╡рд╕реНрдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдХрд╛рдо рдХреЗ рдпрд╛рдВрддреНрд░рд┐рдХреА рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИрдВ: рдЖрд╡реЗрджрди рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рд╢рд╣рд░ рдХреЗ рджрд┐рдП рдЧрдП рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд╕реНрдерд╛рдиреЛрдВ рдФрд░ рд╕реНрдерд▓реЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рд╕реВрдЪрдирд╛рдУрдВ рдХреА рд╕рд╣рд╛рдпрддрд╛ рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдмрд┐рдВрджреБ рдХреЗ рдкрд╛рд╕ рд╕реНрдерд┐рдд рд╣реИред рдЬрдм рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ 40 рдореАрдЯрд░ рдХреА рджреВрд░реА рдкрд░ рдПрдХ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд╕реНрдорд╛рд░рдХ рдХреЗ рдкрд╛рд╕ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ, рддреЛ рдПрдЖрд░ рдореЛрдб рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЙрд╕реА рд╕рдордп, рдХреИрдорд░рд╛ рдЦреБрд▓рддрд╛ рд╣реИ, рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рд╕реАрдзреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреЗ рд╕реНрдерд╛рди рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреА рд╣реИред рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдореЗрдВ рдЖрднрд╛рд╕реА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ: рдПрдХ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд╕реНрдерд╛рди рдХреЗ рдХрд╛рд░реНрдб рдХреЛ рдЫреВрдХрд░, рдЖрдк рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрд▓реНрдмрдо рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрд╡реЗрджрди рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рднреА рдХреБрдЫ рдиреБрдХрд╕рд╛рди рдереЗред рдореИрдВ рдЖрдкрдХреЛ рдПрдХ рдХрд╣рд╛рдиреА рдХреЗ рд╕рд╛рде рддреБрдЪреНрдЫ рдЪреАрдЬреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмреЛрд░ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ рдЬреИрд╕реЗ рдХрд┐ рд╕рд░реНрд╡рд░ рд╕реЗ рдбреЗрдЯрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рдпрд╛ рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рдЕрдВрдХ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛, рдореИрдВ рд╕реАрдзреЗ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдЬрд╛рдКрдВрдЧрд╛ рдЬреЛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдХрд╛рд░рдг рдмрдиреЗред
рд╕рдорд╕реНрдпрд╛ 1. рдлреНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ
рдЗрд╕рд▓рд┐рдП, рдкрд╣рд▓реА рдмрд╛рдд рдпрд╣ рдереА рдХрд┐ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд╛рди рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд╕реНрдерд╛рдиреЛрдВ рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдерд┐рддрд┐ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЯрдХрдЯрдХреА рдХреА рджрд┐рд╢рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдорд╛рд░реНрдХрд░ рдкреЙрдЗрдВрдЯ рд▓рдЧрд╛рдП рдЬрд╛рдПрдВред
рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ iOS:
ARKit-CoreLocation рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рддреИрдпрд╛рд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореБрдЦреНрдп рдбреЛрдореЗрди рдХреЗ рдХреЛрдб рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдбреЛрдореЗрди рдореЗрдВ GitHub рдкрд░ рдирд┐рд╣рд┐рдд рд╣реИ, рдПрдХреАрдХрд░рдг рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ рдФрд░ рд╣рдореЗрдВ рдЙрд╕ рдХрд╛рд░реНрдп рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдХреБрдЫ рдШрдВрдЯреЛрдВ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред рдХреЗрд╡рд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдЕрдВрдХ рдФрд░ рдПрдХ рдорд╛рд░реНрдХрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдЫрд╡рд┐ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рдЦрд┐рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдЖрд╢реНрдЪрд░реНрдп рдирд╣реАрдВ рдХрд┐ рдЗрд╕ рд╕рд╣рдЬрддрд╛ рдХреЛ рдЪреБрдХрд╛рдирд╛ рдкрдбрд╝рд╛ред рдорд╛рд░реНрдХрд░ рдЕрдВрдХ рд▓рдЧрд╛рддрд╛рд░ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рддреИрд░рддреЗ рд░рд╣реЗ: рд╡реЗ рдпрд╛ рддреЛ рдЫрдд рдкрд░ рдЪрдврд╝ рдЧрдП, рдпрд╛ рдХрд╣реАрдВ рдЕрдВрдбрд░рдлреБрдЯ рдореЗрдВ рдЖ рдЧрдПред рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдкрдиреА рд░реБрдЪрд┐ рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдорд┐рдирдЯ рддрдХ рдПрдЖрд░-рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдлреЛрдХрд╕ рдореЗрдВ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣рдордд рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рдХрдИ рдиреЗ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрдЧ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИред GitHub рдкрд░ рдХреЛрдб, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЫрд╣ рдорд╣реАрдиреЗ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рддрдХ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЗрд╕реЗ рдмрд╛рдИрдкрд╛рд╕ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред
рд╣рдордиреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рдКрдВрдЪрд╛рдИ рдХреЗ рдмрдЬрд╛рдп рдКрдВрдЪрд╛рдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдЬрд┐рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд╛рди рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рди рдкреНрд░рдмрдВрдзрдХ рдиреЗ рд╡рд╛рдкрд╕ рдХрд░ рджрд┐рдпрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реБрдИред рд▓реЛрдХреЗрд╢рди рдореИрдиреЗрдЬрд░ рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдХреЛ 60 рдореАрдЯрд░ рддрдХ рдлреИрд▓рдиреЗ рдХреЗ рд╕рд╛рде рдХреВрджрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛, рдЬреИрд╕реЗ рд╣реА рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рд╣рд╛рде рдореЗрдВ рдШреБрдорд╛рдпрд╛ рдЧрдпрд╛ред рдирддреАрдЬрддрди, рддрд╕реНрд╡реАрд░ рдЕрд╕реНрдерд┐рд░ рдереА, рдЬреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд╕реВрдЯ рдирд╣реАрдВ рдХрд░рддреА рдереАред
рдирддреАрдЬрддрди, ARKit-CoreLocation рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдФрд░ рдЕрдкрдиреЗ рджрдо рдкрд░ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдЬрдЧрд╣ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ред рдХреНрд░рд┐рд╕реНрдЯреЛрдлрд░ рд╡реЗрдм-рдУрд░реЗрдирд╕реНрдЯреАрди рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд┐рдд рд▓реЗрдЦ ARKit рдФрд░ CoreLocation рдиреЗ рдЗрд╕рдореЗрдВ рдмрд╣реБрдд рдорджрдж рдХреАред рдореБрдЭреЗ рдереЛрдбрд╝рд╛ рдФрд░ рд╕рдордп рдмрд┐рддрд╛рдирд╛ рдерд╛ рдФрд░ рдЕрдкрдиреА рд╕реНрдореГрддрд┐ рдореЗрдВ рдХреБрдЫ рдЧрдгрд┐рддреАрдп рдкрд╣рд▓реБрдУрдВ рдХреЛ рддрд╛рдЬрд╝рд╛ рдХрд░рдирд╛ рдерд╛, рд▓реЗрдХрд┐рди рдкрд░рд┐рдгрд╛рдо рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдерд╛: рдПрдЖрд░-рдСрдмреНрдЬреЗрдХреНрдЯ рдЖрдЦрд┐рд░рдХрд╛рд░ рдЕрдкрдиреА рдЬрдЧрд╣реЛрдВ рдкрд░ рдереЗред рдЙрд╕рдХреЗ рдмрд╛рдж, рдпрд╣ рдХреЗрд╡рд▓ рд╡рд╛рдИ рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде рдЙрдиреНрд╣реЗрдВ рддрд┐рддрд░ рдмрд┐рддрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИ рддрд╛рдХрд┐ рд▓реЗрдмрд▓ рдФрд░ рдЕрдВрдХ рдкрдврд╝рдирд╛ рдЖрд╕рд╛рди рд╣реЛ, рдФрд░ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рд╕реЗ рдмрд┐рдВрджреБ рдФрд░ рдЬреЗрдб рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рдордиреНрд╡рдп рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА рдХреЗ рдмреАрдЪ рдПрдХ рдкрддреНрд░рд╛рдЪрд╛рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛, рддрд╛рдХрд┐ рдирд┐рдХрдЯрддрдо рдирд┐рдХрдЯрддрдо рд╕реНрдерд╛рдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдЕрдЧреНрд░рднреВрдорд┐ рдореЗрдВ рд╣реЛред
рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддреЗ рд╣реБрдП, рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдирдИ SCNNode рд╕реНрдерд┐рддрд┐ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛:
let place = PlaceNode() let locationTransform = MatrixHelper.transformMatrix(for: matrix_identity_float4x4, originLocation: curUserLocation, location: nodeLocation, yPosition: pin.yPos, shouldScaleByDistance: false) let nodeAnchor = ARAnchor(transform: locationTransform) scene.session.add(anchor: nodeAnchor) scene.scene.rootNode.addChildNode(place)
рдореИрдЯреНрд░рд┐рдХреНрд╕рд╣реЗрд▓реНрдкрд░ рдХреНрд▓рд╛рд╕ рдореЗрдВ рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдп рд╣реИрдВ:
class MatrixHelper { static func transformMatrix(for matrix: simd_float4x4, originLocation: CLLocation, location: CLLocation, yPosition: Float) -> simd_float4x4 { let distanceToPoint = Float(location.distance(from: originLocation)) let distanceToNode = (10 + distanceToPoint/1000.0) let bearing = GLKMathDegreesToRadians(Float(originLocation.coordinate.direction(to: location.coordinate))) let position = vector_float4(0.0, yPosition, -distanceToNode, 0.0) let translationMatrix = MatrixHelper.translationMatrix(with: matrix_identity_float4x4, for: position) let rotationMatrix = MatrixHelper.rotateAroundY(with: matrix_identity_float4x4, for: bearing) let transformMatrix = simd_mul(rotationMatrix, translationMatrix) return simd_mul(matrix, transformMatrix) } static func translationMatrix(with matrix: matrix_float4x4, for translation : vector_float4) -> matrix_float4x4 { var matrix = matrix matrix.columns.3 = translation return matrix } static func rotateAroundY(with matrix: matrix_float4x4, for degrees: Float) -> matrix_float4x4 { var matrix : matrix_float4x4 = matrix matrix.columns.0.x = cos(degrees) matrix.columns.0.z = -sin(degrees) matrix.columns.2.x = sin(degrees) matrix.columns.2.z = cos(degrees) return matrix.inverse } }
рджрд┐рдЧрдВрд╢ рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕реНрддрд╛рд░
CLLocationCoordinate2D рдЬреЛрдбрд╝рд╛
extension CLLocationCoordinate2D { func calculateBearing(to coordinate: CLLocationCoordinate2D) -> Double { let a = sin(coordinate.longitude.toRadians() - longitude.toRadians()) * cos(coordinate.latitude.toRadians()) let b = cos(latitude.toRadians()) * sin(coordinate.latitude.toRadians()) - sin(latitude.toRadians()) * cos(coordinate.latitude.toRadians()) * cos(coordinate.longitude.toRadians() - longitude.toRadians()) return atan2(a, b) } func direction(to coordinate: CLLocationCoordinate2D) -> CLLocationDirection { return self.calculateBearing(to: coordinate).toDegrees() } }
рд╕рдорд╕реНрдпрд╛ 2. рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд╕реНрддреБрдПрдБ
рдЕрдЧрд▓реА рд╕рдорд╕реНрдпрд╛ рдЬреЛ рд╣рдореЗрдВ рдорд┐рд▓реА, рд╡рд╣ рдереА рдПрдЖрд░ рд╡рд╕реНрддреБрдУрдВ рдХреА рдПрдХ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ред рд╣рдорд╛рд░реЗ рд╢рд╣рд░ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рдЬрдЧрд╣реЗрдВ рдФрд░ рдЬрдЧрд╣реЗрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдкрд╛рд╕рд╛ рдПрдХ рджреВрд╕рд░реЗ рдореЗрдВ рд╡рд┐рд▓реАрди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХреНрд░реЙрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рд╢рд┐рд▓рд╛рд▓реЗрдЦ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрдирд╛рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛, рдФрд░ рдпрд╣ рдПрдХ рдкреНрд░рддрд┐рдХрд╛рд░рдХ рдкреНрд░рднрд╛рд╡ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред рдХреЙрдиреНрдлреНрд░реЗрдВрд╕ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдордиреЗ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд╛рди рд╕реЗ 500 рдореАрдЯрд░ рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдмрд┐рдВрджреБ рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдПрдХ рд╕рд╛рде рдкреНрд░рджрд░реНрд╢рд┐рдд рдПрдЖрд░ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреБрдЫ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ, рдЕрдВрдХреЛрдВ рдХреА рдПрдХрд╛рдЧреНрд░рддрд╛ рдЕрднреА рднреА рдмрд╣реБрдд рдЕрдзрд┐рдХ рдереАред рдЗрд╕рд▓рд┐рдП, рджреГрд╢реНрдпрддрд╛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдиреНрд╣реЛрдВрдиреЗ рдХреНрд▓рд╕реНрдЯрд░рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдореИрдк рд╕реНрдХреНрд░реАрди рдкрд░, рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ MapKit рдореЗрдВ рдПрдореНрдмреЗрдбреЗрдб рддрд░реНрдХ рдХреЗ рдХрд╛рд░рдг рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИ, рд▓реЗрдХрд┐рди AR рдореЛрдб рдореЗрдВ рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред
рдХреНрд▓рд╕реНрдЯрд░рд┐рдВрдЧ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рд╕реЗ рд▓рдХреНрд╖реНрдп рдХреА рджреВрд░реА рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдереАред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрджрд┐ рдмрд┐рдВрджреБ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА рдФрд░ рд╕реВрдЪреА рд╕реЗ рдкрд┐рдЫрд▓реЗ рдЖрдХрд░реНрд╖рдг рдХреЗ рдмрд░рд╛рдмрд░ рддреНрд░рд┐рдЬреНрдпрд╛ рдХреЗ рд╕рд╛рде рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЧрд┐рд░ рдЧрдпрд╛, рддреЛ рдпрд╣ рдмрд╕ рдЫрд┐рдк рдЧрдпрд╛ рдФрд░ рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдерд╛ред рдЬреИрд╕реЗ рд╣реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рд╕рдВрдкрд░реНрдХ рдХрд┐рдпрд╛, рджреВрд░реА рдХрдо рд╣реЛ рдЧрдИ, рдФрд░ рдХреНрд▓рд╕реНрдЯрд░ рдЬрд╝реЛрди рдХреА рддреНрд░рд┐рдЬреНрдпрд╛ рддрджрдиреБрд╕рд╛рд░ рдХрдо рд╣реЛ рдЧрдИ, рдЗрд╕рд▓рд┐рдП рдЖрд╕-рдкрд╛рд╕ рд╕реНрдерд┐рдд рдЬрдЧрд╣реЗрдВ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рд╡рд┐рд▓рдп рдирд╣реАрдВ рд╣реБрдИрдВред рдПрдХрд▓ рдмрд┐рдВрджреБрдУрдВ рд╕реЗ рдХреНрд▓рд╕реНрдЯрд░ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдорд╛рд░реНрдХрд░ рдХрд╛ рд░рдВрдЧ рдмрджрд▓рдиреЗ рдФрд░ рдЬрдЧрд╣ рдХреЗ рдирд╛рдо рдХреЗ рдмрдЬрд╛рдп рдПрдЖрд░ рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред

AR рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреА рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛рд╢реАрд▓рддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ UITapGestureRecognizer рдХреЛ ARSCNView рдкрд░ рд▓рдЯрдХрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рд╣рд┐рдЯрдЯреЗрд╕реНрдЯ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрд╣ рдЬрд╛рдБрдЪ рдХреА рдЧрдИ рдереА рдХрд┐ SCNNode рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рд╕реЗ рдХрд┐рд╕ рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдЖрд╕-рдкрд╛рд╕ рдХреЗ рдЖрдХрд░реНрд╖рдг рдХреА рддрд╕реНрд╡реАрд░ рдмрди рдЧрдпрд╛, рддреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдиреЗ рдкреВрд░реНрдг рд╕реНрдХреНрд░реАрди рдореЛрдб рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдПрд▓реНрдмрдо рдХреЛ рдЦреЛрд▓ рджрд┐рдпрд╛ред
рд╕рдорд╕реНрдпрд╛ 3. рд░рдбрд╛рд░
рдЖрд╡реЗрджрди рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рджреМрд░рд╛рди, рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рд░рдбрд╛рд░ рдкрд░ рдЕрдВрдХ рджрд┐рдЦрд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдХреЛрдИ рдЧрд▓рддрдлрд╣рдореА рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдмрд┐рдВрджреБ рдкрд░ рджреВрд░реА рдФрд░ рджреВрд░реА рдХреА рдЧрдгрдирд╛ рдХрд░ рд▓реА рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЙрдиреНрд╣реЗрдВ 3 рдбреА рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдореЗрдВ рдмрджрд▓рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗред рдпрд╣ рдХреЗрд╡рд▓ рд╕реНрдХреНрд░реАрди рдкрд░ рджреЛ-рдЖрдпрд╛рдореА рд╕реНрдерд╛рди рдореЗрдВ рдЕрдВрдХ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд░рд╣реАред

рдкрд╣рд┐рдпрд╛ рдХреЛ рд╕реБрджреГрдврд╝ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдиреНрд╣реЛрдВрдиреЗ
рд░рдбрд╛рд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рд░реБрдЦ рдХрд┐рдпрд╛, рдЬрд┐рд╕рдХрд╛ рдУрдкрди рд╕реЛрд░реНрд╕ рдХреЛрдб рдЧрд┐рдЯрд╣рдм рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЬреНрд╡рд▓рдВрдд рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдФрд░ рд▓рдЪреАрд▓реА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЙрддреНрд╕рд╛рд╣рдЬрдирдХ рдереАрдВ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдВрдХреЛрдВ рдХреЛ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдерд╛рди рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╕реВрддреНрд░реЛрдВ рдХреЛ рд╕рд╣реА рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдореЗрдВ рдХреБрдЫ рд╕рдордп рдмрд┐рддрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдХрдо рдЦреВрдмрд╕реВрд░рдд, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ
iPhone рд╕рдВрд╡рд░реНрдзрд┐рдд рдпрдерд╛рд░реНрдерд╡рд╛рджреА рдЯреВрд▓рдХрд┐рдЯ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИрдВ:
func place(dot: Dot) { var y: CGFloat = 0.0 var x: CGFloat = 0.0 if degree < 0 { degree += 360 } let bearing = dot.bearing.toRadians() let radius: CGFloat = 60.0 // radius of the radar view if (bearing > 0 && bearing < .pi / 2) { //the 1 quadrant of the radar x = radius + CGFloat(cosf(Float((.pi / 2) - bearing)) * Float(dot.distance)) y = radius - CGFloat(sinf(Float((.pi / 2) - bearing)) * Float(dot.distance)) } else if (bearing > .pi / 2.0 && bearing < .pi) { //the 2 quadrant of the radar x = radius + CGFloat(cosf(Float(bearing - (.pi / 2))) * Float(dot.distance)) y = radius + CGFloat(sinf(Float(bearing - (.pi / 2))) * Float(dot.distance)) } else if (bearing > .pi && bearing < (3 * .pi / 2)) { //the 3 quadrant of the radar x = radius - CGFloat(cosf(Float((3 * .pi / 2) - bearing)) * Float(dot.distance)) y = radius + CGFloat(sinf(Float((3 * .pi / 2) - bearing)) * Float(dot.distance)) } else if (bearing > (3 * .pi / 2.0) && bearing < (2 * .pi)) { //the 4 quadrant of the radar x = radius - CGFloat(cosf(Float(bearing - (3 * .pi / 2))) * Float(dot.distance)) y = radius - CGFloat(sinf(Float(bearing - (3 * .pi / 2))) * Float(dot.distance)) } else if (bearing == 0) { x = radius y = radius - CGFloat(dot.distance) } else if (bearing == .pi / 2) { x = radius + CGFloat(dot.distance) y = radius } else if (bearing == .pi) { x = radius y = radius + CGFloat(dot.distance) } else if (bearing == 3 * .pi / 2) { x = radius - CGFloat(dot.distance) y = radius } else { x = radius y = radius - CGFloat(dot.distance) } let newPosition = CGPoint(x: x, y: y) dot.layer.position = newPosition
рдмреИрдХрдПрдВрдб
рдпрд╣ рднрдВрдбрд╛рд░рдг рдбреЙрдЯреНрд╕ рдФрд░ рдлрд╝реЛрдЯреЛ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред рдЗрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдХрдВрдЯреЗрдВрдЯрдлреБрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛, рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдЙрдиреНрд╣реЛрдВрдиреЗ рд╣рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓ рдмрдирд╛рдпрд╛ред


рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╕рдордп, рд╕рднреА рдордзреБрдордХреНрдЦреАрдкрд╛рд▓рдХ рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд▓рдЧреЗ рд╣реБрдП рдереЗ, рдФрд░ рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХрдИ рд╕реБрд╡рд┐рдзрд╛рдПрдВ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдереА:
- рдореЛрдмрд╛рдЗрд▓ рдбреЗрд╡рд▓рдкрд░ - рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмреИрдХрдПрдВрдб
- рд╕рд╛рдордЧреНрд░реА рдкреНрд░рдмрдВрдзрдХ - рдбреЗрдЯрд╛ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреНрд╖реЗрддреНрд░
рдмреИрдХрдПрдВрдб рдХреЗ рд╕рдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдореВрд▓ рд░реВрдк рд╕реЗ рдЙрди рдЯреАрдореЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рд╣реИрдХрдереЙрди рдореЗрдВ рднрд╛рдЧ рд▓рд┐рдпрд╛ рдерд╛ (рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛), рдЬреЛ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕рд╛рдмрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╣реИрдХрдереЙрди рдЬреИрд╕реА рдЪреАрдЬреЗрдВ рдЖрдкрдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рдЕрдкрдиреА рджрдмрд╛рд╡ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВ, рдХреБрдЫ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдирд╛ рдФрд░ рдХреБрдЫ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддреА рд╣реИрдВред рдПрдХрджрдо рдирдпрд╛ред
рдирд┐рд╖реНрдХрд░реНрд╖
рдПрдЖрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рдерд╛, рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╣рдордиреЗ рдХрдИ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рд╕рд╛рде рд╣реА рд╣рдореЗрдВ рдЧрдгрд┐рдд рдХреЛ рдпрд╛рдж рд░рдЦрдирд╛ рдФрд░ рдЦреБрдж рдмрд╣реБрдд рд╕рд╛рд░реА рдЪреАрдЬреЗрдВ рд▓рд┐рдЦрдирд╛ рдерд╛ред
рд╕рд░рд▓, рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдФрд░ рдкрд░рд┐рд╖реНрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХрд╛рдо рдХреЗ рдШрдВрдЯреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рд╣рдордиреЗ рдРрдкреНрдкрд▓ рд╕реЗ рдорд╛рдирдХ рдПрд╕рдбреАрдХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛ред
рд╣рдордиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ
AppStore рдореЗрдВ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рд╣реИред рдпрд╣рд╛рдБ рдпрд╣ рдХрд╛рдо рдкрд░ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред
рдЕрдм рддрдХ, рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдХреЗрд╡рд▓ рдЯреИрдЧрд╛рдиреНрд░реЛрдЧ рдХреЗ рд▓рд┐рдП рдмрд┐рдВрджреБ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рд░ рдХреЛрдИ "рдХрд╡рд░реЗрдЬ рдХреНрд╖реЗрддреНрд░" рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдореЗрдВ рднрд╛рдЧ рд▓реЗ рд╕рдХрддрд╛ рд╣реИред