рдлреЙрд░реНрдЪреНрдпреВрди рдХреА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг

рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рд╣рдлреНрддреЛрдВ рд╕реЗ, рдореИрдВ рд╕реА ++ рдореЗрдВ рдлреЙрд░реНрдЪреНрдпреВрди рдХреЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдпрд╣ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдмрд╣реБрдд рд╕рд╛рд░реЗ 2 рдбреА рдЕрдВрдХ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЙрдирд╕реЗ рдПрдХ рд╡реЛрд░реЛрдиреЛрдИ рдЖрд░реЗрдЦ рдмрдирд╛рддрд╛ рд╣реИ ред рдпрджрд┐ рдЖрдк рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рд╡реЛрд░реЛрдиреЛрдИ рдЖрд░реЗрдЦ рдХреНрдпрд╛ рд╣реИ, рддреЛ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:


рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдмрд┐рдВрджреБ рдХреЗ рд▓рд┐рдП, рдЬрд┐рд╕реЗ "рд╕рд╛рдЗрдЯ" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рдореЗрдВ рдХрдИ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рд╕реНрдерд╛рди рдХреЗ рдХрд░реАрдм рд╣реИрдВ рдмрд╛рдХреА рд╕рднреА рдХреА рддреБрд▓рдирд╛ рдореЗрдВред рдбреЙрдЯреНрд╕ рдХреЗ рдРрд╕реЗ рд╕реЗрдЯ рдКрдкрд░ рдХреА рдЫрд╡рд┐ рдореЗрдВ рджрд┐рдЦрд╛рдИ рдЧрдИ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рдмрдирд╛рддреЗ рд╣реИрдВред

рдлреЙрд░реНрдЪреНрдпреВрди рдХреЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ рдпрд╣ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╣реИ рдХрд┐ рд╡рд╣ рд╕рдордп рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЖрд░реЗрдЦ рдмрдирд╛рддрд╛ рд╣реИ O(n logn) (рдЬреЛ рдПрдХ рддреБрд▓рдирд╛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд▓рд┐рдП рдЗрд╖реНрдЯрддрдо рд╣реИ), рдЬрд╣рд╛рдВ рдПрдирдПрди рд╕реНрдерд╛рдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИред

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

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

рдлреЙрд░реНрдЪреНрдпреВрди рдПрд▓реНрдЧреЛрд░рд┐рдердо рд╡рд┐рд╡рд░рдг


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

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

рдореИрдВрдиреЗ рдЕрднреА рдХрд▓рди рд╡рд┐рдзрд┐ рдХрд╛ рдЫрджреНрдо рдХреЛрдб рд▓рд┐рдЦрд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрдкрдХреЛ рдЗрд╕рдХреА рд╡реИрд╢реНрд╡рд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЕрдВрджрд╛рдЬрд╛ рд╣реЛ:

  рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдерд╛рди рдХреЗ рд▓рд┐рдП рдИрд╡реЗрдВрдЯ рдХрддрд╛рд░ рдореЗрдВ рдПрдХ рд╕реНрдерд╛рди рдИрд╡реЗрдВрдЯ рдЬреЛрдбрд╝реЗрдВ
 рдЬрдм рддрдХ рдХрд┐ рдШрдЯрдирд╛ рдХрддрд╛рд░ рдЦрд╛рд▓реА рди рд╣реЛ рдЬрд╛рдП
     рд╢реАрд░реНрд╖ рдШрдЯрдирд╛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
     рдЕрдЧрд░ рдШрдЯрдирд╛ рдПрдХ рдЬрдЧрд╣ рдШрдЯрдирд╛ рд╣реИ
         рд╕рдореБрджреНрд░ рддрдЯ рдореЗрдВ рдПрдХ рдирдпрд╛ рдЪрд╛рдк рдбрд╛рд▓реЗрдВ
         рдирдП рд╕рд░реНрдХрд▓ рдИрд╡реЗрдВрдЯ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ
     рдЕрдиреНрдпрдерд╛
         рдЖрд░реЗрдЦ рдореЗрдВ рдПрдХ рд╢реАрд░реНрд╖ рдмрдирд╛рдПрдБ
         рд╣рдо рд╕рдореБрджреНрд░ рддрдЯ рд╕реЗ рдПрдХ рдХрдбрд╝рд╛ рд╣реБрдЖ рдЪрд╛рдк рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ
         рдЕрдорд╛рдиреНрдп рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╣рдЯрд╛рдПрдВ
         рдирдП рд╕рд░реНрдХрд▓ рдИрд╡реЗрдВрдЯ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ 

