рдЦрд░реЛрдВрдЪ рд╕реЗ рд╣реЗрдХреНрд╕рд╛рдкреЛрдб рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ (рднрд╛рдЧ 3) - рдХреАрдиреЗрдореЗрдЯреАрдХреНрд╕


рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░! рд╣реЗрдХреНрд╕рд╛рдкреЙрдб рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдЖрдЧреЗ рдмрдврд╝ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЕрдВрдд рдореЗрдВ рдмреБрдирд┐рдпрд╛рджреА рдЧрдгрд┐рддреАрдп рднрд╛рдЧ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдВрдд рддрдХ рдЬреАрд╡рд┐рдд рд░рд╣рдиреЗ рдФрд░ рд╢реЗрд▓реНрдл рдкрд░ рдзреВрд▓ рдЗрдХрдЯреНрдард╛ рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕рдХреА рд╕рдХрд╛рд░рд╛рддреНрдордХ рдмрджрд▓рд╛рд╡ рджреЗрдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рднрд▓реЗ рд╣реА рд╡реЗ рдорд╣рддреНрд╡рд╣реАрди рд╣реЛрдВред рдЗрд╕ рдЕрдиреБрдЪреНрдЫреЗрдж рдореЗрдВ, рдореИрдВ рдЙрд▓рдЯрд╛ рдХрд┐рдиреЗрдореИрдЯрд┐рдХреНрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ рдФрд░ рдЗрд╕реЗ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реВрдВрдЧрд╛ред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ред

рд╡рд┐рдХрд╛рд╕ рдХреЗ рдЪрд░рдг:
рднрд╛рдЧ 1 - рдбрд┐рдЬрд╝рд╛рдЗрди
рднрд╛рдЧ 2 - рд╡рд┐рдзрд╛рдирд╕рднрд╛
рднрд╛рдЧ 3 - рдХрд┐рдиреЗрдореИрдЯрд┐рдХреНрд╕
рднрд╛рдЧ 4 - рдЧрдгрд┐рдд рдХреЗ рд╡рд┐рд╖рдп рдФрд░ рдХреНрд░рдо
рднрд╛рдЧ 5 - рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХреНрд╕
рднрд╛рдЧ 6 - 3 рдбреА рдкреНрд░рд┐рдВрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреНрд░рдордг
рднрд╛рдЧ 7 - рдирдП рдЖрд╡рд╛рд╕, рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдФрд░ рд╕рдВрдЪрд╛рд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓

рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА


рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд░реЛрдмреЛрдЯ рдХреЗ рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ - рдЙрдирдореЗрдВ рд╕реЗ рддреАрди рдХреЗ рд░реВрдк рдореЗрдВ рдХрдИ рд╣реИрдВ:

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╡реЗ рдПрдХ-рджреВрд╕рд░реЗ рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдорд╛рдорд▓реЗ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВ рдФрд░ рдХрд┐рд╕реА рди рдХрд┐рд╕реА рдХреЛрдг рдкрд░ рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдШреБрдорд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЬрдм рдКрдкрд░ рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХреБрд▓реНрд╣рд╛рдбрд╝рд┐рдпреЛрдВ рдХрд╛ рд╕реНрдерд╛рди рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реЛрдЧрд╛ (coxa_zero_rotate рдкреИрд░рд╛рдореАрдЯрд░ рдереЛрдбрд╝рд╛ рдмрд╛рдж рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛):


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╢рд╛рдпрдж рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджреЗрдЦрддреЗ рд╣реИрдВ, рдмрд╛рдИрдВ рдФрд░ рджрд╛рдИрдВ рдУрд░ рд╕рдордиреНрд╡рд┐рдд рд╕рд┐рд╕реНрдЯрдо рд╢рд░реАрд░ рдХреЗ рдХреЗрдВрджреНрд░ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╕рдордорд┐рдд рд░реВрдк рд╕реЗ рд╕реНрдерд┐рдд рд╣реИрдВред рдРрд╕рд╛ рд▓рдЧ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдпрд╣ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред

рдкреНрд░рддреНрдпреЗрдХ рдмрд┐рдВрджреБ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдЙрд╕ рдЕрдВрдЧ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдпрд╣ рдмрд┐рдВрджреБ рдЕрднрд┐рдкреНрд░реЗрдд рд╣реИред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЖрдкрдХреЛ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд╕рд╛рде рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд┐рдП рдмрд┐рдирд╛ рджрд░реНрдж рдХреЛ рдХрд╣реАрдВ рднреА рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдФрд░ рдЗрд╕рд▓рд┐рдП рд╡реЗ рдЕрдВрдЧ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╕реНрдерд┐рдд рд╣реИрдВ:


рд▓рдХреНрд╖реНрдп рдмрд┐рдВрджреБ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдореБрдЦреНрдп рд╕рдордиреНрд╡рд┐рдд рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╣реИрдВред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдореИрдВ рдорд╛рдорд▓реЗ рдХреЗ рдХреЗрдВрджреНрд░ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╕реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рдерд╛ рдФрд░ рдХрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рднрдВрдбрд╛рд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред

рдЗрд╕рдХреЗ рдмрд╛рдж, рд╕рдВрдХреЗрддрди X *, X **, рдЖрджрд┐ред X тА▓, X replaced will рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЙрд▓рдЯрд╛ рдЧрддрд┐рдЬ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди


рдЪрд▓реЛ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдХрдард┐рди рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдХреНрд╖рдг рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ - рдХрд┐рдиреЗрдореИрдЯрд┐рдХреНрд╕ред рдореИрдВрдиреЗ рд╕реНрд╡рдпрдВ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛, рдХрднреА-рдХрднреА рдПрдХ рддреНрд░рд┐рдХреЛрдг рдФрд░ рддреНрд░рд┐рдХреЛрдгрдорд┐рддреАрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рджреЗрдЦрдХрд░ред рдпрд╛рдВрддреНрд░рд┐рдХреА рдХреЗ рд╕рд╛рде, рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрдард┐рди рд╣реИ, рдФрд░ рддреНрд░рд┐рдХреЛрдгрдорд┐рддрд┐ рдХреЗ рд╕рд╛рде рдпрд╣ рдФрд░ рднреА рдмрджрддрд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╢рд╛рдпрдж рдХрд╣реАрдВ рдореИрдВ рдХреБрдЫ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦ рд╕рдХрддрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдЕрдВрдд рдореЗрдВ рд╡реАрдбрд┐рдпреЛ)ред

1. рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╡рд┐рд╡рд░рдг


рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдореЗрдВ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ (150; -20; 100) рдХреЗ рд╕рд╛рде рдмрд┐рдВрджреБ рдП рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдордиреЗ рджрд╛рд╣рд┐рдиреЗ рдЕрдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рднреА рдЬреНрдЮрд╛рдд рд╣реИ рдХрд┐ рдЕрдВрдЧ рдХреЛ рд╢рд░реАрд░ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ 45 рдбрд┐рдЧреНрд░реА рддрдХ рдШреБрдорд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдкреИрд░рд╛рдореАрдЯрд░ coxa_zero_rotate):


рдирд┐рдореНтАНрдирд▓рд┐рдЦрд┐рдд рдореЗрдВ рдирд┐рдореНтАНрди рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВ:


рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдпрд╣ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрди рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ, рдирд╛рдо рдЦреБрдж рдХреЗ рд▓рд┐рдП рдмреЛрд▓рддреЗ рд╣реИрдВред рдЖрдк рдХреЗрд╡рд▓ рдпрд╣ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпреЗ рд╕рднреА рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗрд╕ рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдмрд╛рд╣рд░ рд╕реЗ рдФрд░ рд▓рдЪреАрд▓реЗрдкрди рдХреЗ рд▓рд┐рдП рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдлреНрд▓реИрд╢ рдореЗрдореЛрд░реА рдореЗрдВ рд╕реНрдерд╛рдпреА рдФрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреЗ рд╣реИрдВред

рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

