... рд╕реА ++ рдореЗрдВ рдПрдХ рдкреИрд░рд╛рдореАрдЯреНрд░рд┐рдХ рд▓реЙрдЧ рд╣реЛрдо рдХреА рдореЙрдбрд▓рд┐рдВрдЧ рдХрд░рдирд╛


рдХреМрди рдкрд░рд╡рд╛рд╣ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдкреИрд░рд╛рдореАрдЯреНрд░рд┐рдХ рд▓реЙрдЧ рдХреЗрдмрд┐рди рдХреЛ C ++ рдХреЛрдб рдХреА рдХреБрдЫ рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рдХреИрд╕реЗ рдореЙрдбрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП - рдХреГрдкрдпрд╛, рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗред


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

рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдбреЗрдореЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рд╕реЛрд░реНрд╕ рдХреЛрдб рдпрд╣рд╛рдБ рджрд┐рдП рдЧрдП рд╣реИрдВред
рдЖрдИрдУрдПрд╕
рдореИрдХ
рдЬреАрддрдирд╛

рдкреИрд░рд╛рдореАрдЯреНрд░рд┐рдХ рд▓реЙрдЧ рд╣рд╛рдЙрд╕ рдХрд╛ рдПрдХ рдореЙрдбрд▓ рдмрдирд╛рдПрдВред рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХреЗрд╡рд▓ рддреАрди рдорд╛рдкрджрдВрдбреЛрдВ - рд▓реЙрдЧ рдЕрдиреБрднрд╛рдЧ рдХреЗ рддреНрд░рд┐рдЬреНрдпрд╛, рдШрд░ рдХреА рдЪреМрдбрд╝рд╛рдИ рдФрд░ рдШрд░ рдХреА рд▓рдВрдмрд╛рдИ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддреЗ рд╣реИрдВред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдирдП рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рд╢реБрд░реВрдЖрдд рдХреБрдЫ рднреА рдирдпрд╛ рдирд╣реАрдВ рд▓рд╛рдПрдЧреАред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдореЗрдВ рдШрд░ рдХреЗ рдПрдХ рдореЙрдбрд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛
void Build(sgFloat log_size, sgFloat houseSizeX, sgFloat houseSizeY); 

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛрд░ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ sgCore рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рдкрд╣рд▓реЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдкрд╣рд▓реЗ рдореБрдЦреНрдп рдзрд╛рдЧреЗ рдореЗрдВ рдПрдХ рдмрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
 sgInitKernel(); 

рд╣рдорд╛рд░рд╛ рдкрд╣рд▓рд╛ рдХрджрдо рд▓реЙрдЧ рдХреЗ рдПрдХ рдЦрдВрдб рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рд╣реИред рд▓реЙрдЧ рдХреЗ рд▓рд┐рдП рди рдХреЗрд╡рд▓ рдПрдХ-рджреВрд╕рд░реЗ рдкрд░ рдЭреВрда рдмреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд▓реНрдХрд┐ рдЕрдзрд┐рдХ рдпрд╛ рдХрдо рд╕реНрдерд┐рд░ рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдиреБрднрд╛рдЧ рдХреЛ рдЧреЛрд▓ рдирд╣реАрдВ рдмрд▓реНрдХрд┐ рджреЛ рдЖрд░реНрдХреНрд╕ рд╕реЗ рдорд┐рд▓рдХрд░ рдмрдирд╛рдПрдВрдЧреЗ:



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



рджреЛ рдЖрд░реНрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рд╣реА рддреНрд░рд┐рдЬреНрдпрд╛ рдХреЗ рджреЛ рд╣рд▓рдХреЛрдВ рдХреЗ рдкреНрд░рддрд┐рдЪреНрдЫреЗрджрди рдмрд┐рдВрджреБрдУрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рддреНрд░рд┐рдЬреНрдпрд╛ рд╣рдорд╛рд░реЗ рдореЙрдбрд▓ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ - рдЗрд╕рд▓рд┐рдП, рд▓реЙрдЧ рдХреЗ рд╕рдореЛрдЪреНрдЪ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдХрд╛рд░реНрдп рдореЗрдВ рдПрдХ рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реЛрдЧрд╛ - рд▓реЙрдЧ рдХреА рддреНрд░рд┐рдЬреНрдпрд╛
 void BuildLogSection(sgFloat log_size); 

рддреАрди рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдкрд╣рд▓рд╛ рдЦрдВрдб рдЪрд╛рдк рдмрдирд╛рдПрдБ:



рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЗрди рджреЛрдиреЛрдВ рд╣рд▓рдХреЛрдВ рдХреЗ рдЪреМрд░рд╛рд╣реЗ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдг 45 рдбрд┐рдЧреНрд░реА рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред рдлрд┐рд░ рдкрд╣рд▓реЗ рдЪрд╛рдк рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдмрд┐рдВрджреБрдУрдВ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╣реЛрдВрдЧреЗ:
 SG_POINT arc1BeginP = {log_size*cosCalc, -log_size*sinCalc, 0}; SG_POINT arc1EndP = {-log_size*cosCalc, -log_size*sinCalc, 0}; SG_POINT arc1MidP = {0, log_size, 0}; 

рдЬрд╣рд╛рдВ log_size рд▓реЙрдЧ рдХреА рддреНрд░рд┐рдЬреНрдпрд╛ рд╣реИ, рдФрд░ sinCalc рдФрд░ cosCalc рдХреЛрдг рдХреА рд╕рд╛рдЗрди рдФрд░ рдХреЛрдЬрд╝рд╛рдЗрди рд╣реИрдВ, рдЬреЛ рдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рд╕рд╣рдордд рдереЗ, 45 рдбрд┐рдЧреНрд░реА рд╣реИред рд╡рд┐рднрд┐рдиреНрди рдХреЛрдгреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдХреЗ, рдЖрдк рджреЛ рдЖрд░реНрдХреНрд╕ рд╡рд╛рд▓реЗ рд╡рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рдПрдХ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрди рддреАрди рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдПрдХ рдЖрд░реНрдХ рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рдПрдВ:
 SG_ARC arc1; arc1.FromThreePoints(arc1BeginP, arc1EndP, arc1MidP, false); 


рдкрд╣рд▓реЗ рддреАрди рддрд░реНрдХреЛрдВ рдХреЛ рдЕрдВрдХреЛрдВ рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рдЕрдВрддрд┐рдо рддрд░реНрдХ рддреАрди рдмрд┐рдВрджреБрдУрдВ рджреНрд╡рд╛рд░рд╛ рджрд┐рдП рдЧрдП рдЪрд╛рдк рдХреЛ рдкрд▓рдЯрдирд╛ рдпрд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рдЧрд▓рдд рд╣реИ, рддреЛ рдЖрд░реНрдХ рдХрд╛ рдордзреНрдп рдмрд┐рдВрджреБ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЬрд╛ рд░рд╣реЗ рдЖрд░реНрдХ рдкрд░ рдЭреВрда рд╣реЛрдЧрд╛, рдпрджрд┐ рд╕рд╣реА рд╣реИ, рддреЛ рдПрдХ рдЖрд░реНрдХ рдмрдирд╛рдПрдВ рдЬреЛ рдкрд╣рд▓реЗ рд╕рд░реНрдХрд▓ рдореЗрдВ рдмрдирд╛рдП рдЧрдП рдЖрд░реНрдХ рдХреЛ рдкреВрд░реНрдг рд╕рд░реНрдХрд▓ рдореЗрдВ рдкреВрд░рдХ рдХрд░рддрд╛ рд╣реИред

рд╣рдо рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рджреВрд╕рд░рд╛ рдЖрд░реНрдХ рдмрдирд╛рдПрдВрдЧреЗ - рджреЛ рдЫреЛрд░ рдмрд┐рдВрджреБрдУрдВ рдкрд░, рдЖрд░реНрдХ рдХреЗ рдкреНрд▓реЗрди рдФрд░ рддреНрд░рд┐рдЬреНрдпрд╛ рдХреЗ рд╕рд╛рдорд╛рдиреНрдпред рджреВрд╕рд░реЗ рдЪрд╛рдк рдХреЗ рдЕрдВрддрд┐рдо рдмрд┐рдВрджреБ рдкрд╣рд▓реЗ рдХреЗ рдЕрдВрдд рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВ, рдЪрд╛рдк рдХреЗ рд╡рд┐рдорд╛рди рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд╣реИ Z рдЕрдХреНрд╖, рдЕрд░реНрдерд╛рдд, рд╡реЗрдХреНрдЯрд░ (0,0,1) рд╣реИ, рдФрд░ рддреНрд░рд┐рдЬреНрдпрд╛ рдкрд╣рд▓реЗ рдЪрд╛рдк рдХреЗ рд╕рдорд╛рди рд╣реИ, рдЬреЛ log_size рд╣реИред рд╣рдо рджреВрд╕рд░реА рдЪрд╛рдк рдХреА рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ:
 SG_ARC arc2; arc2.FromBeginEndNormalRadius(arc1BeginP, arc1EndP, zAxe, log_size, false); 

