рдлрд╝реЛрдЯреЛрд╢реЙрдк рдореЗрдВ рдПрдХ рд╕рд╣рдЬ рдЫрд╡рд┐ рдмрдирд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИ: рдЫрд╡рд┐ рдХреЛ рдХреНрд░реЙрдк рдХрд░реЗрдВ, рдЫрдВрдЯрдиреА рдХреА рдЧрдИ рджрд╛рдПрдВ рдФрд░ рдирд┐рдЪрд▓реЗ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдкрдХрдбрд╝реЗрдВ, рдФрд░ рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рдлреАрдбреЗ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрд╛рдИрдВ рдФрд░ рд╢реАрд░реНрд╖ рдкрд░ рдЧреЛрдВрдж рдХрд░реЗрдВред рд▓реЗрдХрд┐рди рд╕рд╣рдЬ рд╢реЛрд░ рдирдХреНрд╢реЛрдВ рдХреЗ рдЙрдЪрд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рд╕реЛрдЪрдирд╛ рд╣реЛрдЧрд╛редрдпрджрд┐ рдЖрдкрдХреЛ рдкреЗрд░рд▓рд┐рди рдХреЗ рд╢реЛрд░ рдХреА рдмреБрдирд┐рдпрд╛рджреА рд╕рдордЭ рд╣реИ , рддреЛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕рдореЗрдВ рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛рдПрдБ рд╣реИрдВред рдпрд╣ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рджреЛ рдЖрдпрд╛рдореЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЖрдпрд╛рдо рдореЗрдВ рднреА рдЙрдкрдпреЛрдЧреА рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдЪрд▓рддреА рд╣реИ), рддреАрди рдЖрдпрд╛рдореЛрдВ (3 рдбреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдмреЗрд▓рдирд╛рдХрд╛рд░ рдФрд░ рдЧреЛрд▓рд╛рдХрд╛рд░ рдкрд░рд┐рд╡рд░реНрддрди) рдореЗрдВ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЪрд╛рд░ рдпрд╛ рдкрд╛рдВрдЪ рдЖрдпрд╛рдореЛрдВ рдореЗрдВ рднреАредрд╕рд╣рдЬ 2 рдбреА рдЫрд╡рд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд╛рд░-рдЖрдпрд╛рдореА рд╢реЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЪрд╛рд░ рдЖрдпрд╛рдореЛрдВ рдореЗрдВ рд╕реЛрдЪрдирд╛ рдмрд╣реБрдд рдЖрдо рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдПрдХ рд╕рдордп рдореЗрдВ рдПрдХ рдЖрдпрд╛рдо рд▓реЗрдВрдЧреЗредрдореЗрдВ рдореЗрд░реА рдЙрджрд╛рд╣рд░рдг, рдореИрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рджреЛ рд╕рдкреНрддрдХ рд╕рд┐рдВрдкреНрд▓реЗрдХреНрд╕ рд╢реЛрд░ ред рд╕рд┐рдореНрдкреНрд▓реЗрдХреНрд╕ рд╢реЛрд░ рдмрдбрд╝реЗ рдЖрдпрд╛рдореЛрдВ рдореЗрдВ рддреЗрдЬ рд╣реИ, рдФрд░ рдЗрд╕рдХреА рддреНрд░рд┐рдХреЛрдгреАрдп рдкреНрд░рдХреГрддрд┐ рдХреЗ рдХрд╛рд░рдг, рдпрд╣ рдмреЗрд╣рддрд░ рджрд┐рдЦрддрд╛ рд╣реИредрдореИрдВрдиреЗ drawNoise
рдПрдХ рдХреИрдирд╡рд╛рд╕ рдмрдирд╛рдиреЗ рдФрд░ рдПрдХ рд▓реВрдк рдореЗрдВ рдкрд┐рдХреНрд╕реЗрд▓ рдПрд░реЗ рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдлрдВрдХреНрд╢рди рд▓рд┐рдЦрд╛ редрдПрдХ рдЖрдпрд╛рдореА рд╕рд╣рдЬ рд╢реЛрд░
рдПрдХ рдЖрдпрд╛рдо рдореЗрдВ, рд╢реЛрд░ рдПрдХ рдЕрдирдВрдд рдЪрд┐рдХрдиреА рд░реЗрдЦрд╛ рд╣реИ (рдореЗрд░реЗ рд╢реЛрд░ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджреЛ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рджреВрд╕рд░реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдирд┐рд░рдВрддрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ)ред рдпрд╣рд╛рдБ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдпреЗ рдХреЗрд╡рд▓ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛рдПрдБ рд╣реИрдВред
fNoiseScale = .02;
drawNoise(function(i,x,y){
var v = Simplex.noise(
123+x*fNoiseScale
,137
);
return v*iSize>y?255:0;
}).img();
рдПрдХ-рдЖрдпрд╛рдореА рд╢реЛрд░рдЖрдк рдПрдиреАрдореЗрд╢рди рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рд░ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдХреЗ рд╢реЛрд░ рдореВрд▓реНрдп рдХреЛ рдлрд┐рд░ рд╕реЗ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдк рдПрдХ рд▓реВрдк рднреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рд╕рднреА рдореВрд▓реНрдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдКрдкрд░ рдХреА рдЫрд╡рд┐ рдореЗрдВ рдорд╛рди рдХрд┐рдирд╛рд░реЛрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ рд▓реВрдк рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ, рдмрд╕ рдПрдХ рдФрд░ рдЖрдпрд╛рдо рдФрд░ рд▓реВрдк ... рдпрд╛ рд╕рд░реНрдХрд▓, рдЙрд╕рдХреЗ рд▓рд┐рдПредрдПрдХ рдЖрдпрд╛рдореА рд▓реВрдк
рдЖрдк рдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреЗ рд▓рд┐рдП, рдкреЗрд░реНрд▓рд┐рди рдХрд╛ рд╢реЛрд░ рдиреАрдЪреЗ рдХреА рдЫрд╡рд┐ рдЬреИрд╕рд╛ рдХреБрдЫ рджрд┐рдЦрддрд╛ рд╣реИредрдпрджрд┐ рд╣рдо рдпрд╣рд╛рдБ рдПрдХ рд╡реГрддреНрдд рдЦреАрдВрдЪрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рд╡реГрддреНрдд рдкрд░ рд╢реЛрд░ рдорд╛рдиреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдПрдХ рдЖрдпрд╛рдореА рд▓реВрдк рдорд┐рд▓реЗрдЧрд╛редрдПрдХ-рдЖрдпрд╛рдореА рд▓реВрдк рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░реНрдХрд▓ рдХреЗ рд╕рд╛рде рд╢реЛрд░редрдХреЛрдб рдореЗрдВ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
drawNoise(function(i,x,y){
var fNX = x/iSize
,fRdx = fNX*2*Math.PI
,a = fRdsSin*Math.sin(fRdx)
,b = fRdsSin*Math.cos(fRdx)
,v = Simplex.noise(
123+a*fNoiseScale
,132+b*fNoiseScale
)
;
return v*iSize>y?255:0;
}).img().div(2);
рдЖрдк рд╢рд╛рдпрдж рдкрд╣рд▓реЗ рд╣реА рд╕рдордЭ рдЧрдП рд╣реИрдВ рдХрд┐ рд╣рдо рдХреНрдпрд╛ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред рджреЛ-рдЖрдпрд╛рдореА рдЫрд╡рд┐ рдХреЛ рд▓реВрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рддреАрди-рдЖрдпрд╛рдореА (рдХрдо рд╕реЗ рдХрдо) рд╢реЛрд░ рдорд╛рдирдЪрд┐рддреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИредрдмреЗрд▓рдирд╛рдХрд╛рд░ рдХрд╛рд░реНрдб
рд╢реЛрд░ рдкреЗрд░рд▓рд┐рди рдореВрд▓ рд░реВрдк рд╕реЗ рд▓рдЧрд╛рддрд╛рд░ 3 рдбреА-рдЯреЗрдХреНрд╕рдЪрд░рд┐рдВрдЧ (рдлрд┐рд▓реНрдо "рдЯреНрд░реЙрди") рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЫрд╡рд┐ рдорд╛рдирдЪрд┐рддреНрд░ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд▓рд┐рдкрдЯреА рд╣реБрдИ рдХрд╛рдЧрдЬрд╝ рдХреА рд╢реАрдЯ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрд╕рдХреА рдЧрдгрдирд╛ рддреНрд░рд┐-рдЖрдпрд╛рдореА рд╢реЛрд░ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╣реЛрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдХрд╛рдЯрддреЗ рд╕рдордп, рд╣рдо рдЕрднреА рднреА рдирдП рдмрдирд╛рдП рдЧрдП рд╕рддрд╣ рдХреЗ рд▓рд┐рдП рдирдХреНрд╢реЗ рдХреА рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВредрдирд┐рд░реНрдмрд╛рдз рдЫрд╡рд┐ рдХреЗ рдЕрдкрдиреЗ рдЕрдВрддрд┐рдо рд▓рдХреНрд╖реНрдп рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдкрд╣рд▓реЗ рдПрдХ рдРрд╕реА рдЫрд╡рд┐ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдмрд╛рдПрдБ рдФрд░ рджрд╛рдПрдБ рд╕реЗ рдЬреБрдбрд╝рддреА рд╣реИред рдпрд╣ рдПрдХ рдЖрдпрд╛рдореА рд▓реВрдк рдХреЗ рд▓рд┐рдП рджреЛ-рдЖрдпрд╛рдореА рд╕рд░реНрдХрд▓ рдХреЗ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЖрдпрд╛рдо рдХреЗ рд╕рд╛рде: рдПрдХ рд╕рд┐рд▓реЗрдВрдбрд░ред
drawNoise(function(i,x,y){
var fNX = x/iSize
,fRdx = fNX*2*Math.PI
,a = fRdsSin*Math.sin(fRdx)
,b = fRdsSin*Math.cos(fRdx)
,v = Simplex.noise(
123+a*fNoiseScale
,132+b*fNoiseScale
,312+y*fNoiseScale
)
;
return v*255<<0;
}).img().div(2);
рдмреЗрд▓рдирд╛рдХрд╛рд░ рд╢реЛрд░ рдирдХреНрд╢рд╛рдЧреЛрд▓рд╛рдХрд╛рд░ рдирдХреНрд╢рд╛ рдЫрд╡рд┐
рдЖрдк рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рд╣рдЬ рдЫрд╡рд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреЛрд▓реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЖрдк рдЧрд▓рдд рд╣реИрдВредрдореИрдВ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╡рд┐рд╖рдпрд╛рдВрддрд░ рдХрд░реВрдВрдЧрд╛ рдФрд░ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдЧреЛрд▓рд╛рдХрд╛рд░ рдЫрд╡рд┐ рдорд╛рдирдЪрд┐рддреНрд░ рдХреА рдЧрдгрдирд╛ рдХреИрд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред
document.body.addChild('h2').innerText = 'three dimensional spherical map';
fNoiseScale = .1;
var oSpherical = drawNoise(function(i,x,y){
var fNX = (x+.5)/iSize
,fNY = (y+.5)/iSize
,fRdx = fNX*2*Math.PI
,fRdy = fNY*Math.PI
,fYSin = Math.sin(fRdy+Math.PI)
,a = fRdsSin*Math.sin(fRdx)*fYSin
,b = fRdsSin*Math.cos(fRdx)*fYSin
,c = fRdsSin*Math.cos(fRdy)
,v = Simplex.noise(
123+a*fNoiseScale
,132+b*fNoiseScale
,312+c*fNoiseScale
)
;
return v*255<<0;
}).img();
рдЧреЛрд▓рд╛рдХрд╛рд░ рд╢реЛрд░ рдХрд╛ рдирдХреНрд╢рд╛рд╢реЛрд░ рдХреЗ рд╕рд╛рде рдХреНрд╖реЗрддреНрд░рдШрди рдордиреЛрд░рдо рдирдХреНрд╢рд╛
рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдЧреЛрд▓реЗ рдХреЛ рдкреИрдиреЛрд░рдорд╛ рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдЧреЛрд▓реЗ рдХреЗ рдХреЗрдВрджреНрд░ рдореЗрдВ рдХреИрдорд░рд╛ рд░рдЦрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдПрдХ рдХреНрдпреВрдмрд┐рдХ рдкреИрдиреЛрд░рдорд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдмрд╣реБрдд рдХрдо рдЪреЗрд╣рд░реЗ рд╣реИрдВред рдЧреЛрд▓реЗ рдХреЛ рдХреНрдпреВрдм рдХреЗ рдЫрд╣ рдХрд┐рдирд╛рд░реЛрдВ рдкрд░ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕ рд╕реНрдХреЗрдЪ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИредрдХреНрдпреВрдм рдкрд░ рдПрдХ рдЧреЛрд▓реЗ рдХреЛ рд╕реБрдкрд░рдЗрдореНрдкреЛрдЬрд╝ рдХрд░рдирд╛ рдХреНрдпреВрдмрдХреА рд╕рддрд╣ рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдХреЗрдВрджреНрд░ рдФрд░ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реА рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдЬрдЯрд┐рд▓ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИредрд╣рдо рд╕реАрдП рд▓рд╛рдЗрди рдХреЛ рд╡реЗрдХреНрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рд╡реИрдХреНрдЯрд░ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЙрдирдХреА рджрд┐рд╢рд╛ рди рдмрджрд▓реЗ, рд▓реЗрдХрд┐рди рд▓рдВрдмрд╛рдИ рдШрдЯ рдЬрд╛рддреА рд╣реИ 1. рдЗрд╕рдХреЗ рдХрд╛рд░рдг, рд╕рднреА рд╡реИрдХреНрдЯрд░ рдПрдХ рд╕рд╛рде рдПрдХ рдЧреЛрд▓реЗ рдХреА рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗредрд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг рднреА рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ, рд╣рдореЗрдВ рдмрд╕ рд╡реЗрдХреНрдЯрд░ рдХреА рдХреБрд▓ рд▓рдВрдмрд╛рдИ рджреНрд╡рд╛рд░рд╛ xyz рджреНрд╡рд╛рд░рд╛ рд╡реЗрдХреНрдЯрд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╡реЗрдХреНрдЯрд░ рдХреА рд▓рдВрдмрд╛рдИ рдкрд╛рдЗрдерд╛рдЧреЛрд░рд╕ рдкреНрд░рдореЗрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧрдгрдирд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИредрдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдореЗрдВ, рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг рдЧрдгрдирд╛ рдкрд╣рд▓реЗ рдПрдХ рдЪреЗрд╣рд░реЗ рдкрд░ рдХреА рдЬрд╛рддреА рд╣реИред рдлрд┐рд░ рд╢реЛрд░ рдХреЛ рд╕рднреА рдЫрд╣ рдХрд┐рдирд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рде рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдЧрд▓реЗ рдЪреЗрд╣рд░реЗ рдХреА рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдмрд╕ xzz рдХреЗ рд╕рд╛рде рдореВрд▓реНрдпреЛрдВ рдХреЛ рдлреНрд▓рд┐рдк рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
document.body.addChild('h2').innerText = '3D panoramical cube map';
var mCubemap = document.createElement('canvas')
,iW = 6*iSize;
mCubemap.width = iW;
mCubemap.height = iSize;
var iHSize = iSize/2
,oCtx = mCubemap.getContext('2d')
,oImgData = oCtx.getImageData(0,0,iW,iSize)
,aPixels = oImgData.data
,aa = 123
,bb = 231
,cc = 321
;
for (var i=0,l=iSize*iSize;i<l;i++) {
var x = i%iSize
,y = (i/iSize)<<0
,a = -iHSize + x+.5
,b = -iHSize + y+.5
,c = -iHSize
,fDistanceAB = Math.sqrt(a*a+b*b)
,fDistanceABC = Math.sqrt(fDistanceAB*fDistanceAB+c*c)
,fDrds = .5*fDistanceABC
,v = 1
;
a /= fDrds;
b /= fDrds;
c /= fDrds;
var aNoisePositions = [
[a,b,c]
,[-c,b,a]
,[-a,b,-c]
,[c,b,-a]
,[a,c,-b]
,[a,-c,b]
];
for (var j=0;j<6;j++) {
v = Simplex.noise(
aa + aNoisePositions[j][0]
,bb + aNoisePositions[j][1]
,cc + aNoisePositions[j][2]
);
var pos = 4*(y*iW+j*iSize+x);
aPixels[pos] = aPixels[pos+1] = aPixels[pos+2] = v*255<<0;
aPixels[pos+3] = 255;
}
}
oCtx.putImageData(oImgData,0,0);
document.body.addChild('img',{src:mCubemap.toDataURL("image/jpeg")});
рдпрд╣рд╛рдБ рдПрдХ рдЫрд╡рд┐ рдореЗрдВ рдЫрд╣ рдкрдХреНрд╖ рд╣реИрдВ, рд╕рд╛рде рд╣реА рдПрдХ рдШрди рд╕реЗ рджреЗрдЦрдиреЗ рдкрд░ рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдПрдХ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯред рд╕реЛрд░реНрд╕ рдХреЛрдб рдореЗрдВ рдереНрд░реА рдЬреЗ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ 3 рдбреА рдЙрджрд╛рд╣рд░рдг рд╣реИ редрдШрди рдордиреЛрд░рдо рдирдХреНрд╢рд╛рдирд┐рд░реНрдмрд╛рдз 2D рдЫрд╡рд┐
рдРрд╕рд╛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╕рд╣рдЬ 2 рдбреА рдЫрд╡рд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдпрд╣ рд╕рдмрд╕реЗ рдХрдард┐рди рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЪрд╛рд░ рдЖрдпрд╛рдореЛрдВ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдирд┐рдХрдЯрддрдо рдЪреАрдЬ рдПрдХ рдмреЗрд▓рдирд╛рдХрд╛рд░ рдирдХреНрд╢рд╛ рдерд╛ (рдХреНрд╖реИрддрд┐рдЬ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рде), рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрдВрдЧреЗред рдмреЗрд▓рдирд╛рдХрд╛рд░ рдорд╛рдирдЪрд┐рддреНрд░ рдореЗрдВ, рд╣рдордиреЗ рд╕рд░реНрдХрд▓ рдХреЗ рд▓рд┐рдП рдЫрд╡рд┐ рдХреА рдХреНрд╖реИрддрд┐рдЬ рд╕реНрдерд┐рддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛; рдЕрд░реНрдерд╛рддреН, рдЫрд╡рд┐ рдХреА рдХреНрд╖реИрддрд┐рдЬ рд╕реНрдерд┐рддрд┐ рд╣рдореЗрдВ рд╢реЛрд░ рдХреНрд╖реЗрддреНрд░ xyz рдореЗрдВ рджреЛ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ x рдФрд░ y рджреЗрддреА рд╣реИред рдЫрд╡рд┐ рдХреА рдКрд░реНрдзреНрд╡рд╛рдзрд░ рд╕реНрдерд┐рддрд┐ рд╢реЛрд░ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ z рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИредрд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЫрд╡рд┐ рд╕рд╣рдЬ рдФрд░ рд▓рдВрдмрд╡рдд рд╣реЛ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рд╣рдо рдПрдХ рдФрд░ рдЖрдпрд╛рдо рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рджреВрд╕рд░рд╛ рд╕рд░реНрдХрд▓ рдмрдирд╛рдиреЗ рдФрд░ z рдХреНрд╖реЗрддреНрд░ рдХреЗ рд░реИрдЦрд┐рдХ рдорд╛рди рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЪрд╛рд░-рдЖрдпрд╛рдореА рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рджреЛ рд╕рд┐рд▓реЗрдВрдбрд░ рдмрдирд╛рдиреЗ рдХреЗ рд╕рдорд╛рди рд╣реИред рдореИрдВрдиреЗ рдПрдХ рд╕реНрдХреЗрдЪ рдкрд░ рдпрд╣ рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдпрд╣ рдЧрд▓рдд рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рд╕рд╛рдорд╛рдиреНрдп рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдФрд░ рдПрдХ рдЪрд╛рд░-рдЖрдпрд╛рдореА рд╕рд┐рд▓реЗрдВрдбрд░ рдирд╣реАрдВ рдЦреАрдВрдЪрд╛ред
рдЪрд╛рд░ рдЖрдпрд╛рдореЛрдВ рдореЗрдВ рджреЛ рд╕рд┐рд▓реЗрдВрдбрд░ рдХрд╛ рдПрдХ рд╕реНрдХреЗрдЪрдХреЛрдб рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ: рдпреЗ рдЪрд╛рд░-рдЖрдпрд╛рдореА рд╢реЛрд░ рд╕реНрдерд╛рди рдореЗрдВ рд╕рд┐рд░реНрдл рджреЛ рд╕рд░реНрдХрд▓ рд╣реИрдВред
fNoiseScale = .003;
drawNoise(function(i,x,y){
var fNX = x/iSize
,fNY = y/iSize
,fRdx = fNX*2*Math.PI
,fRdy = fNY*2*Math.PI
,a = fRds*Math.sin(fRdx)
,b = fRds*Math.cos(fRdx)
,c = fRds*Math.sin(fRdy)
,d = fRds*Math.cos(fRdy)
,v = Simplex.noise(
123+a*fNoiseScale
,231+b*fNoiseScale
,312+c*fNoiseScale
,273+d*fNoiseScale
)
;
return (Math.min(Math.max(2*(v -.5)+.5,0),1)*255)<<0;
}).img().div(2,2);
рдФрд░ рдпрд╣рд╛рдБ рдкрд░рд┐рдгрд╛рдо рд╣реИ: