Skip to content

Commit

Permalink
In case you though the updates ended
Browse files Browse the repository at this point in the history
😜 🤣 ❗️
  • Loading branch information
quantum9Innovation authored Feb 14, 2020
1 parent 921e857 commit 2207192
Showing 1 changed file with 72 additions and 23 deletions.
95 changes: 72 additions & 23 deletions io/plane_renderer_dev.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,10 @@ var theta = 1
var alpha = 0.5
var rotationSpeed = alpha*Math.PI/30

var lightSource = [0, 0, 1]
var luminosity = 20
var lightSources = [[1, 1, 0.5], [-1, -1, 0.5]]
var luminosity = 2
var distW = 2.5
var shininess = 4

var f1 = function(x)
{return Math.sqrt(-Math.pow(x, 2)+1)}
Expand Down Expand Up @@ -130,18 +132,48 @@ var co = function(rad)
var brightness = function(x, y, z, lTheta, lPhi)
{

avgx = x_Ra[1]/2
avgy = y_Ra[1]/2
dist = (Math.pow(avgx, 2)+Math.pow(avgy, 2))
displacement = dist/Math.max(Math.pow(x-lightSource[0], 2)+Math.pow(y-lightSource[1], 2)+
Math.pow(z-lightSource[2], 2), 0.01)
angSTheta = -co(Math.atan(lightSource[2]/Math.max(lightSource[0], 0.01)))
angSPhi = -co(Math.atan(lightSource[2]/Math.max(lightSource[1], 0.01)))
angLTheta = 1/Math.max(Math.pow(angSTheta-co(lTheta), 2), 0.01)
angLPhi = 1/Math.max(Math.pow(angSPhi-co(lPhi), 2), 0.01)
return mini(luminosity*mini(displacement)*mini(angLTheta)*mini(angLPhi))
var avgx = x_Ra[1]/2
var avgy = y_Ra[1]/2
var avgz = 0
for ( var i = 0; i < lightSources.length; i++ )
{avgz+=lightSources[i][2]}
avgz/=lightSources.length
var dist = (Math.pow(avgx, 2)+Math.pow(avgy, 2)+Math.pow(avgz, 2))
var displacements = []
var angSThetas = []
var angSPhis = []
var angLThetas = []
var angLPhis = []

for ( var i = 0; i < lightSources.length; i++ )
{

displacements.push(dist/Math.max(Math.pow(x-lightSources[i][0], shininess)+
Math.pow(y-lightSources[i][1], shininess)+Math.pow(z-lightSources[i][2], shininess), 0.01))
angSThetas.push(co(Math.PI/2+Math.atan(lightSources[i][2]/Math.max(lightSources[i][0], 0.01))))
angSPhis.push(co(Math.PI/2+Math.atan(lightSources[i][2]/Math.max(lightSources[i][1], 0.01))))
angLThetas.push(1/Math.max(Math.pow(co(angSThetas[i])-co(lTheta), 2), 0.01))
angLPhis.push(1/Math.max(Math.pow(co(angSPhis[i])-co(lPhi), 2), 0.01))

}

var displacement = 0
var angLTheta = 0
var angLPhi = 0

for ( var i = 0; i < lightSources.length; i++ )
{

displacement+=displacements[i]
angLTheta+=angLThetas[i]
angLPhi+=angLPhis[i]

}

return mini(luminosity*(mini(displacement)+1/distW*(mini(angLTheta)+mini(angLPhi))))

};

var project2d = function(x, y, z)
{

Expand All @@ -161,26 +193,43 @@ var project = function(x, y, z)
c.scale(1, -1)
c.translate(0, -h)

var plane = function(x1, y1, z1, x2, y2, z2, x3, y3, z3, co)
var plane = function(x1, y1, z1, x2, y2, z2, x3, y3, z3, hue)
{

var avg = [(x1+x2+x3)/3, (y1+y2+y3)/3, (z1+z2+z3)/3]
var thetaDen = [x2-x1, x3-x1, x3-x2]
var phiDen = [y2-y1, y3-y1, y3-y2]
for ( var i = 0; i < 3; i++ )
{

if ( thetaDen[i] == 0 ){ thetaDen[i] = 0.01 }
if ( phiDen[i] == 0 ){ phiDen[i] = 0.01 }
if ( thetaDen[i] == 0 ){ thetaDen[i] = 0.01 }
if ( phiDen[i] == 0 ){ phiDen[i] = 0.01 }

}
var lTheta = Math.atan(((z2-z1)/thetaDen[0]+(z3-z1)/thetaDen[1]+(z3-z2)/thetaDen[2])/3)
var lPhi = Math.atan(((z2-z1)/phiDen[0]+(z3-z1)/phiDen[1]+(z3-z2)/phiDen[2])/3)
var intensity = brightness(avg[0], avg[1], avg[2], lTheta, lPhi)
co = blend(co, intensity)
c.fillStyle = "rgb("+co[0]+","+co[1]+","+co[2]+")"
var p1 = project(x1, y1, z1)
var p2 = project(x2, y2, z2)
var lTheta = (Math.atan((z2-z1)/thetaDen[0])+Math.atan((z3-z1)/thetaDen[1])+
Math.atan((z3-z2)/thetaDen[2]))/3
var lPhi = (Math.atan((z2-z1)/phiDen[0])+Math.atan((z3-z1)/phiDen[1])+
Math.atan((z3-z2)/phiDen[2]))/3
var i1 = brightness(x1, y1, z1, lTheta, lPhi)
var i2 = brightness(x2, y2, z2, lTheta, lPhi)
var i3 = brightness(x3, y3, z3, lTheta, lPhi)
var p1 = []
var b1 = Math.max(i1, i2, i3)
if ( b1 == i1 ){p1 = project(x1, y1, z1)}
if ( b1 == i2 ){p1 = project(x2, y2, z2)}
if ( b1 == i3 ){p1 = project(x3, y3, z3)}
var p2 = []
var b2 = Math.min(i1, i2, i3)
if ( b2 == i1 ){p2 = project(x1, y1, z1)}
if ( b2 == i2 ){p2 = project(x2, y2, z2)}
if ( b2 == i3 ){p2 = project(x3, y3, z3)}
var grad = c.createLinearGradient(w/4+w/2*p1[0], h/4+h/2*p1[1], w/4+w/2*p2[0], h/4+h/2*p2[1])
hue1 = blend(hue, b1)
grad.addColorStop(0, "rgb("+hue1[0]+","+hue1[1]+","+hue1[2]+")")
hue2 = blend(hue, b2)
grad.addColorStop(1, "rgb("+hue2[0]+","+hue2[1]+","+hue2[2]+")")
c.fillStyle = grad
p1 = project(x1, y1, z1)
p2 = project(x2, y2, z2)
var p3 = project(x3, y3, z3)
c.beginPath()
c.moveTo(w/4+w/2*p1[0], h/4+h/2*p1[1])
Expand Down

0 comments on commit 2207192

Please sign in to comment.