рдЦреЛрдпрд╛ рд╣реБрдЖ рджрд╕реНрддрд╛рд╡реЗрдЬ рдпрд╛ рдкрд░рд┐рд╡рд░реНрддрди: рдореИрдЯреНрд░рд┐рдХреНрд╕ 3 рдбреА

рдЬрдм рдЖрдк рдЯреНрд░рд╛рдВрд╕рдлрд╝реЙрд░реНрдорд┐рдВрдЧ рдХреЗ рд▓рд┐рдП CSS3 рдХреЗ рдбреЙрдХреНрдпреВрдореЗрдВрдЯреЗрд╢рди рдореЗрдВ рдЙрддрд░рддреЗ рд╣реИрдВ: рдореИрдЯреНрд░рд┐рдХреНрд╕ 3 рдбреА, рдЖрдкрдХреЛ рдПрдХ рдЫреЛрдЯреА рдкрд░рд┐рднрд╛рд╖рд╛ рдорд┐рд▓рддреА рд╣реИ "рдПрдХ 4x4 рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ 3 рдбреА рдЯреНрд░рд╛рдВрд╕рдлрд╝реЙрд░реНрдо рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред"

matrix3d(m00, m01, m02, m03,
m10, m11, m12, m13,
m20, m21, m22, m23,
m30, m31, m31, m33)


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

рдбреЗрдореЛ | рдкреНрд░рд╛рдердорд┐рдХ рд╕реНрд░реЛрдд

рдереЛрдбрд╝рд╛ рд░реИрдЦрд┐рдХ рдмреАрдЬрдЧрдгрд┐рдд


рдХрд┐рд╕реА рднреА рдЬрдЯрд┐рд▓ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рддреАрди рдмреБрдирд┐рдпрд╛рджреА рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

рдШреБрдорд╛рдПрдБ (рдШреБрдорд╛рдиреЗ)
рд╕реНрдХреЗрд▓рд┐рдВрдЧ (рдкреИрдорд╛рдиреЗ)
Move (рдХрд╛ рдЕрдиреБрд╡рд╛рдж)

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

рдпреВрдирд┐рдЯ рдореИрдЯреНрд░рд┐рдХреНрд╕

рдЫрд╡рд┐

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

рд╣рдо рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдлреИрдХреНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдкрд╣рдЪрд╛рди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рдЧреБрдгрд╛ рдХрд░рдХреЗ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдмрдирд╛рдХрд░ рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗред
рд╕реНрдХреЗрд▓рдореИрдЯреНрд░реАрдХреНрд╕ = рдЗрдВрдбреЗрдВрдЯрд┐рдЯреАрдореИрдЯреНрд░рд┐рдХреНрд╕.multiply (s)

рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдореИрдЯреНрд░рд┐рдХреНрд╕

рд╕реНрдХреЗрд▓рдореИрдЯреНрд░рд┐рдХреНрд╕ = $ M ([
[s, 0,0,0],
[0, рдПрд╕, 0,0],
[0,0, s, 0],
[0,0,0, рдПрд╕]
])

рдЪреВрдБрдХрд┐ рд╣рдо рдЕрдиреБрд╡рд╛рдж рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рдмрджрд▓рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЕрдВрддрд┐рдо рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ 1 рд╕реЗ рдмрджрд▓реЗрдВ:

рд╕реНрдХреЗрд▓рдореИрдЯреНрд░рд┐рдХреНрд╕ = $ M ([
[s, 0,0,0],
[0, рдПрд╕, 0,0],
[0,0, s, 0],
[0,0,0,1]
])

рд░реЛрдЯреЗрд╢рди рдореИрдЯреНрд░рд┐рдХреНрд╕ (рдШреБрдорд╛рдПрдБ)


рд░реЛрдЯреЗрд╢рди рдХреЛ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдХреЛрдг рдкрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЕрдХреНрд╖ X, Y, Z рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдЗрдП рдкреНрд░рддреНрдпреЗрдХ рдЕрдХреНрд╖ рдХреЗ рдП, рдмреА, рд╕реА рдХреЗ рд░реВрдк рдореЗрдВ рдХреЛрдг рдорд╛рди рд▓реЗрдВред рдЗрд╕ рддрд░рд╣ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкрддреНрд░рд╛рдЪрд╛рд░:

рд░реЛрдЯреЗрд╢рдирдПрдХреНрд╕рдореИрдЯреНрд░рд┐рдХреНрд╕ = $ рдПрдо ([
[1,0,0,0]
[реж, рдореИрде.рдХреЛрд╕ (рдП), рдореИрде.рд╕рд┐рди (-рдП), реж],
[0, рдореИрде.рд╕рд┐рди (рдП), рдореИрде.рдХреЛрд╕ (рдП), 0],
[0,0,0,1]
])

рд░реЛрдЯреЗрд╢рдиYрдореЗрдЯреНрд░рд┐рдХреНрд╕ = $ рдПрдо ([
[Math.cos (b), 0, Math.sin (b), 0],
[0,1,0,0]
[Math.sin (-b), 0, Math.cos (b), 0],
[0,0,0,1]
])

