/* Last edited on 2009-10-27 15:55:03 by stolfilocal */ /*************************************************************************** * Copyright (C) 2009 by Douglas Castro * * douglas@ime.unicamp.br * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #ifndef _IMPRIME_H_ #define _IMPRIME_H_ #include #include #include #include #include "definicoes.h" #include "bool.h" #include "pswr.h" #include "jsmath.h" #include "inicializa.h" /** * Funcao que sai a procura de celulas folhas na arvore e desenha tais celulas */ void desenha_folhas(PSStream *ps, No *r, int ind, int prof, double xmin, double xmax, double ymin, double ymax); /** * A chamada dessa funcao retorna a grade formada por todas as celulas folha da arvore */ void DoMesh(char *prefixo, No *u, int tmp); void DrawCells(PSStream *ps, double xmin, double xmax, double ymin, double ymax, bool_t fill, bool_t draw, bool_t eo); void MakeTree(char *prefixo, No *u, int niv, int tmp); void DrawNodes(PSStream *ps, No *u, int prof,int niv, double x,double y); void MakeLines(PSStream *ps, int qual, int prof, double xc, double yc, bool_t arrowheads); /** * Escreve dados no arquivo {arq} de acordo com a dimensao pedida. */ void escreve_em_arquivo (int d, int prof, FILE *arq, VNo pac[], double xmin[], double xmax[], Preditor pred, int qv, bool_t elz, bool_t op); /* Escreve {u->fv[qv]}. Se {elz} eh TRUE, elimina valores menores que 0.5. */ void cpu_time_seq(FILE *arq, char EP[], char G[], char ER[], char U[], char A[], char CP[]); void cpu_time(FILE *arq, double eps, double ganho, double erro, double unif, double adapt, double comp); /** * retorna a quantidade de celulas na direcao do eixo {ex} * na profundidade {prof} */ int qtd_cel_eixo(int d, int ex, int prof); /** * encontra a posicao de uma celula de indice {ind} em uma malha {d} dimensional */ void encontra_posicao(int d, int ind, int delta[]); /** * Determina a posicao das celulas significantes numa malha diadica unidimensional * determinando o nivel a qual ela pertence. O ponto no arquivo de saida marca o * centro da celula relevante. * @param */ void MakeRelevantPosition(char *prefixo, No *u, int niv); /** * Chamada por {MakeRelevantPosition} indiretamente desenha os pontos * que representam o centro das celulas relevantes. Chama * {MakeRelevantPoints} para desenhar os pontos. */ void DrawRelevantNodes(PSStream *ps, No *u, int prof,int niv, double x,double y); /** * Chamada por {DrawRelevantNodes} desenha os pontos que representam * as celulas relevantes. Por sua vez, chama {DrawSomeTexts} e {DrawAxes} * @param ps [out] Nome do arquivo gerado * @param qual [in] Ramo da arvore que foi escolhido. * @param prof [in] Nivel que se encontra o no. * @param xc [in] Coordenada {x} da origem do sistema. * @param yc [in] Coordenada {y} da origem do sistema. * @param arrowheads [in] Diz se eh para colocar orientacao nos eixos. */ void MakeRelevantPoints(PSStream *ps, int qual, int prof, double xc, double yc, bool_t arrowheads); /** * @typedef DrawSomeTexts * @brief Chamada por {MakeRelevantPoints} para "desenhar" a profundidade a * qual certo no pertence, os niveis de profundidade sao escritos ao lado do eixo * @param ps [out] Nome do arquivo gerado * @param xc [in] Coordenada {x} da origem do sistema. * @param yc [in] Coordenada {y} da origem do sistema. * @param prof [in] Nivel que se encontra o no. */ void DrawSomeTexts(PSStream *ps, double xc, double yc, int prof); /** * @typedef DrawAxes * @brief Chamada por {MakeRelevantPoints} para desenhar os eixos de referencia, tambem cria os tics nos eixos * @param ps [out] Nome do arquivo gerado * @param xc [in] Coordenada {x} da origem do sistema. * @param yc [in] Coordenada {y} da origem do sistema. * @param arrowheads [in] Diz se eh para colocar orientacao nos eixos. */ void DrawAxes(PSStream *ps, double xc, double yc, bool_t arrowheads); //---------------------inicio---desenhos em 2d e 3d---------------- /** * @typedef DoMeshND * @brief Cria a grade formada por todas as celulas folha da arvore em 2D e 3D * @param d [in] Dimensao da grade * @param prefixo [out] Nome arquivo de saida * @param tmp [in] Passo de tempo em que a grade sera gerada * @param xmin [in] Coordenadas do vertice inferior da celula folha * @param xmax [in] Coordenadas do vertice inferior da celula folha * @param xminR [in] Coordenadas do vertice inferior da celula raiz * @param xmaxR [in] Coordenadas do vertice superior da celula raiz */ void DoMeshND(int d, char *prefixo, No *u, int tmp, double xmin[], double xmax[], double xminR[],double xmaxR[]); /** * @typedef desenhaFolhasND * @brief Navega na arvore a procura de todas as celulas folha em 2D e 3D * @param d [in] Dimensao da grade * @param prefixo [out] Nome arquivo de saida * @param tmp [in] Passo de tempo em que a grade sera gerada * @param xmin [in] Coordenadas do vertice inferior da celula folha * @param xmax [in] Coordenadas do vertice inferior da celula folha * @param xminR [in] Coordenadas do vertice inferior da celula raiz * @param xmaxR [in] Coordenadas do vertice superior da celula raiz */ void desenhaFolhasND(int d, PSStream *ps, No *r, int ind, int prof, double xmin[], double xmax[], double xminR[],double xmaxR[]); /** * @typedef DrawCellsND * @brief Encontra a posicao da celula folha em (2D e 3D), reescala, translada e desenha. * @param d [in] Dimensao da grade * @param prefixo [out] Nome arquivo de saida * @param tmp [in] Passo de tempo em que a grade sera gerada * @param xmin [in] Coordenadas do vertice inferior da celula folha * @param xmax [in] Coordenadas do vertice inferior da celula folha * @param xminR [in] Coordenadas do vertice inferior da celula raiz * @param xmaxR [in] Coordenadas do vertice superior da celula raiz * @param fill [in] Diz se eh ou nao para pintar a figura. * @param draw [in] Desenhar(TRUE) ou nao(FALSE)? * @param eo [in] */ void DrawCellsND(int d, PSStream *ps, double xmin[], double xmax[], double xminR[],double xmaxR[], bool_t fill, bool_t draw, bool_t eo); //---------------------fim------desenhos em 2d e 3d---------------- void DoEPSTests(char *prefixo); void DrawThings(PSStream *ps); void DrawTexts(PSStream *ps, double xc, double yc); void DrawLines(PSStream *ps, double xc, double yc, bool_t arrowheads); void DrawFigures(PSStream *ps, double xc, double yc, bool_t fill, bool_t draw, bool_t eo); void teste(No *r,int prof); #endif