рдЕрдЧрд▓рд╛, рд╣рдореЗрдВ рд╕реНрд╡рдпрдВ рдЬреНрдпрд╛рдорд┐рддреАрдп рдХрд░реНрдиреЗрд▓ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - sgCObject рдХреЗ рд╡рд╛рд░рд┐рд╕ред рдЖрд░реНрдХреНрд╕ рдХреЗ рд▓рд┐рдП, рдпреЗ рд╡рд░реНрдЧ sgCArc рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛрдВрдЧреЗред рдЪреВрдВрдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣рдо рдЗрди рдЖрд░реНрдХ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдореЛрдЪреНрдЪ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВрдЧреЗ, рдлрд┐рд░ рддреБрд░рдВрдд рд╣рдорд╛рд░реЗ рдЖрд░реНрдХ рдХреЛ рдПрдХ рд╕рд░рдгреА рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВ:
 sgCObject* acrsObjs[2]; acrsObjs[0] = sgCArc::Create(arc1); acrsObjs[1] = sgCArc::Create(arc2); 

рдФрд░ рд╕реНрд╡рдпрдВ рд╣реА рдорд╛рд░реНрдЧ рдмрдирд╛рдПрдБ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд▓реЙрдЧ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗ:
 m_log_section = sgCContour::CreateContour(acrsObjs, 2); 

рдЕрдиреБрднрд╛рдЧ рдирд┐рд░реНрдорд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдПрдХ рд▓реЙрдЧ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рд╣рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рд▓рдВрдмрд╛рдИ рдХреЗ рд▓реЙрдЧ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╣рдо рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдПрдВрдЧреЗ рдЬреЛ рд╣рдорд╛рд░реЗ рдЕрдиреБрднрд╛рдЧ рдХреЛ рдПрдХ рдордирдорд╛рдиреА рд▓рдВрдмрд╛рдИ рддрдХ рдПрдХреНрд╕рдЯреНрд░реВрдЬрд╝ рдХрд░рддрд╛ рд╣реИред
 sgC3DObject* BuildLog(sgFloat logH); 

рдЪреВрдБрдХрд┐ рд╣рдордиреЗ XOY рд╡рд┐рдорд╛рди рдореЗрдВ рдПрдХ рд╕рдореЛрдЪреНрдЪ рд╕рдореЛрдЪреНрдЪ рдмрдирд╛рдпрд╛ рд╣реИ, рд╣рдо Z рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде рд▓реЙрдЧ рд╕реЗрдХреНрд╢рди рд╕рдореЛрдЪреНрдЪ (рдЦрдВрдб рд╡рд┐рдорд╛рди рдХреЗ рд▓рд┐рдП рд▓рдВрдмрд╡рдд) рдХреЛ рд╣рдЯрд╛ рджреЗрдВрдЧреЗ:
 SG_VECTOR extrVect = {0,0, logH}; sgCObject* logObj = sgKinematic::Extrude(*m_log_section, NULL, 0, extrVect, true); 

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

рдЖрдЗрдП рдордирдорд╛рдиреА рд▓рдВрдмрд╛рдИ рдХрд╛ рдкрд╣рд▓рд╛ рд▓реЙрдЧ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреЗ рджреГрд╢реНрдп рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
 sgGetScene()->AttachObject(BuildLog(houseSizeX)); 

рдХрд╛рд░реНрдпрдХреНрд░рдо рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдПрдХ рдЦрд╛рд▓реА рджреГрд╢реНрдп рджреЗрдЦреЗрдВрдЧреЗред рд▓реЙрдЧ рдХрд╣рд╛рдБ рд╣реИ ???
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд▓реЙрдЧ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЗрд╕реЗ рдЦреАрдВрдЪрд╛ рдЬрд╛рдПрдЧрд╛ рдпрджрд┐ рдЖрдк рдбреНрд░рд╛рдЗрдВрдЧ рдХреЗ рд▓рд┐рдП рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рддреНрд░рд┐рдХреЛрдг рдХреА рдПрдХ рд╕рд░рдгреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдмрд╛рдЗрдирд░реА рдореЙрдбрд▓ред рдЕрдм рддрдХ, рд╣рдорд╛рд░реЗ рд▓реЙрдЧ рдореЗрдВ рдХреЛрдИ рддреНрд░рд┐рдХреЛрдг рдирд╣реАрдВ рд╣реИ - рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рджреЗрдЦрд╛ред
рддреНрд░рд┐рднреБрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдХрдЯ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рддреНрд░рд┐-рдЖрдпрд╛рдореА рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдП, рд╡рд╕реНрддреБ рдХреЛ рддреНрд░рд┐рднреБрдЬ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рднреА рдирд┐рд░реНрдорд┐рдд рддреАрди-рдЖрдпрд╛рдореА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП, рдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рддреНрд░рд┐рдХреЛрдгрд╛рд╕рди рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдзреНрд╡рдЬ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
 sgC3DObject::AutoTriangulate(true, SG_DELAUNAY_TRIANGULATION); 

