#pragma once #ifdef OLIVIA_COMPILA #include #include #include "mapmatrix.h" #include #ifndef EXT_ARCH_DIJ_DEFAULT #define EXT_ARCH_DIJ_DEFAULT "ndj" #define NOMB_ARCH_DIJ_DEF "snodos_dj" #endif /** * @file olv_geom.h * Archivo de declaraciones de clase de varias utilidades geométricas del programa Olivia. */ #define OLV_PI 4.0*atan(1.0) //************************************************************************************************************************** /** * Estructura de nodo para el cálculo de caminos óptimos por Dijkstra */ struct Djkt_nodo_0 { int id_padre; //modo escritura 0x2-->modo lectura //info de distancias ambitos float *dis;//distancia de un nodo a otro (matriz de nnod*nnod) int nod_amb;//nodos por ambito int nambi;//numero de ambitos int nnod;//numero de nodos por fila int id_instal;//fila planta int id_plan;//fila instal int nod_instal;//nodo instalacion int nod_plan;//nodo planta int tip_ambitos; std::map *ia;//puntero a info asoc //funciones-------------------------------------------------------------------------- Cdijkstra_arch(); ~Cdijkstra_arch(); BOOL inicia(char* path_arch, BOOL nuevo=FALSE, int n_nod=0, int max_conex=MAX_CONEX_DJ_ARCHI);//si nuevo -> crea vacio BOOL add_b(Djkt_nodo* blq, int iref, int inod, BOOL pon_inf=FALSE);//añade un bloque a el archivo BOOL inicia_inf_amb(std::map* ina, int namb,int tip_amb, int id_instal=-1, int id_plan=-1); void pon_info_amb(Djkt_nodo* nodos, int iref,int ib); Djkt_nodo* get_b(int iref, int ibloq, Djkt_nodo* buf=NULL);//develve el bloque ibloq-esimo float dame_dis(int aorig,int norig, int ades, int n_des); Djkt_nodo* dame_buf_nodos(BOOL angulos=FALSE ); void libera_buf(Djkt_nodo* buf ); BOOL lee_dis(); BOOL graba_dis(int id); }; #endif