рдЪрд┐рддреНрд░ рдкрддрд╡рд╛рд░ рдФрд░ рд╣реЗрдХреНрд╕рд╛рдкреЙрдб рдХреЗ рдкреИрд░реЛрдВ рдХреЗ рд╕реНрдерд╛рди рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд░реВрдкреЛрдВ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдЕрдм рдпрд╣ ARACNID рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдореБрдЭреЗ рдорд╛рдорд▓реЗ рдХреЛ REPTILES рдореЗрдВ рдмрджрд▓рдирд╛ рдкрдбрд╝рд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдпрд╣ рдХреЗрд╡рд▓ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдорд╛рдк рдХреЗ рдмрд┐рдирд╛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд▓рдХреНрд╖реНрдп рдмрд┐рдВрджреБрдУрдВ рдХреЛ рднреА рдмрджрд▓рдирд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ (рдЬрдм рддрдХ рдХрд┐ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рди рд╣реЛ)ред

рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдкреИрд░рд╛рдореАрдЯрд░ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВред

2. рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди


2.1 COXA рдХреЗ рд░реЛрдЯреЗрд╢рди рдХреЗ рдХреЛрдг рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛

рдпрд╣ рдЕрд╡рд╕реНрдерд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ LIMB COORDINATE рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдмрд┐рдВрджреБ A рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рдкреБрдирд░реНрдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЖрдкрдХреЛ рдХреЛрдг coxa_zero_rotate рдХреЛ рдШреБрдорд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдЖрдк рдирд┐рдореНрди рд╕реВрддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