рдЪрд╛рд░реНрдЯ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛


рдореБрдЭреЗ рдЬреЛ рдкрд╣рд▓реА рд╕рдорд╕реНрдпрд╛ рдЖрдИ рд╡рд╣ рдереА рд╡реЛрд░реЛрдиреЛрдИ рдЖрд░реЗрдЦ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдЪреБрдирдирд╛ред

рдореИрдВрдиреЗ рдПрдХ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЬреЛ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдЬреНрдпрд╛рдорд┐рддрд┐ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рджреЛрдЧреБрдиреА рдХрдиреЗрдХреНрдЯреЗрдб рдПрдЬ рд▓рд┐рд╕реНрдЯ (DCEL) рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

рдореЗрд░рд╛ VoronoiDiagram рд╡рд░реНрдЧ рдЦреЗрддреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд╛рд░ рдХрдВрдЯреЗрдирд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:

 class VoronoiDiagram { public: // ... private: std::vector<Site> mSites; std::vector<Face> mFaces; std::list<Vertex> mVertices; std::list<HalfEdge> mHalfEdges; } 

рдореИрдВ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред

Site рд╡рд░реНрдЧ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдмрд┐рдВрджреБ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдерд╛рди рдкрд░ рдПрдХ рдЗрдВрдбреЗрдХреНрд╕ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕реЗ рдХрддрд╛рд░ рдореЗрдВ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИ, рд╕реЗрд▓ рдХреЛ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдФрд░ рдПрдХ рд╕рдВрдХреЗрддрдХ ( face ):

 struct Site { std::size_t index; Vector2 point; Face* face; }; 

рд╕реЗрд▓ рдХреЗ Vertex рдХреЛ Vertex рд╡рд░реНрдЧ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрдирдХреЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдПрдХ рд╕рдордиреНрд╡рдп рдХреНрд╖реЗрддреНрд░ рд╣реЛрддрд╛ рд╣реИ:

 struct Vertex { Vector2 point; }; 

рдпрд╣рд╛рдБ рдЖрдзреЗ рдХрд┐рдирд╛рд░реЛрдВ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ:

 struct HalfEdge { Vertex* origin; Vertex* destination; HalfEdge* twin; Face* incidentFace; HalfEdge* prev; HalfEdge* next; }; 

рдЖрдк рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рдЖрдзрд╛ рд░рд┐рдм рдХреНрдпрд╛ рд╣реИ? рд╡реЛрд░реЛрдиреЛрдИ рдЖрд░реЗрдЦ рдореЗрдВ рдПрдХ рдХрд┐рдирд╛рд░реЗ рджреЛ рдкрдбрд╝реЛрд╕реА рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЖрдо рд╣реИред DCEL рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ, рд╣рдо рдЗрди рдХрд┐рдирд╛рд░реЛрдВ рдХреЛ рджреЛ рдЕрд░реНрдз-рдХрд┐рдирд╛рд░реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ, рдФрд░ рд╡реЗ рдПрдХ twin рд╕реВрдЪрдХ рджреНрд╡рд╛рд░рд╛ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдзреЗ рдЫреЛрд░ рдореЗрдВ рдПрдХ рд╢реБрд░реБрдЖрддреА рдФрд░ рд╕рдорд╛рдкреНрддрд┐ рдмрд┐рдВрджреБ рд╣реИред incidentFace рдХреНрд╖реЗрддреНрд░ рдлрд╝реАрд▓реНрдб рдЙрд╕ рдЪреЗрд╣рд░реЗ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рдХрд┐рдирд╛рд░реЗ рдЖрдзреЗ рд╣реИрдВред DCEL рдореЗрдВ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рдЖрдзреЗ рдХрд┐рдирд╛рд░реЛрдВ рдХреА рдЪрдХреНрд░реАрдп рджреЛрдЧреБрдиреА рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реВрдЪреА рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЖрд╕рдиреНрди рдЖрдзреЗ рдХрд┐рдирд╛рд░реЗ рдПрдХ рд╕рд╛рде рдЬреБрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, prev рдФрд░ next рдлрд╝реАрд▓реНрдб рд╕реЗрд▓ рдореЗрдВ рдкрд┐рдЫрд▓реЗ рдФрд░ рдЕрдЧрд▓реЗ рдЖрдзреЗ рдХрд┐рдирд╛рд░реЛрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рдЖрдВрдХрдбрд╝рд╛ рдЗрди рд╕рднреА рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рд▓рд╛рд▓ рдЖрдзреЗ рдХрд┐рдирд╛рд░реЗ рдХреЗ рд▓рд┐рдП рджрд┐рдЦрд╛рддрд╛ рд╣реИ:


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

 struct Face { Site* site; HalfEdge* outerComponent; }; 

рдШрдЯрдирд╛ рдХрддрд╛рд░


рдЗрд╡реЗрдВрдЯ рдХрддрд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдорд╛рдирдХ рддрд░реАрдХрд╛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХрддрд╛рд░ рдХреЗ рд╕рд╛рде рд╣реИред рд╕реНрдерд╛рди рдФрд░ рд╕рд░реНрдХрд▓ рдШрдЯрдирд╛рдУрдВ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рд╣рдореЗрдВ рдХрддрд╛рд░ рд╕реЗ рд╕рд░реНрдХрд▓ рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЕрдм рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХрд╛рдВрд╢ рдорд╛рдирдХ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХрддрд╛рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЖрдкрдХреЛ рдЙрд╕ рдЖрдЗрдЯрдо рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ рдЬреЛ рд╢реАрд░реНрд╖ рдкрд░ рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ std::priority_queue рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВред рдкрд╣рд▓рд╛, рд╕рд░рд▓ рдПрдХ рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ valid рдзреНрд╡рдЬ рдЬреЛрдбрд╝рдирд╛ рд╣реИред valid рд╢реБрд░реВ рдореЗрдВ true ред рдлрд┐рд░, рд╣рдо рдХрддрд╛рд░ рд╕реЗ рд╡реГрддреНрдд рдШрдЯрдирд╛ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдмрд╕ рдЗрд╕рдХреЗ рдЭрдВрдбреЗ рдХреЛ false рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдВрдд рдореЗрдВ, рдореБрдЦреНрдп рд▓реВрдк рдореЗрдВ рд╕рднреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╕рдордп, рд╣рдо рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдШрдЯрдирд╛ рдХрд╛ valid рдзреНрд╡рдЬ рдореВрд▓реНрдп false , рдФрд░ рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдмрд╕ рдЗрд╕реЗ рдЫреЛрдбрд╝ рджреЗрдВ рдФрд░ рдЕрдЧрд▓реЗ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░реЗрдВред

рджреВрд╕рд░реА рд╡рд┐рдзрд┐ рдЬреЛ рдореИрдВрдиреЗ рд▓рд╛рдЧреВ рдХреА, рд╡рд╣ std::priority_queue рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдереАред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдореИрдВрдиреЗ рдЕрдкрдиреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХрддрд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛, рдЬреЛ рдЗрд╕рдореЗрдВ рдирд┐рд╣рд┐рдд рдХрд┐рд╕реА рднреА рддрддреНрд╡ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдРрд╕реА рдХрддрд╛рд░ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред рдореИрдВрдиреЗ рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдЪреБрдирд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛрдб рдХреНрд▓реАрдирд░ рдмрдирд╛рддрд╛ рд╣реИред

рддрдЯрд░реЗрдЦрд╛


рд╢реЛрд░рд▓рд╛рдЗрди рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдПрдХ рдЬрдЯрд┐рд▓ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдЧрд▓рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреЛрдИ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ O(n logn) ред рдЗрд╕ рд╕рдордп рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдХреБрдВрдЬреА рдПрдХ рд╕реНрд╡-рд╕рдВрддреБрд▓рди рд╡рд╛рд▓реЗ рдкреЗрдбрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╣рд╛ рд╕реЗ рдЖрд╕рд╛рди рд╣реИ!

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

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

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

рдпрд╣рд╛рдБ рдореЗрд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ Arc рдЪрд╛рдк рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рд╣реИ:

 struct Arc { enum class Color{RED, BLACK}; // Hierarchy Arc* parent; Arc* left; Arc* right; // Diagram VoronoiDiagram::Site* site; VoronoiDiagram::HalfEdge* leftHalfEdge; VoronoiDiagram::HalfEdge* rightHalfEdge; Event* event; // Optimizations Arc* prev; Arc* next; // Only for balancing Color color; }; 

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

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

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

 void Beachline::insertBefore(Arc* x, Arc* y) { // Find the right place if (isNil(x->left)) { x->left = y; y->parent = x; } else { x->prev->right = y; y->parent = x->prev; } // Set the pointers y->prev = x->prev; if (!isNil(y->prev)) y->prev->next = y; y->next = x; x->prev = y; // Balance the tree insertFixup(y); } 

x рддреАрди рдЪрд░рдгреЛрдВ рдореЗрдВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ y рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдирд╛:

  1. рдирдпрд╛ рдиреЛрдб рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдерд╛рди рдЦреЛрдЬреЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрд╡рд▓реЛрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛: рдмрд╛рдПрдВ рдмрдЪреНрдЪрд╛ x рдпрд╛ рджрд╛рдпрд╛рдБ рдмрдЪреНрдЪрд╛ x->prev рд╣реИ Nil , рдФрд░ рдПрдХ рдЬреЛ Nil рд╣реИ x рд╕реЗ рдкрд╣рд▓реЗ рдФрд░ x->prev рдмрд╛рдж x->prev ред
  2. рд╕рдореБрджреНрд░ рддрдЯ рдХреЗ рдЕрдВрджрд░, рд╣рдо рдПрдХ рджреЛрд╣рд░реА рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реВрдЪреА рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рддрджрдиреБрд╕рд╛рд░ x->prev , y рдФрд░ x рддрддреНрд╡реЛрдВ рдХреЗ x->prev рдФрд░ next рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
  3. рдЕрдВрдд рдореЗрдВ, рд╣рдо рдмрд╕ рдкреЗрдбрд╝ рдХреЛ рд╕рдВрддреБрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХ рдореЗрдВ рд╡рд░реНрдгрд┐рдд insertFixup рд╡рд┐рдзрд┐ рдХреЛ рдХрд╣рддреЗ рд╣реИрдВред

insertAfter рдЬрд╛рддрд╛ рд╣реИред

рдкреБрд╕реНрддрдХ рд╕реЗ рд▓реА рдЧрдИ рдирд┐рд╖реНрдХрд╛рд╕рди рд╡рд┐рдзрд┐ рдХреЛ рдмрд┐рдирд╛ рдмрджрд▓рд╛рд╡ рдХреЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЪрд╛рд░реНрдЯ рдХреА рд╕реАрдорд╛


рдпрд╣рд╛рдБ рдлреЙрд░реНрдЪреНрдпреВрди рдХреЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╕реЗ рдЙрддреНрдкрд╛рджрди рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╣реИ:


рдЫрд╡рд┐ рдХреА рд╕реАрдорд╛ рдкрд░ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рдХреБрдЫ рдХрд┐рдирд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЫреЛрдЯреА рд╕реА рд╕рдорд╕реНрдпрд╛ рд╣реИ: рд╡реЗ рдЦреАрдВрдЪреА рдирд╣реАрдВ рдЬрд╛рддреА рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЕрдирдВрдд рд╣реИрдВред

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

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

рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдлреЙрд░реНрдЪреНрдпреВрди рдХрд╛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╣рдореЗрдВ рдЬрд▓реНрджреА рд╕реЗ рдЕрдВрддрд╣реАрди рдХрд┐рдирд╛рд░реЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ: рд╡реЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдЕрдВрдд рдореЗрдВ рд╕рдореБрджреНрд░ рддрдЯ рдореЗрдВ рдЕрднреА рднреА рдЖрдзреЗ рдХрд┐рдирд╛рд░реЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИрдВред

рдореЗрд░рд╛ рдкреНрд░рддрд┐рдмрдВрдз рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдмреЙрдХреНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рддреАрди рдЪрд░рдг рд╣реЛрддреЗ рд╣реИрдВ:

  1. рдпрд╣ рдЖрдпрдд рдХреЗ рдЕрдВрджрд░ рдЖрд░реЗрдЦ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╢реАрд░реНрд╖ рдХреЛ рд╕реНрдерд╛рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
  2. рд╣рд░ рдЕрдирдВрдд рдзрд╛рд░ рдХреЛ рдХрд╛рдЯ рджреЛред
  3. рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИред

рдЪрд░рдг 1 рддреБрдЪреНрдЫ рд╣реИ - рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдЖрдпрдд рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдпрджрд┐ рдЗрд╕рдореЗрдВ рдПрдХ рд╢реАрд░реНрд╖ рдирд╣реАрдВ рд╣реИред

рд╕реНрдЯреЗрдЬ 2 рднреА рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ - рдЗрд╕рдореЗрдВ рдХрд┐рд░рдгреЛрдВ рдФрд░ рдЖрдпрдд рдХреЗ рдмреАрдЪ рдХреЗ рдЪреМрд░рд╛рд╣реЛрдВ рдХреА рдЧрдгрдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред

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

рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдХреЛрдб рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░реЗрдВ рдФрд░ рд╕рд╡рд╛рд▓ рдкреВрдЫреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдкрдХреЛ рдЗрд╕ рднрд╛рдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╡рд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдпрд╣рд╛рдБ рдЖрд╡рд░реНрддреА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдЖрд░реЗрдЦ рд╣реИ:


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


рдЖрдпрдд рдХреЗ рд╕рд╛рде рдЕрдВрддрд░рд╡рд┐рд░реЛрдз


рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛! рд▓реЗрдХрд┐рди рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рдкрд╣рд▓реА рдЫрд╡рд┐ рдмреЗрд╣рддрд░ рд╣реИ, рд╣реИ рдирд╛?

рдХрдИ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ, рд╡реЛрд░реЛрдиреЛрдИ рдЖрд░реЗрдЦ рдФрд░ рдЖрдпрдд рдХреЗ рдмреАрдЪ рдХреЗ рдЕрдВрддрд░ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реА рдЫрд╡рд┐ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

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

рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ: рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд▓ рдХреЗ рдЖрдзреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЖрдзреЗ рдХрд┐рдирд╛рд░реЗ рдФрд░ рдЖрдпрдд рдХреЗ рдмреАрдЪ рдХреЗ рдЕрдВрддрд░ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред рдкрд╛рдВрдЪ рдорд╛рдорд▓реЗ рд╕рдВрднрд╡ рд╣реИрдВ:

  1. рдЖрдзрд╛ рд░рд┐рдм рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЖрдпрдд рдХреЗ рдЕрдВрджрд░ рд╣реЛрддрд╛ рд╣реИ: рд╣рдо рдРрд╕реЗ рдЖрдзреЗ рд░рд┐рдм рдХреЛ рдмрдЪрд╛рддреЗ рд╣реИрдВ
  2. рдЖрдзрд╛ рд░рд┐рдм рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЖрдпрдд рдХреЗ рдмрд╛рд╣рд░ рд╣реИ: рд╣рдо рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЖрдзреЗ рд░рд┐рдм рдХреЛ рддреНрдпрд╛рдЧрддреЗ рд╣реИрдВ
  3. рдЖрдзрд╛ рд░рд┐рдм рдЖрдпрдд рдХреЗ рдмрд╛рд╣рд░ рдЬрд╛рддрд╛ рд╣реИ: рд╣рдо рдЖрдзреЗ рд░рд┐рдм рдХреЛ рдХрд╛рдЯрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЕрдВрддрд┐рдо рдЖрдзреЗ рд░рд┐рдм рдХреЗ рд░реВрдк рдореЗрдВ рдмрдЪрд╛рддреЗ рд╣реИрдВ рдЬреЛ рдмрд╛рд╣рд░ рдЬрд╛рддрд╛ рд╣реИ ред
  4. рдЖрдзрд╛-рд░рд┐рдм рдЖрдпрдд рдХреЗ рдЕрдВрджрд░ рдЬрд╛рддрд╛ рд╣реИ: рд╣рдо рдЗрд╕реЗ рдЖрдзрд╛ рд░рд┐рдм рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдЕрдВрддрд┐рдо рд╣рд╛рдл-рд░рд┐рдм рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рдЧрдпрд╛ (рд╣рдо рдЗрд╕реЗ 3 рдпрд╛ 5 рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдмрдЪрд╛рддреЗ рд╣реИрдВ)
  5. рдЖрдзреА рдкрд╕рд▓реА рджреЛ рдмрд╛рд░ рдЖрдпрдд рдХреЛ рдкрд╛рд░ рдХрд░рддреА рд╣реИ: рд╣рдо рдЖрдзреА рдкрд╕рд▓реА рдХреЛ рдХрд╛рдЯрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдкрд┐рдЫрд▓реА рдЖрдзреА рдкрд╕рд▓реА рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдзрд╛ рдкрд╕рд▓реА рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬреЛ рдмрд╛рд╣рд░ рдЪрд▓реА рдЧрдИ рдереА , рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдирдП рдЕрдВрддрд┐рдо рдЖрдзреЗ рдкрд╕рд▓реА рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВред

рд╣рд╛рдВ, рдХрдИ рдорд╛рдорд▓реЗ рд╕рд╛рдордиреЗ рдЖрдП рд╣реИрдВред рдореИрдВрдиреЗ рдЙрди рд╕рднреА рдХреЛ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪрд┐рддреНрд░ рдмрдирд╛рдпрд╛:


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

рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдПрдХ рдмрдВрдзреЗ рдЖрд░реЗрдЦ рдкрд░ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдкрд░, рд╣рдореЗрдВ рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рддрд╛ рд╣реИ:


рдирд┐рд╖реНрдХрд░реНрд╖


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

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

  • n=1000 : 2 рдорд┐
  • n=$10,00 : 33 рдорд┐
  • n=$100,00 : 450 рдорд┐
  • n=$1,000,00 : 6600 рдорд┐

рдореЗрд░реЗ рдкрд╛рд╕ рдЗрди рд╕рдВрдХреЗрддрдХреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рддреЗрдЬрд╝ рд╣реИ!

рд╕рдВрджрд░реНрдн рд╕рд╛рдордЧреНрд░реА


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


All Articles