/// <summary> /// Copy object. /// </summary> /// <param name="copy"></param> public SkyDome(SkyDome copy) { resolution = resolution; ico = copy.ico; Faces = copy.Faces; FaceAreas = copy.FaceAreas; ShdwHorizon = new double[8760]; ShdwDome = new double[8760]; ShdwBeam = new double[8760]; VertexVectorsSphere = copy.VertexVectorsSphere; VerticesHemisphere = copy.VerticesHemisphere; VerticesHorizon = copy.VerticesHorizon; HorizonSegments = copy.HorizonSegments; VertexShadowSphere = new double[VertexVectorsSphere.Count]; //ShdwHorizon, ShdwDome, ShdwSunVector must be re-evaluated for new sensor point CumulativeIrradiation = copy.CumulativeIrradiation; }
/// <summary> /// Creates a sky dome (hemisphere) as a halfed icosahedron. /// </summary> /// <param name="resolution">Resolution level of the sky dome. 0: 12 faces, 10 vertices; 1: 44 faces, 29 vertices; 2: 168 faces, 97 vertices; 3: 656 faces, 353 vertices. 1 or 2 recommended.</param> public SkyDome(int _resolution) { resolution = _resolution; ico = new IcoSphere(resolution); Faces = ico.getFaces(); VertexVectorsSphere = ico.getVertexCoordinates(); VerticesHemisphere = new List <int>(); VerticesHorizon = new List <int>(); HorizonSegments = new List <double>(); FaceAreas = new List <double>(); ShdwHorizon = new double[8760]; ShdwDome = new double[8760]; ShdwBeam = new double[8760]; CalcHemisphere(); CalcHorizonSegmentWeights(); VertexShadowSphere = new double[VertexVectorsSphere.Count]; //create a list of size of the facaes of the dome. use this list for shadow factors... CumulativeIrradiation = new List <double>(); }