$ $ рдкреНрд░рджрд░реНрд╢рди $ $ x тА▓ = x рдХреЙрд╕ (╬▒) + z рдкрд╛рдк (╬▒) = резрелреж + рдХреЙрд╕ (рекрел) + резрежреж (рдкрд╛рдк (рекрел) = рез8рем. $ $ $ $ $ $ $ рдбрд┐рд╕реНрдкреНрд▓реЗ


yтА▓=y=тИТ20


$$ рдбрд┐рд╕реНрдкреНрд▓реЗ $$ z $ = -x sin (╬▒) + z $ cos (╬▒) = -150 -1 sin (45) + 100 (cos (45) = -35.36 $$ рдкреНрд░рджрд░реНрд╢рди $$


рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдореЗрдВ LIMB рд╕рдордиреНрд╡рд┐рдд рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд▓рдХреНрд╖реНрдп рдмрд┐рдВрджреБ A (176.78; -20; -35.36) рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдорд┐рд▓реЗред

рдЕрдм рдЖрдк atan2 рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ COXA рдХреЛрдг рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ:

COXA=atan2(zX,x=)=atan2(тИТ35.36,176.78)=тИТ11.30┬░


рдФрд░ рдЗрд╕рд▓рд┐рдП, рд╣рдореЗрдВ рд╡рд╣ рдХреЛрдг рдорд┐рд▓рд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЖрдкрдХреЛ COXA рд╕рд░реНрд╡реЛ рдХреЛ рдШреБрдорд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдмрд┐рдВрджреБ A X weY тА▓ рд╡рд┐рдорд╛рди рдореЗрдВ рд╣реЛред рдЖрдЗрдП рдЕрдм рдХреЛрдордкрд╕ 3 рдбреА рдореЗрдВ рд╣рдорд╛рд░реА рдЧрдгрдирд╛ рджреЗрдЦреЗрдВ:


рдмрд┐рд▓рдХреБрд▓ рдареАрдХред

2.2 FEMUR рдФрд░ TIBIA рдХреЗ рд░реЛрдЯреЗрд╢рди рдХреЗ рдХреЛрдг рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛
рдЗрди рдХреЛрдгреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, XтА▓Y these рд╡рд┐рдорд╛рди рдкрд░ рдЬрд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд╡рд┐рдорд╛рди рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреЛрдг COXA рджреНрд╡рд╛рд░рд╛ рдЙрд╕ рдмрд┐рдВрджреБ рдХреЛ рдШреБрдорд╛рдирд╛ рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдХреА рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдЧрдгрдирд╛ рдХреА рдереАред

$ $ рдкреНрд░рджрд░реНрд╢рди $ $ x тА▓ = x display рдХреЙрд╕ (╬▒) + y тЛЕ (рдкрд╛рдк (╬▒) = 176.78 (рдХреЙрд╕ (-11) + -20 (рдкрд╛рдк (-11) = 180.28 $ $ $ $ $


yтА▓=y=тИТ20


Y along рдХрд╛ рд╕рдордиреНрд╡рдп рдирд╣реАрдВ рдмрджрд▓рддрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо Y тА▓ рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде рдШреВрдорддреЗ рд╣реИрдВред

рдЕрдЧрд▓рд╛, рдЖрдкрдХреЛ рдЧрдгрдирд╛ рд╕реЗ COXA рдХреА рд▓рдВрдмрд╛рдИ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рд╣рдо рдкреНрд▓реЗрди XтА▓тА▓Y тА▓ рдХреЗ рдкрд╛рд╕ рдЬрд╛рддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо COXA рдХреА рд▓рдВрдмрд╛рдИ рд╕реЗ рдмрд┐рдВрджреБ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ x of рдХреА рдПрдХ рд╢рд┐рдлреНрдЯ рдХрд░рддреЗ рд╣реИрдВ:

xxx=xтА▓тИТcoxaLength=180.28тИТ40=140.28


рдптА▓y=yтА▓


рдЗрди рд╕рднреА рдЬреЛрдбрд╝рддреЛрдбрд╝реЛрдВ рдХреЗ рдмрд╛рдж, рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЖрдЧреЗ рдХрд╛ рд╣рд▓ рддреНрд░рд┐рдХреЛрдг рдХреЗ рдХреЛрдгреЛрдВ рдФрд░ рдмреА рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдо рд╣реЛ рдЧрдпрд╛ рд╣реИ:


рдХреЛрдгреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдЗрд╕ рддреНрд░рд┐рдХреЛрдг рдХреЗ рддреАрд╕рд░реЗ рдкрдХреНрд╖ C рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рджреВрд░реА рд╡реЗрдХреНрдЯрд░ рдХреА рд▓рдВрдмрд╛рдИ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдФрд░ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ рдФрд░ рд╕реВрддреНрд░ рджреНрд╡рд╛рд░рд╛ рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ:

$ $ рдкреНрд░рджрд░реНрд╢рди $ $ C = \ sqrt {x тА▓ + ^ 2 + y $ C ^ 2} = \ sqrt {140.28 ^ 2 + (-20) ^ 2} = 141.70 $ $ рдкреНрд░рджрд░реНрд╢рди $ $


рдЕрдм рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЕрдВрдЧ рдЗрд╕ рдмрд┐рдВрджреБ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ C, FEMUR рдФрд░ TIBIA рдХреА рд▓рдВрдмрд╛рдИ рдХреЗ рдпреЛрдЧ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рддреЛ рдмрд┐рдВрджреБ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, 141.70 <141 + 85 - рдмрд┐рдВрджреБ рдЙрдкрд▓рдмреНрдз рд╣реИред

рдЕрдм рд╣рдо рддреНрд░рд┐рднреБрдЬ рдХреЗ рд╕рднреА рдкрдХреНрд╖реЛрдВ рдХреЛ рдЬрд╛рдирддреЗ рд╣реИрдВ рдФрд░ рд╣рдо рдХреЛрдгреЛрдВ рдХреЛ рдЦреЛрдЬ рд╕рдХрддреЗ рд╣реИрдВ a рдФрд░ b рдЬрд┐рд╕реЗ рд╣рдореЗрдВ рдХреЙрд╢рди рдкреНрд░рдореЗрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

a=acos(A2+C2тИТB2 over2AC)=72.05┬░


b=acos(B2+A2тИТC2 over2BA)=72.95┬░


рдкреНрд░рд╛рдкреНрдд рдХреЛрдгреЛрдВ рдХреЛ рдЙрдиреНрд╣реЗрдВ рд╕рд░реНрд╡реЛ рдореЗрдВ рдЦрд┐рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐ рдФрд░ рд╕реАрдзреА рд░реЗрдЦрд╛ C рд╕реЗ X рдЕрдХреНрд╖ рддрдХ рдЭреБрдХрд╛рд╡ рдХреЗ рдХреЛрдг рдХреЛ рдпрд╣рд╛рдВ рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХреЛрдг FEMUR рдФрд░ TIBIA (135 ┬░ рдФрд░ 45 ┬░) рдХреЛ рдЬрд╛рдирддреЗ рд╣реИрдВ, рддреЛ рдЭреБрдХрд╛рд╡ C рдХрд╛ X рдЕрдХреНрд╖ рдкрд░ рдХреЛрдг рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╕рдм рдЬрд╛рдирддреЗ рд╣реИрдВред рдЖрдк рдЗрд╕реЗ рдлрд╝рдВрдХреНрд╢рди atan2 (y тА▓ x, x тА▓:) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ:

$ $ рдкреНрд░рджрд░реНрд╢рди $ $ ╧Ж = atan2 (y тА▓ x, x тА▓ $) = atan2 (-20, 140.28) = -8.11 ┬░ $ $ рдкреНрд░рджрд░реНрд╢рди $ $


рдЕрдВрдд рдореЗрдВ, рдЖрдк FEMUR рдФрд░ TIBIA рд╕рд░реНрд╡реЛ рдХреЗ рд░реЛрдЯреЗрд╢рди рдХреЗ рдХреЛрдг рдХреА рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

FEMUR=femurZeroRotateтИТaтИТ135=135тИТ72.05+8.11=71.06


FEMUR=bтИТtibiaZeroRotate=45тИТ72.95=27.95┬░



рдЪрд▓реЛ рд╣рдорд╛рд░реА рдЧрдгрдирд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:


рдпрд╣ рд╕рдЪ рдЬреИрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИред

рдкрд░рд┐рдгрд╛рдо


рдЧрдгрдирд╛ рдХрд┐рдП рдЧрдП рдХреЛрдг COXA, FEMUR рдФрд░ TIBIA рдЙрдирдХреЗ рд╕рд░реНрд╡реЛ рдХреЛ рдЦрд┐рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИрдВред рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ COXA рдХреЛрдг рдирдХрд╛рд░рд╛рддреНрдордХ рд╣реИ рдФрд░, рддрджрдиреБрд╕рд╛рд░, рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИ: "-11.3 рдбрд┐рдЧреНрд░реА рд╕реЗ рдбреНрд░рд╛рдЗрд╡ рдХреЛ рдХреИрд╕реЗ рдЪрд╛рд▓реВ рдХрд░реЗрдВ?"ред рдЪрд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рд╢реВрдиреНрдп рдХреЗ рд░реВрдк рдореЗрдВ рд╕реАрдУрдПрдХреНрд╕рдП рд╕рд░реНрд╡реЛ рдХреА рддрдЯрд╕реНрде рд╕реНрдерд┐рддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд╕реЗ рдбреНрд░рд╛рдЗрд╡ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдФрд░ рдирдХрд╛рд░рд╛рддреНрдордХ рджреЛрдиреЛрдВ рдХреЛрдгреЛрдВ рдХреЛ рдШреБрдорд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рд╕реЗ рдмрд╛рд╣рд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реЗрдЦреЛрдВ рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ рдЬрдм рдореИрдВ рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддрд╛ рд╣реВрдВред

рд╕реНрд░реЛрдд рдХреЛрдб


рдкрд░реНрдпрд╛рдкреНрдд рд╢рдмреНрдж, рдореБрдЭреЗ рдХреЛрдб рджреЗрдЦрдиреЗ рджреЛ
#define RAD_TO_DEG(rad) ((rad) * 180.0 / M_PI) #define DEG_TO_RAD(deg) ((deg) * M_PI / 180.0) typedef enum { LINK_COXA, LINK_FEMUR, LINK_TIBIA } link_id_t; typedef struct { // Current link state float angle; // Link configuration uint32_t length; int32_t zero_rotate; int32_t min_angle; int32_t max_angle; } link_info_t; typedef struct { point_3d_t position; path_3d_t movement_path; link_info_t links[3]; } limb_info_t; // *************************************************************************** /// @brief Calculate angles /// @param info: limb info @ref limb_info_t /// @return true - calculation success, false - no // *************************************************************************** static bool kinematic_calculate_angles(limb_info_t* info) { int32_t coxa_zero_rotate_deg = info->links[LINK_COXA].zero_rotate; int32_t femur_zero_rotate_deg = info->links[LINK_FEMUR].zero_rotate; int32_t tibia_zero_rotate_deg = info->links[LINK_TIBIA].zero_rotate; uint32_t coxa_length = info->links[LINK_COXA].length; uint32_t femur_length = info->links[LINK_FEMUR].length; uint32_t tibia_length = info->links[LINK_TIBIA].length; float x = info->position.x; float y = info->position.y; float z = info->position.z; // Move to (X*, Y*, Z*) coordinate system - rotate float coxa_zero_rotate_rad = DEG_TO_RAD(coxa_zero_rotate_deg); float x1 = x * cos(coxa_zero_rotate_rad) + z * sin(coxa_zero_rotate_rad); float y1 = y; float z1 = -x * sin(coxa_zero_rotate_rad) + z * cos(coxa_zero_rotate_rad); // // Calculate COXA angle // float coxa_angle_rad = atan2(z1, x1); info->links[LINK_COXA].angle = RAD_TO_DEG(coxa_angle_rad); // // Prepare for calculation FEMUR and TIBIA angles // // Move to (X*, Y*) coordinate system (rotate on axis Y) x1 = x1 * cos(coxa_angle_rad) + z1 * sin(coxa_angle_rad); // Move to (X**, Y**) coordinate system (remove coxa from calculations) x1 = x1 - coxa_length; // Calculate angle between axis X and destination point float fi = atan2(y1, x1); // Calculate distance to destination point float d = sqrt(x1 * x1 + y1 * y1); if (d > femur_length + tibia_length) { return false; // Point not attainable } // // Calculate triangle angles // float a = tibia_length; float b = femur_length; float c = d; float alpha = acos( (b * b + c * c - a * a) / (2 * b * c) ); float gamma = acos( (a * a + b * b - c * c) / (2 * a * b) ); // // Calculate FEMUR and TIBIA angle // info->links[LINK_FEMUR].angle = femur_zero_rotate_deg - RAD_TO_DEG(alpha) - RAD_TO_DEG(fi); info->links[LINK_TIBIA].angle = RAD_TO_DEG(gamma) - tibia_zero_rotate_deg; // // Check angles // if (info->links[LINK_COXA].angle < info->links[LINK_COXA].min_angle || info->links[LINK_COXA].angle > info->links[LINK_COXA].max_angle) { return false; } if (info->links[LINK_FEMUR].angle < info->links[LINK_FEMUR].min_angle || info->links[LINK_FEMUR].angle > info->links[LINK_FEMUR].max_angle) { return false; } if (info->links[LINK_TIBIA].angle < info->links[LINK_TIBIA].min_angle || info->links[LINK_TIBIA].angle > info->links[LINK_TIBIA].max_angle) { return false; } return true; } 


рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рдПрд▓реНрдЧреЛрд░рд┐рджрдо



рдлрд┐рд░, рд╕рдВрдпреЛрдЧ рд╕реЗ, рдПрдХ рдЕрдиреБрдХреНрд░рдо рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рдЬреЛ рдХреБрдЫ рд╣рдж рддрдХ рдПрдХ рдиреГрддреНрдп рдХреА рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рдерд╛


рдкреБрдирд╢реНрдЪ


рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА рдЕрдЧрд░ рдХреЛрдИ рднреА рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХреЛ рд╕рд░рд▓ рдмрдирд╛ рд╕рдХреЗред рдореИрдВрдиреЗ рдЗрд╕реЗ рдЗрд╕рд▓рд┐рдП рдмрдирд╛рдпрд╛ рддрд╛рдХрд┐ рдореИрдВ рдЗрд╕реЗ рд╕рдордЭ рд╕рдХреВрдВ, рдХрд╣реЛ, рдЖрдзрд╛ рд╕рд╛рд▓ред

Source: https://habr.com/ru/post/hi436748/


All Articles