рдЕрджреНрдпрддрди : рдЬреИрд╕рд╛ рдХрд┐ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕рд╣реА рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдореИрдВрдиреЗ рдПрдХ рдвреЗрд░ рдореЗрдВ рд╡рд┐рд░рд╛рд╕рдд рдФрд░ рдмрд╣реБрд░реВрдкрддрд╛ рдХреЛ рдорд┐рд▓рд╛рдпрд╛ред рдмрд╣реБрдд рд╕рдХрд▓ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗрдФрд░ рдирдП рд▓реЛрдЧреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдкрд╛рда рдХреЛ рдереЛрдбрд╝рд╛ рдмрджрд▓ рджрд┐рдпрд╛ред рдЗрд╕рд▓рд┐рдП, рдЕрдЧрд░ рдпрд╣ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдЯрд┐рдкреНрдкрдгреА рдкрд╛рда рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИ, рддреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдЗрд╕ рдЕрд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдорд╛рдлреА рдорд╛рдВрдЧрддрд╛ рд╣реВрдВред
рдПрдирдмреА : рд▓реЗрдЦ рдЗрд╕ рд╕рд╡рд╛рд▓ рдХрд╛ рдЬрд╡рд╛рдм рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рдХрд┐ "Google рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдмрдлрд╝рд░реНрд╕ рдХреНрдпрд╛ рд╣реИ" рдФрд░ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд╕реЗ рдмрдВрдзрд╛ рдирд╣реАрдВ рд╣реИред
рддреЛ, рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдмрдпрд╛рди:
- рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдмрдлрд╝рд░реНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдмрд╣реБрд░реВрдкрддрд╛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВ?
- рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдмрдбрд╝реА рдлрд╝рд╛рдЗрд▓ рд╣реЛрдиреЗ рдкрд░, рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдХреЛ рдХреИрд╕реЗ рдЦреЛрдЬрдирд╛ рдФрд░ рдЦреЛрдЬрдирд╛ рд╣реИ?
рдПрдирдмреА: рдпрд╣рд╛рдВ, рдЕрдВрдЧреНрд░реЗрдЬреА рд╢рдмреНрдж рд╕рдВрджреЗрд╢ рдХреЗ рдмрдЬрд╛рдп, "рд╕рдВрджреЗрд╢" рд╢рдмреНрдж рдпрд╛ "рд╕рдВрд░рдЪрдирд╛" рд╢рдмреНрдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдмрд╕ рдХреБрдЫ рд╡рд╛рдХреНрдпреЛрдВ рдореЗрдВ, рд╢рдмреНрдж "рд╕рдВрджреЗрд╢" рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИред
рднрд╛рдЧ I: рдмрд╣реБрд░реВрдкрддрд╛
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдореЗрдВ рддреАрди рд╡рд░реНрдЧ рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИрдВ: рд╕реНрдХреНрд╡рд╛рдпрд░, рд╕рд░реНрдХрд▓ рдФрд░ рдмрд╣реБрднреБрдЬред рдпрд╣ рднреА рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЙрди рд╕рднреА рдХреЗ рдкрд╛рд╕ рдПрдХ рд░рдВрдЧ рдХреНрд╖реЗрддреНрд░ рдФрд░ рдПрдХ рдЖрдИрдбреА рдлрд╝реАрд▓реНрдб рд╣реИред рдЗрд╕ рд╕реНрдерд╛рди рдкрд░, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдкреВрд░реНрд╡рдЬреЛрдВ рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░
рдЫрджреНрдо рдХреЛрдб
enum Color { RED, GREEN, BLUE } struct Point { int x; int y; } struct Shape { int id; Color color; } struct Square extends Shape { Point corner; int width; } struct Circle extends Shape { Point center; int radius; } struct Polygon extends Shape { Point [] points; }
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, Google рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдмрдлрд╝рд░реНрд╕ рдкрджрд╛рдиреБрдХреНрд░рдо рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЬреЙрди рдкреИрд░реАрдЬрд╝ рдЗрд╕ рд╕реАрдорд╛ рдХреЗ рд▓рд┐рдП рддреАрди рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдорд╛рдирддреЗ рд╣реИрдВред
рд╡реИрдХрд▓реНрдкрд┐рдХ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЖрдХреГрддрд┐ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рд╡реИрдХрд▓реНрдкрд┐рдХ рдХреНрд╖реЗрддреНрд░ рд╣реЛрддреЗ рд╣реИрдВред
рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ рдХрдИ рдЧрдВрднреАрд░ рдХрдорд┐рдпрд╛рдВ рд╣реИрдВ:
- рдЖрдк рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдХреЛ рдмрджрд▓реЗ рдмрд┐рдирд╛ рдПрдХ рдирдпрд╛ рд╡рд░реНрдЧ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗред рд╕рдВрдпреЛрдЧ рд╕реЗ, рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдФрд░ рдХреЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдмрди рд╕рдХрддреА рд╣реИред
- рдЖрдк (рд╕реНрдХреНрд╡рд╛рдпрд░ рдФрд░ рд╕рд░реНрдХрд▓) рджреЛрдиреЛрдВ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рд╢реБрд░реВ рдХрд░рдХреЗ рдПрдХ рдЕрдЬреНрдЮрд╛рдд рд╕реНрдХреНрд╡рд╛рдпрд░ рд╕рд░реНрдХрд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
- рдкреНрд░рд╛рдкреНрдд рдкреНрд░рдХрд╛рд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдЦреЗрддреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИред
geom-1.proto
enum Color { RED = 1; GREEN = 2; BLUE = 3; } message Point { required fixed32 x = 1; required fixed32 y = 2; } message Square { required Point corner = 1; required fixed32 width = 2; } message Circle { required Point center = 1; required fixed32 radius = 2; } message Polygon { repeated Point points = 1; } message Shape { required TYPE type = 1; required fixed32 id = 2; optional Color color = 3; // optional Square square = 4; optional Circle circle = 5; optional Polygon polygon= 6; }
рдиреЗрд╕реНрдЯреЗрдб рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬреЗрд╢рди
рдПрдХ рдЕрдиреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ рд╡рд╛рд░рд┐рд╕ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╢реЗрдк рд╕реНрдЯреНрд░рдХреНрдЪрд░ рддреИрдпрд╛рд░ рдХрд░рдирд╛ рдФрд░ рджреВрд╕рд░рд╛ рдХреНрд╖реЗрддреНрд░ рдЬреЛрдбрд╝рдирд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╡рд╛рд░рд┐рд╕ рдХреЗ рдХреНрд░рдордмрджреНрдз рдХреНрд╖реЗрддреНрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЭреВрда рдмреЛрд▓рддреЗ рд╣реИрдВред
рдпрд╣ рд╕рдмрд╕реЗ рд╕рдлрд▓ рд╡рд┐рдХрд▓реНрдк рднреА рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ "рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХ" рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрд╡рд░реНрдЧ рдХреНрд╖реЗрддреНрд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ "рдЕрдирдкреИрдХ" рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ , рдФрд░ рддрджрдиреБрд╕рд╛рд░ рдЕрдЦрдВрдбрддрд╛ рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХреА рдЬрд╛рдПрдЧреАред
рд╡реИрд╕реЗ рднреА, рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╕реБрдВрджрд░ рдирд╣реАрдВ рд╣реИред
geom-2.proto
enum TYPE { SQUARE = 1; CIRCLE = 2; POLYGON = 3; } enum Color { RED = 1; GREEN = 2; BLUE = 3; } message Point { required fixed32 x = 1; required fixed32 y = 2; } message Square { required Point corner = 1; required fixed32 width = 2; } message Circle { required Point center = 1; required fixed32 radius = 2; } message Polygon { repeated Point points = 1; } message Shape { required TYPE type = 1; required fixed32 id = 2; optional Color color = 3; // required bytes subclass = 4; }
рдиреЗрд╕реНрдЯреЗрдб рдПрдХреНрд╕рдЯреЗрдВрд╢рдиреНрд╕
рддреАрд╕рд░рд╛ (рдЕрдиреБрд╢рдВрд╕рд┐рдд) рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд╣рд▓реЗ рдХреЗ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рд╡реИрдХрд▓реНрдкрд┐рдХ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдмрдЬрд╛рдп рдиреЗрд╕реНрдЯреЗрдб рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реНрдХреНрд╡рд╛рдпрд░ рд╕рд░реНрдХрд▓ рдХрд╛ рдореБрдХрд╛рдмрд▓рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЯрд╛рдЗрдк рдлрд╝реАрд▓реНрдб рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
geom-final.proto
enum TYPE { SQUARE = 1; CIRCLE = 2; POLYGON = 3; } enum Color { RED = 1; GREEN = 2; BLUE = 3; } message Point { required fixed32 x = 1; required fixed32 y = 2; } message Shape { required TYPE type = 1; required fixed32 id = 2; optional Color color = 3; extensions 4 to max; } message Square { extend Shape { required Square shape = 5; } required Point corner = 1; required fixed32 width = 2; } message Circle { extend Shape { required Circle shape = 6; } required Point center = 1; required fixed32 radius = 2; } message Polygon { extend Shape { required Polygon shape = 7; } repeated Point points = 1; }
рдЖрдЗрдП рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд╛рднреЛрдВ рдкрд░ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред
- рд╡реИрдХрд▓реНрдкрд┐рдХ рдлрд╝реАрд▓реНрдб рдХреЗ рдмрдЬрд╛рдп рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
- "рдЗрдирд╣реЗрд░рд┐рдЯ" рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ (рдкреНрд░реЛрдЯреЛрдХреЙрд▓)
- рдЕрдиреНрдп рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ "рд╡рд╛рд░рд┐рд╕" рд╡рд░реНрдЧреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВред рдЬрдм рдРрд╕реЗ рдХрдИ рд╡рд░реНрдЧ рд╣реИрдВ, рддреЛ рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
- рдпрд╣ рддрдереНрдп рдХрд┐ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдиреЗрд╕реНрдЯреЗрдб рд╣реИрдВ, рдЖрдкрдХреЛ рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЛ рдПрдХ рд╣реА рдирд╛рдо рджреЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд▓реЗрдХреНрд╕рд┐рдХрд▓ рд╕реНрдХреЛрдк рдореЗрдВ рд╣реЛрдВрдЧреЗред рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпреЗ Square.shape, Circle.shape рдФрд░ Polygon.shape рд╣реИрдВ; рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕рдорд░реНрдерд┐рдд рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ, рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред
- рджреВрд╕рд░реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╡рд┐рдкрд░реАрдд, рд╕рдм рдХреБрдЫ рд░реВрдкрд░реЗрдЦрд╛ рджреНрд╡рд╛рд░рд╛ deserialized рд╣реЛрдЧрд╛ред
рднрд╛рдЧ II: рдЦреЛрдЬ
рдФрд░ рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдВрджреЗрд╢ рд╕рдВрд░рдЪрдирд╛ (geom.proto) рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╣реИред рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдФрд░ рд╕реНрд╡рдпрдВ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдмрдбрд╝реА рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдИред рдореИрдВ рдЗрд╕рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдореЗрд╢рд╛ рдПрдХ рд╕рд░рд▓ рдкрд╛рда рдЦреЛрдЬ рдХреЗ рд╕рд╛рде рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
- рд╕рдордиреНрд╡рд┐рдд рдХреБрд▓реНрд╣рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЛ рднреЗрджрддреЗ рд╣реБрдП рд╡реГрддреНрдд рдЬреНрдЮрд╛рдд рдХреАрдЬрд┐рдПред
- рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдЦрд╛рд▓реА рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдмрд╣реБрднреБрдЬ рдвреВрдВрдвреЗрдВ
- 10 рд╕реЗ рдЕрдзрд┐рдХ рдЕрдВрдХреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╣реБрднреБрдЬ рдвреВрдВрдвреЗрдВред
рд╕рд╣рдордд рд╣реВрдБ, рдирд┐рдпрдорд┐рдд grep рдпрд╣рд╛рдБ рд╣рдорд╛рд░реА рдорджрдж рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
рдмреЗрд╢рдХ, рдРрд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдЬреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдВрдХрдбрд╝реЗ рдХреА рддрд▓рд╛рд╢ рдХрд░реЗрдЧрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдВрд░рдЪрд┐рдд рдбреЗрдЯрд╛ рдФрд░ рдЙрд╕рдХрд╛ рдкреНрд░рд╛рд░реВрдк рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдкрдиреА рдХреНрд╡реЗрд░реА рднрд╛рд╖рд╛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд▓рд┐рдЦреЗрдВ?
рд╣рдо рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд▓реМрдЯреЗрдВрдЧреЗ:
-
type == "CIRCLE" && ((center.x - radius) < 0 || (center.y - radius) < 0))
// рд╕рдордиреНрд╡рд┐рдд рдЕрдХреНрд╖реЛрдВ рдХреЛtype == "CIRCLE" && ((center.x - radius) < 0 || (center.y - radius) < 0))
рд╡рд╛рд▓реЗ рд╡реГрддреНрдд рдЬреНрдЮрд╛рдд рдХрд░реЗрдВред -
type == "POLYGON" && #points == 0
//type == "POLYGON" && #points == 0
рдХреЛ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдЦрд╛рд▓реА рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдЦреЛрдЬреЗрдВ -
type == "POLYGON" && #points > 10
// 10 рд╕реЗ рдЕрдзрд┐рдХ рдмрд┐рдВрджреБрдУрдВ рд╡рд╛рд▓реЗ рдмрд╣реБрднреБрдЬ рдвреВрдВрдвреЗрдВред
рдпрд╣ рд╕рдм, рдФрд░ рдмрд╣реБрдд рдХреБрдЫ рдПрдХ рд╕реНрд╡-рдирд┐рд░реНрдорд┐рдд рдмрд╛рдЗрдХ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред
рдФрд░ рдпрд╣ рднреА, рд╡рд╣ рдХрд░ рд╕рдХрддрд╛ рд╣реИ
- рджреНрд╡рд┐рдЖрдзрд╛рд░реА рд╕реЗ рдкрд╛рда рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд
- рд╕рдВрджреЗрд╢реЛрдВ рд╕реЗ рдХреЗрд╡рд▓ рдХреБрдЫ рдлрд╝реАрд▓реНрдб рдХрд╛рдЯреЗрдВ рдФрд░ рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ
- рдПрдХ рдЕрдиреБрд░реЛрдз рдореЗрдВ рд▓рдЧрд╛рддрд╛рд░ рдХрдИ рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рд▓рдХреЛрдВ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рд╕рднреА рд╡рд░реНрдЧреЛрдВ рдХреЛ рдвреВрдВрдвреЗрдВред
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдмрд╛рдЗрдХ рдХреЛ рдЕрдкрдирд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдорд┐рд▓ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде, рдмрд╛рдЗрдХ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдФрд░ рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╖рдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рдЖрдкрдХрд╛ рдзрдиреНрдпрд╡рд╛рдж