/// <summary> /// Constructor, defines all variables. /// </summary> /// <param name="pos1">First body in the pair</param> /// <param name="pos2">Second body in the pair</param> /// <param name="actOrbis">Actual orbis</param> /// <param name="aspectType">Type of aspect</param> public Aspect(int pos1, int pos2, double actOrbis, AspectType aspectType) { this.pos1 = pos1; this.pos2 = pos2; this.actOrbis = actOrbis; this.aspectType = aspectType; }
private void calculateAspects() { // build list to check PlanetaryPosition pp;; for (int i = 0; i < planetaryPositions.Count; i++) { pp = (PlanetaryPosition)planetaryPositions[i]; analysedItems.Add(new AnalysedItem(pp.planetId, pp.longitude)); } // add Ascendant and MC analysedItems.Add(new AnalysedItem(Constants.SE_ASC_AS_BODY, housePositionSet.getAsc())); analysedItems.Add(new AnalysedItem(Constants.SE_MC_AS_BODY, housePositionSet.getMC())); // analyse list double itemsDistance1; double itemsDistance2; double normDistance; double orbis; double actOrbis; double long1; double long2; AnalysedItem item1; AnalysedItem item2; // AnalysedItem swapItem; for (int i = 0; i < analysedItems.Count; i++) { item1 = (AnalysedItem)analysedItems[i]; for (int j = i + 1; j < analysedItems.Count; j++) { item2 = (AnalysedItem)analysedItems[j]; long1 = Math.Min(item1.longitude, item2.longitude); long2 = Math.Max(item1.longitude, item2.longitude); itemsDistance1 = long2 - long1; itemsDistance2 = long1 - long2 + 360; for (int k = 0; k < aspectTypes.Count; k++) { AspectType aspectType = (AspectType)aspectTypes[k]; normDistance = aspectType.distance; orbis = aspectType.orbis; if ((Math.Abs(itemsDistance1 - normDistance)) <= orbis) // aspect found { actOrbis = (Math.Abs(itemsDistance1 - normDistance)); aspects.Add(new Aspect(item1.index, item2.index, actOrbis, aspectType)); } else if ((Math.Abs(itemsDistance2 - normDistance)) <= orbis) // aspect found { actOrbis = (Math.Abs(itemsDistance2 - normDistance)); aspects.Add(new Aspect(item1.index, item2.index, actOrbis, aspectType)); } } } } }