Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
  • 6 commits
  • 7 files changed
  • 0 comments
  • 1 contributor
8 index.html
... ... @@ -1,8 +1,10 @@
1 1 <html>
2 2 <head>
3   - <script type="text/javascript" src="javascript/Estrela.js"></script>
4   - <script type="text/javascript" src="javascript/Constelacao.js"></script>
5   - <script type="text/javascript" src="javascript/Canvas.js"></script>
  3 + <script type="text/javascript" src="javascript/estrela.js"></script>
  4 + <script type="text/javascript" src="javascript/constelacao.js"></script>
  5 + <script type="text/javascript" src="javascript/canvas.js"></script>
  6 + <script type="text/javascript" src="javascript/pintor_de_estrela.js"></script>
  7 + <script type="text/javascript" src="javascript/pintor_de_constelacao.js"></script>
6 8 <script type="text/javascript" src="javascript/application.js"></script>
7 9 <link rel="stylesheet" type="text/css" href="css/style.css">
8 10 </head>
89 javascript/Estrela.js
... ... @@ -1,89 +0,0 @@
1   -function Estrela(r,x_inicial,y_inicial,cor){
2   - var x = x_inicial;
3   - var y = y_inicial;
4   - var raio = r;
5   - var cor = cor;
6   - var layers = [
7   - {alpha: 0.01,expessure:0.5},
8   - {alpha: 0.02,expessure:0.1},
9   - {alpha: 0.04,expessure:0.1},
10   - {alpha: 0.06,expessure:0.1},
11   - {alpha: 0.1,expessure:0.1},
12   - {alpha: 1,expessure:0.1}
13   - ];
14   -
15   - function stringCorComTransparencia(alpha){
16   - return "rgba("+cor[0]+","+cor[1]+","+cor[2]+","+alpha+")";
17   - }
18   -
19   - this.se_desenhar = function(context){
20   - var raioRenderizacao = raio;
21   - var expessureSum = 0;
22   - for(var i in layers) {
23   - var layer = layers[i];
24   -
25   - context.fillStyle = stringCorComTransparencia(layer.alpha);
26   - context.beginPath();
27   - expessureSum += layer.expessure;
28   - while(raioRenderizacao > raio*(1-expessureSum)){
29   - context.arc(x,y,raioRenderizacao,0,Math.PI*2,true);
30   - raioRenderizacao -= 1;
31   - }
32   - context.closePath();
33   - context.fill();
34   - }
35   - }
36   -
37   - this.copiarPosicao = function(estrela){
38   - x = estrela.getX();
39   - y = estrela.getY();
40   - }
41   -
42   - this.distanciaPara = function(x2,y2){
43   - return Math.sqrt(Math.pow(x2-x,2)+Math.pow(y2-y,2));
44   - }
45   -
46   - this.posicaoQuandoDistarDe = function(distancia,x2,y2) {
47   - var xn = x2-x;
48   - var yn = y2-y;
49   - var yr = ((distancia-0.1)*yn)/Math.sqrt(xn*xn+yn*yn);
50   - if (yn === 0)
51   - var xr = 0;
52   - else var xr = (yr*xn)/yn;
53   - return {x:x+xr, y:y+yr};
54   - }
55   -
56   - this.copiarCor = function(estrela){
57   - cor = estrela.getCor();
58   - }
59   -
60   - this.setPosicao = function(novoX,novoY){
61   - x = novoX;
62   - y = novoY;
63   - }
64   -
65   - this.getX = function(){
66   - return x;
67   - }
68   -
69   - this.getY = function(){
70   - return y;
71   - }
72   -
73   - this.getCor = function(){
74   - return cor;
75   - }
76   -
77   - this.setX = function(novoX){
78   - x = novoX;
79   - }
80   -
81   - this.setY = function(novoY){
82   - y = novoY;
83   - }
84   -
85   - this.setCor = function(novaCor){
86   - cor = novaCor;
87   - }
88   -
89   -}
8 javascript/Canvas.js → javascript/canvas.js
@@ -26,7 +26,9 @@ function Canvas(id){
26 26
27 27 mouseX = mX - elem.offsetLeft;
28 28 mouseY = mY - elem.offsetTop;
29   - constelacao.se_desenhar(context,mouseX,mouseY);
  29 + constelacao.atualizar(mouseX,mouseY);
  30 + var pintor = new PintorDeConstelacao(constelacao);
  31 + pintor.pintarEm(context);
30 32 if (!this.estaDentro(mX,mY))
31 33 desenharTextoInformativo();
32 34 }
@@ -35,4 +37,8 @@ function Canvas(id){
35 37 return (x > elem.offsetLeft && x<elem.offsetLeft+elem.width &&
36 38 y > elem.offsetTop && y<elem.offsetTop+elem.height)
37 39 }
  40 +
  41 + Canvas.stringRGBA = function(red,green,blue,alpha){
  42 + return "rgba("+red+","+green+","+blue+","+alpha+")";
  43 + }