рджреВрд╕рд░рд╛ рддрд░реНрдХ рддреНрд░рд┐рдХреЛрдгрд╛рд╕рди рдХрд╛ рдкреНрд░рдХрд╛рд░ рд╣реИред рддреНрд░рд┐рдХреЛрдгреАрдпрдХрд░рдг рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ sgCore рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдПрдХ рд╕реВрдХреНрд╖реНрдорддрд╛ рд╣реИред рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рддреНрд░рд┐рднреБрдЬ рдХрд░рдирд╛ рдХреБрдЫ рд╕рдордп рд▓реЗ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдФрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рддреНрд░рд┐рдХреЛрдгрд╛рд╕рди рд╣реА рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ - рдХреЗрд╡рд▓ рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдЬрдЯрд┐рд▓ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдордзреНрдпрд╡рд░реНрддреА рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рддреНрд░рд┐рдХреЛрдгреАрдХрд░рдг рдХреЛ рдмрдВрдж рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рддреНрд░рд┐рдХреЛрдгрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреЗрдЦреЗрдВрдЧреЗред рдЪреВрдБрдХрд┐ рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рддрдХ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрдИ рдЬрдЯрд┐рд▓ рдСрдкрд░реЗрд╢рди рд╣реЛрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╕реНрд╡рдд: рддреНрд░рд┐рдХреЛрдгрд╛рд╕рди рдХреЛ рдмрдВрдж рдХрд░ рджреЗрдВрдЧреЗ рдФрд░ рдХреЗрд╡рд▓ рдЙрди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рддреНрд░рд┐рднреБрдЬрд┐рдд рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рдирдХреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреЗ рд▓реЙрдЧ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рдереЛрдбрд╝рд╛ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВ:
 sgC3DObject* log1 = BuildLog(houseSizeX); log1->Triangulate(SG_DELAUNAY_TRIANGULATION); 

рдпрд╣рд╛рдБ рд╣рдореЗрдВ рдХреНрдпрд╛ рдорд┐рд▓рддрд╛ рд╣реИ:



рдЕрдЧрд▓рд╛ рдЪрд░рдг рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд░реНрдорд┐рдд рд▓реЙрдЧ рдХреЗ рд▓рд┐рдП рдЦрд╛рдВрдЪреЗ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╣реЛрдЧрд╛ред рдЧреНрд░реВрд╡реНрд╕ рдЙрди рдЬрдЧрд╣реЛрдВ рдкрд░ рдПрдХ рд▓реЙрдЧ рдореЗрдВ рднрд░реНрддреА рд╣реЛрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдПрдХ рдФрд░ рд▓реЙрдЧ рд▓реЙрдЧ рдореЗрдВ рдлрд┐рдЯ рд╣реЛрдЧрд╛ред рд╣рдо рдЕрдкрдиреЗ рд▓реЙрдЧ рдореЗрдВ рдЦрд╛рдВрдЪреЗ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВрдЧреЗ рдЬрд╣рд╛рдВ рд▓реЙрдЧ рдЙрд╕ рдкрд░ рдЭреВрда рд╣реЛрдВрдЧреЗ, рдЬрд┐рд╕ рдкрд░ рдпрд╣ рд▓реЙрдЧ рдЭреВрда рд╣реИ, рд▓реЙрдЧ рд╣рд╛рдЙрд╕ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рдЕрдкрдирд╛рдП рдЧрдП рдорд╛рд░реНрдЬрд┐рди рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдПред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдирдП рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╢реБрд░реВ рдХрд░рдХреЗ рд▓реЙрдЧ рдХрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ:
 sgC3DObject* BuildLog(sgFloat logH, bool withGroove, sgFloat logH, bool withGroove, sgFloat groove_size, sgFloat grooveShift); 

withGroove - рдзреНрд╡рдЬ рдЪрд╛рд╣реЗ рд╡рд╣ рдирд╛рд▓реА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛ
groove_size - рдирд╛рд▓реА рддреНрд░рд┐рдЬреНрдпрд╛ (рд▓реЙрдЧ рдХреЗ рддреНрд░рд┐рдЬреНрдпрд╛ рдХреЗ рдмрд░рд╛рдмрд░)
рдЧреНрд░реВрд╡рд╢рд┐рдлреНрдЯ - рд▓реЙрдЧ рдХреЗ рдХрд┐рдирд╛рд░реЗ рд╕реЗ рдЗрдВрдбреЗрдВрдЯ рдЬрд┐рд╕ рдкрд░ рдЧреНрд░реВрд╡ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рджреЛ рдЦрд╛рдВрдЪреЗ рд╣реЛрдВрдЧреЗ - рд▓реЙрдЧ рдХреЗ рджреЛрдиреЛрдВ рдЫреЛрд░ рд╕реЗред
рдЦрд╛рдВрдЪреЗ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдмреВрд▓рд┐рдпрди рдШрдЯрд╛рд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдЧрддрд┐ рдХреЗ рд▓рд┐рдП, рдШрдЯрд╛рдИ рдЧрдИ рд╡рд╕реНрддреБ рдПрдХ рд╕рд┐рд▓реЗрдВрдбрд░ рд╣реЛрдЧреАред рдмреЗрд╢рдХ, рдЖрдк рдПрдХ рдФрд░ рд▓реЙрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рд▓реЙрдЧ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкреНрд░рддрд┐рдЪреНрдЫреЗрдж рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╕рд┐рд▓реЗрдВрдбрд░ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдПрдХреНрд╕рдЯреНрд░реВрдбреЗрдб рд╕рдореЛрдЪреНрдЪ рдХреЗ рджреВрд╕рд░реЗ рдЪрд╛рдк рджреНрд╡рд╛рд░рд╛ рдЧрдард┐рдд рдЕрд╡рдХрд╛рд╢ рдирд╛рд▓реА рдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ), рд╣рдо рд╕рд┐рд▓реЗрдВрдбрд░ рдХреЛ рдШрдЯрд╛рдПрдВрдЧреЗред
рдЪрд▓реЛ рдордирдорд╛рдиреА рд▓рдВрдмрд╛рдИ рдХреЗ рд▓реЙрдЧ рдХреЗ рддреНрд░рд┐рдЬреНрдпрд╛ рдХреЗ рдмрд░рд╛рдмрд░ рддреНрд░рд┐рдЬреНрдпрд╛ рдХреЗ рджреЛ рд╕рд┐рд▓реЗрдВрдбрд░ рдмрдирд╛рддреЗ рд╣реИрдВ (рдЗрд╕ рдЕрд╕реНрдерд╛рдпреА рд╡рд╕реНрддреБ рдХреА рд▓рдВрдмрд╛рдИ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛, рди рддреЛ рдХрд╛рдо рдХреА рдЧрддрд┐, рди рд╣реА рдкрд░рд┐рдгрд╛рдо рдЗрд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ)ред рдЗрд╕ рдХрджрдо рдкрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрди рдЕрд╕реНрдерд╛рдпреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд░рдЦрд╛ рдЬрд╛рдПред рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░рд╛ рд▓реЙрдЧ рдмреЗрд╕ XOY рд╡рд┐рдорд╛рди рдкрд░ рдЦрдбрд╝рд╛ рд╣реИ рдФрд░ Z рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЗрди рдЕрд╕реНрдерд╛рдпреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЙрдкрдпреБрдХреНрдд рддрд░реАрдХреЗ рд╕реЗ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрджрд┐рдо рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд┐рд▓рд┐рдиреНрдбрд░реЛрдВ рдХреЛ XOY рддрд▓ рдкрд░ рдПрдХ рдЖрдзрд╛рд░ рдХреЗ рд╕рд╛рде рднреА рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреА рдЙрддреНрдкрддреНрддрд┐ рдХреЗрдВрджреНрд░ рдкрд░ рд╣реЛрддреА рд╣реИ рдФрд░ Z рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдд рд╣реЛрддреА рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдореЗрдВ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ Y рдЕрдХреНрд╖ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдЕрдкрдиреА рдЕрд╕реНрдерд╛рдпреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдШреБрдорд╛рдирд╛ рд╣реИ, рдлрд┐рд░ рд╢рд┐рдлреНрдЯ рдХрд░рдирд╛ рд╣реИ рддрд╛рдХрд┐ рдирд╛рд▓реА рдХреА рдЧрд╣рд░рд╛рдИ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдПред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рд▓реЙрдЧ рдХреА рдЖрдзреА рдореЛрдЯрд╛рдИ рд╣реЛрдЧреА - рдпрд╛рдиреА, рдмрд╕ log_size рдкреИрд░рд╛рдореАрдЯрд░) рдФрд░ рд▓реЙрдЧ рдХреЗ рдХрд┐рдирд╛рд░реЛрдВ рд╕реЗ рдорд╛рд░реНрдЬрд┐рдиред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЗрди рдЕрд╕реНрдерд╛рдпреА рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
 if (withGroove) { sgFloat cylH = 10*groove_size; sgC3DObject* cyl1 = sgCreateCylinder(groove_size, cylH, 24); cyl1->InitTempMatrix()->Rotate(zeroP, yAxe, 90.0*M_PI/180.0); SG_VECTOR transVect = {-cylH/2, -groove_size, grooveShift}; cyl1->GetTempMatrix()->Translate(transVect); cyl1->ApplyTempMatrix(); cyl1->DestroyTempMatrix(); sgC3DObject* cyl2 = sgCreateCylinder(groove_size, cylH, 24); cyl2->InitTempMatrix()->Rotate(zeroP, yAxe, 90.0*M_PI/180.0); transVect.z = logH-grooveShift; cyl2->GetTempMatrix()->Translate(transVect); cyl2->ApplyTempMatrix(); cyl2->DestroyTempMatrix(); } 