рд░реЛрдЯреЗрд╢рдирдПрдордореИрдЯреНрд░рд┐рдХреНрд╕ = $ M ([
[Math.cos (c), Math.sin (-c), 0, 0],
[Math.sin (c), Math.cos (c), 0, 0],
[0,0,1,0]
[0,0,0,1]
])

рдкреНрд░рддреНрдпреЗрдХ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдПрдХ рдЕрдХреНрд╖ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рд░реЛрдЯреЗрд╢рди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред

рд╡рд┐рд╕реНрдерд╛рдкрди рдореИрдЯреНрд░рд┐рдХреНрд╕ (рдЕрдиреБрд╡рд╛рдж)

рдЕрдиреБрд╡рд╛рджрдореИрдЯреНрд░рд┐рдХреНрд╕ = $ M ([
[1,0,0,0]
[0,1,0,0]
[0,0,1,0]
[tx, ty, tz, 1]
])

рд╡рд┐рд╕реНрдерд╛рдкрди рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкрд┐рдХреНрд╕реЗрд▓ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд░рд┐рдгрд╛рдореА рджрд┐рд╢рд╛ рд╡реЗрдХреНрдЯрд░ рдореЗрдВ tx, ty, рдФрд░ tz рдорд╛рди рдЬреЛрдбрд╝рддрд╛ рд╣реИред

рдордЬрд╝рд╛


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

tM = рд░реЛрдЯреЗрд╢рдирдПрдХреНрд╕рдореИрдЯреНрд░рд┐рдХреНрд╕
.x (рд░реЛрдЯрд╛рдЗрдореИрдЯреНрд░рд┐рдХреНрд╕)
.x (рд░реЛрдЯреЗрд╢рдирдЬреЗрдЯрдореИрдЯреНрд░рд┐рдХреНрд╕)
.x (рд╕реНрдХреЗрд▓рдореИрдЯреНрд░рд┐рдХреНрд╕)
.x (рдЯреНрд░рд╛рдВрд╕рд▓реЗрд╢рдирдореИрдЯреНрд░рд┐рдХреНрд╕)

рдФрд░ рдЕрдВрдд рдореЗрдВ, рдЫрд╡рд┐ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд▓рд╛рдЧреВ рдХрд░реЗрдВ:
s = "рдореИрдЯреНрд░рд┐рдХреНрд╕ 3 рдбреА ("
s + = tM.e (1,1) .toFixed (10) + "," + tM.e (1,2) .toFixed (10) + "," + tM.e (1,3) .toFixedред 10) + "," + tM.e (1,4) .toFixed (10) + ","
s + = tM.e (2,1) .toFixed (10) + "," + tM.e (2,2) .toFixed (10) + "," + tM.e (2,3) .toFixed 10) + "," + tM.e (2,4) .toFixed (10) + ","
s + = tM.e (3,1) .toFixed (10) + "," + tM.e (3,2) .toFixed (10) + "," + tM.e (3,3) .toFixed (ред 10) + "," + tM.e (3,4) .toFixed (10) + ","
s + = tM.e (4,1) .toFixed (10) + "," + tM.e (4,2) .toFixed (10) + "," + tM.e (4,3) .toFixed ( 10) + "," + tM.e (4,4) .toFixed (10)
s + = ")"

document.getElementById ('darth-vader')ред рд╢реИрд▓реА ['- рд╡реЗрдмрдХрд┐рдЯ-рдЯреНрд░рд╛рдВрд╕рдлрд╝реЙрд░реНрдо]' s

рдЪреЗрддрд╛рд╡рдиреА


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

рджреВрд╕рд░реЗ, CSS рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рд░реВрдк (рдЙрджрд╛ред 123e-15) рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ - рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП toFixed (рдирдВрдмрд░рдСрдлрдбрд┐рдЬреАрдЯреНрд╕) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд╡рд┐рдХрд╛рд╕ рдХрд╛ рд╡рд╛рддрд╛рд╡рд░рдг

рджреГрд╖реНрдЯрд┐рдХреЛрдг -webkit- рдХреНрд░реЛрдо рдпрд╛ рд╕рдлрд╛рд░реА, рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ 10 рдФрд░ IE 10. рдЬреИрд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЖрдк рдпрд╣рд╛рдВ рдЙрдкрд╕рд░реНрдЧ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ caniuse.com/transforms3d ред рдбреЗрдореЛ рдХреЗрд╡рд▓ -webkit- рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреЙрдлрд╝реАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ рдардВрдбрд╛ рд╣реИ - рд▓реЗрдХрд┐рди рд╕рдВрдХрд▓рд┐рдд рдХреЛрдб рдХреЛ рдкрдардиреАрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдк рдкреВрд░рд╛ рдкрд╛рда рдФрд░ рд╕реНрд░реЛрдд рдЬреАрдердм рдкрд░ рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВред

рдбреЗрдореЛ
рдореВрд▓ рд▓реЗрдЦ
рд▓реЗрдЦрдХ рдХрд╛ рдлреЗрд╕рдмреБрдХ
рдЯреНрд╡рд┐рдЯрд░ рд▓реЗрдЦрдХ
рддреЗрдЬрд╕реНрд╡реА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд┐рд▓реНрд╡реЗрд╕реНрдЯрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА
рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдкрд░ рд░реИрдЦрд┐рдХ рдкрд░рд┐рд╡рд░реНрддрди рд▓реЗрдЦ

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


All Articles