38 44 }
21 javascript/Constelacao.js → javascript/constelacao.js
@@ -12,7 +12,7 @@ function Constelacao(raio){
12 12 var mudandoDeCor = false;
13 13 var frameInicial = null;
14 14
15   - this.se_desenhar = function(context,mouseX,mouseY){
  15 + this.atualizar = function(mouseX,mouseY){
16 16 for (var i = 0;i <= raio_maior; i++){
17 17 var estrela = estrelas[i];
18 18 if (estrela == undefined){
@@ -22,11 +22,13 @@ function Constelacao(raio){
22 22 var anteEstrela = estrelas[i-1];
23 23 if (!anteEstrela){
24 24 estrela.setPosicao(mouseX,mouseY);
25   - estrela.setCor(cor);
26   - mudandoDeCor=true;
  25 + if (estrela.cor().join() !== cor.join()){
  26 + estrela.cor(cor);
  27 + mudandoDeCor=true;
  28 + }
27 29 } else {
28   - if(anteEstrela.distanciaPara(estrela.getX(),estrela.getY()) > distanciaMax) {
29   - var pos = anteEstrela.posicaoQuandoDistarDe(distanciaMax,estrela.getX(),estrela.getY());
  30 + if(anteEstrela.distanciaPara(estrela.x(),estrela.y()) > distanciaMax) {
  31 + var pos = anteEstrela.posicaoQuandoDistarDe(distanciaMax,estrela.x(),estrela.y());
30 32 estrela.setPosicao(pos.x,pos.y);
31 33 } else {
32 34 estrela.copiarPosicao(anteEstrela);
@@ -46,11 +48,6 @@ function Constelacao(raio){
46 48 frameInicial=null;
47 49 }
48 50 }
49   -
50   - for (var i = 0; i < estrelas.length;i++){
51   - var estrela = estrelas[i];
52   - estrela.se_desenhar(context);
53   - }
54 51 }
55 52
56 53 function randomizarTempo() {
@@ -72,4 +69,8 @@ function Constelacao(raio){
72 69 }
73 70 return cor;
74 71 }
  72 +
  73 + this.estrelas = function() {
  74 + return estrelas;
  75 + }
75 76 }
51 javascript/estrela.js
... ... @@ -0,0 +1,51 @@
  1 +function Estrela(r,x_inicial,y_inicial,cor){
  2 + var x = x_inicial;
  3 + var y = y_inicial;
  4 + var raio = r;
  5 + var cor = cor;
  6 +
  7 + this.copiarPosicao = function(estrela){
  8 + x = estrela.x();
  9 + y = estrela.y();
  10 + }
  11 +
  12 + this.distanciaPara = function(x2,y2){
  13 + return Math.sqrt(Math.pow(x2-x,2)+Math.pow(y2-y,2));
  14 + }
  15 +
  16 + this.posicaoQuandoDistarDe = function(distancia,x2,y2) {
  17 + var xn = x2-x;
  18 + var yn = y2-y;
  19 + var yr = ((distancia-0.1)*yn)/Math.sqrt(xn*xn+yn*yn);
  20 + if (yn === 0)
  21 + var xr = 0;
  22 + else var xr = (yr*xn)/yn;
  23 + return {x:x+xr, y:y+yr};
  24 + }
  25 +
  26 + this.copiarCor = function(estrela){
  27 + cor = estrela.cor();
  28 + }
  29 +
  30 + this.setPosicao = function(novoX,novoY){
  31 + x = novoX;
  32 + y = novoY;
  33 + }
  34 +
  35 + this.raio = function() {
  36 + return raio;
  37 + }
  38 +
  39 + this.cor = function(novaCor) {
  40 + if(novaCor) cor = novaCor;
  41 + else return cor;
  42 + }
  43 +
  44 + this.x = function() {
  45 + return x;
  46 + }
  47 +
  48 + this.y = function() {
  49 + return y;
  50 + }
  51 +}
38 javascript/pintor_de_constelacao.js
... ... @@ -0,0 +1,38 @@
  1 +function PintorDeConstelacao(constelacao) {
  2 + var constelacao = constelacao;
  3 + var camadas = [
  4 + {alpha: 0.01,expessure:0.5},
  5 + {alpha: 0.02,expessure:0.1},
  6 + {alpha: 0.04,expessure:0.1},
  7 + {alpha: 0.06,expessure:0.1},
  8 + {alpha: 0.1,expessure:0.1},
  9 + {alpha: 1,expessure:0.1}
  10 + ];
  11 +
  12 + this.pintarEm = function(context) {
  13 + var cores = {};
  14 + var estrelas = constelacao.estrelas();
  15 + for (var i = 0; i < estrelas.length;i++){
  16 + var estrela = estrelas[i]
  17 + var cor = estrela.cor().join(' ');
  18 + if (!cores[cor]) cores[cor]=[];
  19 + cores[cor].push(new PintorDeEstrela(estrela));
  20 + }
  21 +
  22 + for (var cor_s in cores){
  23 + var pintores = cores[cor_s];
  24 + var cor = cor_s.split(' ');
  25 + for (var i = 0; i < camadas.length;i++){
  26 + var camada = camadas[i];
  27 + context.fillStyle = Canvas.stringRGBA(cor[0],cor[1],cor[2],camada.alpha);
  28 + context.beginPath();
  29 + for (var j = 0; j < pintores.length;j++){
  30 + var pintor = pintores[j];
  31 + pintor.desenharMaisUmaCamada(context,camada.expessure);
  32 + }
  33 + context.closePath();
  34 + context.fill();
  35 + }
  36 + }
  37 + };
  38 +};
16 javascript/pintor_de_estrela.js
... ... @@ -0,0 +1,16 @@
  1 +function PintorDeEstrela(estrela) {
  2 + var estrela = estrela;
  3 + var raioRenderizacao = estrela.raio();
  4 + var expessureSum = 0;
  5 + var i = 0;
  6 +
  7 + this.desenharMaisUmaCamada = function(context,espessura) {
  8 + expessureSum += espessura;
  9 + context.moveTo(estrela.x(),estrela.y());
  10 + while(raioRenderizacao > estrela.raio()*(1-expessureSum)){
  11 + context.arc(estrela.x(),estrela.y(),raioRenderizacao,0,Math.PI*2,true);
  12 + raioRenderizacao -= 1;
  13 + }
  14 + i++;
  15 + };
  16 +};

No commit comments for this range

Something went wrong with that request. Please try again.