рдЗрди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рддреНрд░рд┐рднреБрдЬ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдЗрдП рдЗрд╕реЗ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдХрд░реЗрдВ рдФрд░ рджреГрд╢реНрдп рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ, рдмрд╕ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рд╣рдордиреЗ рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рддрд░рд╣ рд░рдЦрд╛ рд╣реИ:



рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ред рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рдХреЛрдб рд╕реЗ рдЗрди рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рддреНрд░рд┐рдХреЛрдгрд╛рд╕рди рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рджреГрд╢реНрдп рдореЗрдВ рдирд╣реАрдВ рдЬреЛрдбрд╝реЗрдВрдЧреЗред
рдЕрдЧрд▓рд╛, рдЖрдкрдХреЛ рдЦрд╛рдВрдЪреЗ рдореЗрдВ рд▓реЙрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреВрд▓рд┐рдпрди рдШрдЯрд╛рд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкрд╣рд▓реА рдЕрд╕реНрдерд╛рдпреА рд╡рд╕реНрддреБ рдХреЛ рдШрдЯрд╛рдПрдВред рдЪреВрдВрдХрд┐ рдмреВрд▓рд┐рдпрди рдШрдЯрд╛рд╡ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдПрдХ рд╕рдореВрд╣ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд╡рд╣рд╛рдВ рд╡рд┐рдШрдЯрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╕рдореВрд╣ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╣рдЯрд╛рдПрдВ рдФрд░ рдкрд╣рд▓реЗ (рдФрд░ рдзреНрд╡рд╕реНрдд рд╕рдореВрд╣ рд╕реЗ рдПрдХрдорд╛рддреНрд░ рдСрдмреНрдЬреЗрдХреНрдЯ) рд▓реЙрдЧ рдХреЛ рд╕реВрдЪрдХ рдХреЛ рдкреБрди: рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдЙрд╕ рдЕрд╕реНрдерд╛рдпреА рд╕рд┐рд▓реЗрдВрдбрд░ рдХреЛ рд╣рдЯрд╛рдирд╛ рдирд╣реАрдВ рднреВрд▓реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдм рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдкреБрд░рд╛рдиреЗ рд▓реЙрдЧ рдСрдмреНрдЬреЗрдХреНрдЯ:
 sgCGroup* boolRes1 = sgBoolean::Sub((const sgC3DObject&)(*logObj), *cyl1); int ChCnt = boolRes1->GetChildrenList()->GetCount(); sgCObject** allChilds = (sgCObject**)malloc(ChCnt*sizeof(sgCObject*)); boolRes1->BreakGroup(allChilds); sgCObject::DeleteObject(boolRes1); sgCObject::DeleteObject(logObj); logObj = allChilds[0]; sgCObject::DeleteObject(cyl1); 


рд╣рдо рджреВрд╕рд░реЗ рд╕рддреНрдпрд╛рдкрди рд╕рд┐рд▓реЗрдВрдбрд░ рдХреЗ рд╕рд╛рде рднреА рдРрд╕рд╛ рд╣реА рдХрд░реЗрдВрдЧреЗ:
 boolRes1 = sgBoolean::Sub((const sgC3DObject&)(*logObj), *cyl2); ChCnt = boolRes1->GetChildrenList()->GetCount(); allChilds = (sgCObject**)malloc(ChCnt*sizeof(sgCObject*)); boolRes1->BreakGroup(allChilds); sgCObject::DeleteObject(boolRes1); sgCObject::DeleteObject(logObj); logObj = allChilds[0]; sgCObject::DeleteObject(cyl2); 


рдЗрди рджреЛ рдкрд░рд┐рдЪрд╛рд▓рдиреЛрдВ рдХреЗ рдмрд╛рдж рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рддреЗ рд╣реИрдВ:



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





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




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



рд╣рдо рдЕрдкрдиреА рдЦрд┐рдбрд╝рдХреА рдХреЛ рдмрд╣реБрдд рдкрд╣рд▓реЗ рджреАрд╡рд╛рд░ рдХреЗ рд▓реЙрдЧ рд╕реЗ рдШрдЯрд╛рдПрдВрдЧреЗред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЙрдирдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдХрд╛рд░реНрдп рдореЗрдВ рдЙрдирдХреЗ рддреНрд░рд┐рднреБрдЬ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдЦрд┐рдбрд╝рдХреА рдХреЗ рдШрдЯрд╛рд╡ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рддреНрд░рд┐рдХреЛрдгрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рджреАрд╡рд╛рд░ рд╕реЗ рдПрдХ рдЦрд┐рдбрд╝рдХреА рдХреЛ рдШрдЯрд╛рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рджреАрд╡рд╛рд░ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд▓реЙрдЧ рд╕реЗ рдЦрд┐рдбрд╝рдХреА рдХреА рд╡рд╕реНрддреБ рдХреЛ рдШрдЯрд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЖрдк рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреМрди рд╕рд╛ рд▓реЙрдЧ рд╕реНрдерд┐рдд рд╣реИ рдФрд░ рдЬрд╣рд╛рдВ рд╡рд┐рдВрдбреЛ рд╕реНрдерд┐рдд рд╣реИ рдФрд░ рдмреБрд▓рд┐рдпрди рдСрдкрд░реЗрд╢рди рдХреЛ рдХреЗрд╡рд▓ рдЙрди рд▓реЙрдЧреНрд╕ рдкрд░ рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рдВрдбреЛ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдЪреНрдЫреЗрдж рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдмреВрд▓рд┐рдпрди рдШрдЯрд╛рд╡ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдкрд░ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рдпрд╣ рд╢реВрдиреНрдп рд╣реИ, рддреЛ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдкреНрд░рддрд┐рдЪреНрдЫреЗрдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рднреА рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдмреВрд▓рд┐рдпрди рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рдХрдИ рдСрдмреНрдЬреЗрдХреНрдЯ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рд╡рд┐рдВрдбреЛ рд▓реЙрдЧ рдХреЛ рджреЛ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреА рд╣реИ)ред рд╕рднреА рдмреВрд▓рд┐рдпрди рдСрдкрд░реЗрд╢рди рдХреЗ рдмрд╛рдж рдЕрд╕реНрдерд╛рдпреА рдСрдмреНрдЬреЗрдХреНрдЯ рдФрд░ рдкреБрд░рд╛рдиреЗ рд▓реЙрдЧ рдХреЛ рд╣рдЯрд╛рдирд╛ рди рднреВрд▓реЗрдВ:
 size_t oldCnt = m_walls[0].size(); for (int i=0;i<oldCnt;i++) { sgCGroup* boolRes = sgBoolean::Sub(*m_walls[0][i], *winObj); if (boolRes) { int ChCnt = boolRes->GetChildrenList()->GetCount(); sgCObject** allChilds = (sgCObject**)malloc(ChCnt*sizeof(sgCObject*)); boolRes->BreakGroup(allChilds); sgCObject::DeleteObject(boolRes); sgGetScene()->DetachObject(m_walls[0][i]); sgDeleteObject(m_walls[0][i]); for (int j=0;j<ChCnt;j++) { ((sgC3DObject*)allChilds[j])->Triangulate(SG_VERTEX_TRIANGULATION); sgGetScene()->AttachObject(allChilds[j]); } m_walls[0][i] = (sgC3DObject*)allChilds[0]; for (int j=1;j<ChCnt;j++) m_walls[0].push_back((sgC3DObject*)allChilds[j]); free(allChilds); } else m_walls[0][i]->Triangulate(SG_VERTEX_TRIANGULATION); } sgDeleteObject(winObj); 


рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╣рдореЗрдВ рдЦрд┐рдбрд╝рдХреА рд╡рд╛рд▓реЗ рдШрд░ рдХрд╛ рдПрдХ рдореЙрдбрд▓ рдорд┐рд▓рддрд╛ рд╣реИ:



рдЕрдВрддрд┐рдо рдЪрд░рдг рдмрдирд╛ рд░рд╣рд╛ - рдПрдХ рдЫрдд рдврд▓рд╛рди рдХреЛ рдЬреЛрдбрд╝рдирд╛ред рд╣рдо рдЗрд╕реЗ рджреЛ рдЪрд░рдгреЛрдВ рдореЗрдВ рдХрд░реЗрдВрдЧреЗ - рдкрд╣рд▓реЗ рд╣рдо рдЫрдд рдХреА рд╕рддрд╣ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓реЙрдЧ рдХреЛ рдХрд╛рдЯрддреЗ рд╣реИрдВ, рдлрд┐рд░ рдврд▓рд╛рди рдХреА рдмрд╣реБрдд рд╕рддрд╣ рдмрдирд╛рддреЗ рд╣реИрдВред

рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕рднреА рдкрд╣рд▓реЗ рд╕реЗ рдмрдирд╛рдП рдЧрдП рдкреЗрдбрд╝реЛрдВ рдХреА рд╕рднреА рддреНрд░рд┐рдХреЛрдгреАрдп рдЪреБрдиреМрддрд┐рдпреЛрдВ рдХреЛ рджреВрд░ рдХрд░рддреЗ рд╣реИрдВред рдЫрдд рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп, рдЫрдд рдХреА рд╕рддрд╣ рд╕реЗ рд╕рднреА рд▓реЙрдЧ рдХрд╛ рдЯреНрд░рдВрдХреЗрд╢рди рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ - рдЕрд░реНрдерд╛рдд, рдмреВрд▓рд┐рдпрди рдШрдЯрд╛рд╡ред рд╣рдо рдЗрди рдШрдЯрд╛рдУрдВ рдХреЗ рд╕рднреА рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рддреНрд░рд┐рднреБрдЬ рдХрд░рддреЗ рд╣реИрдВред
рдЗрд╕рд▓рд┐рдП, рдПрдХреНрд╕рдЯреНрд░реВрдЬрд╝рди рдСрдкрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ рдЬреЛ рдЫрдд рдХреА рд╕рддрд╣ рдХреЗ рдиреАрдЪреЗ рд╣рдорд╛рд░реЗ рд▓реЙрдЧ рдХреЛ рдЫреЛрдЯрд╛ рдХрд░ рджреЗрдЧрд╛:

рдФрд░ рд╣рдо рдЗрд╕ рдЕрд╕реНрдерд╛рдпреА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рд╕рднреА рд▓реЙрдЧ рд╕реЗ рдШрдЯрд╛рддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рд╣рдордиреЗ рдкрд╣рд▓реА рджреАрд╡рд╛рд░ рдХреЗ рд▓реЙрдЧ рд╕реЗ рд╡рд┐рдВрдбреЛ рдХреЛ рдШрдЯрд╛рдпрд╛ рд╣реИ:

рдпрд╣ рдХреЗрд╡рд▓ рд░реИрдВрдк рдХреА рд╕рддрд╣ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХреНрд╕рдЯреНрд░реВрдЬрд╝рди рдСрдкрд░реЗрд╢рди рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╣рдореЗрдВ рдПрдХ рд▓реЙрдЧ рд╣рд╛рдЙрд╕ рдХрд╛ рддреИрдпрд╛рд░ рдореЙрдбрд▓ рдорд┐рд▓рддрд╛ рд╣реИ:


рдФрд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдХреЗ, рдЗрд╕ рдореЙрдбрд▓ рдХреА рд╡рд┐рд╡рд┐рдзрддрд╛рдУрдВ рдХреА рдПрдХ рдЕрдирдВрдд рд╕рдВрдЦреНрдпрд╛:


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


All Articles