SharpAstrology.West 0.2.0

dotnet add package SharpAstrology.West --version 0.2.0
                    
NuGet\Install-Package SharpAstrology.West -Version 0.2.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="SharpAstrology.West" Version="0.2.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="SharpAstrology.West" Version="0.2.0" />
                    
Directory.Packages.props
<PackageReference Include="SharpAstrology.West" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add SharpAstrology.West --version 0.2.0
                    
#r "nuget: SharpAstrology.West, 0.2.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package SharpAstrology.West@0.2.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=SharpAstrology.West&version=0.2.0
                    
Install as a Cake Addin
#tool nuget:?package=SharpAstrology.West&version=0.2.0
                    
Install as a Cake Tool

SharpAstrology.West

${\color{red}This \space package \space is \space still \space experimental. \space Interfaces \space can \space change \space before \space version \space 1.0.0.}$

SharpAstrology Packages

Package Description Licence
SharpAstrology.Base Base library MIT
SharpAstrology.SwissEph Ephemerides package based on SwissEphNet AGPL-3.0
SharpAstrology.Symbols.BlazorComponents Astrological symbols as Blazor components MIT
SharpAstrology.HumanDesign Extensions for the Human Design system MIT
SharpAstrology.HumanDesign.BlazorComponents Human Design charts as Blazor components MIT
SharpAstrology.Vedic Extensions for Vedic astrology systems MIT
SharpAstrology.Vedic.BlazorComponents Vedic astrology charts as Blazor components MIT
SharpAstrology.West Extensions for western astrology systems MIT
SharpAstrology.West.BlazorComponents Western astrology charts as Blazor components MIT
SharpAstrology.WebApp Blazor Server app built on the SharpAstrology packages AGPL-3.0

Calculate aspects with defined orbits

In Western astrology, the distances between planets are assigned certain aspects. Each planet is assigned a certain range, an orbit. This package provides an OrbitBuilder to define these orbits freely.

You can use default orbits

using SharpAstrology.DataModels;
using SharpAstrology.Enums;
using SharpAstrology.Ephemerides;
using SharpAstrology.ExtensionMethods;
using SharpAstrology.Utility;


var date = new DateTime(1988, 9, 4, 1, 15, 0, DateTimeKind.Utc);
using var eph = new SwissEphemeridesService("[PATH_TO_EPHEMERIDES_FILES]").CreateContext();

// create chart
var chart = new AstrologyChart(date, eph);

// Aspects with default western orbits
var aspect = chart.AspectBetween(Planets.Sun, Planets.SouthNode);
Console.WriteLine(aspect);
// Output: Conjunction

// Use default western orbits explicitly
var orbitBuilder = OrbitBuilder.WithWesternDefaultOrbits();
var orbits = orbitBuilder.Build();
aspect = chart.AspectBetween(Planets.Sun, Planets.SouthNode, orbits);
Console.WriteLine(aspect);
// Output: Conjunction

// Change specific orbit definitions
orbitBuilder.SetRule(Aspects.Conjunction, Planets.Sun, 1);
orbitBuilder.SetRule(Aspects.Conjunction, Planets.SouthNode, 1);
orbits = orbitBuilder.Build()
aspect = chart.AspectBetween(Planets.Sun, Planets.SouthNode, orbits);
Console.WriteLine(aspect);
// Output: None

You can load orbits from json

using SharpAstrology.DataModels;
using SharpAstrology.Enums;
using SharpAstrology.Ephemerides;
using SharpAstrology.ExtensionMethods;
using SharpAstrology.Utility;


var date = new DateTime(1988, 9, 4, 1, 15, 0, DateTimeKind.Utc);
using var eph = new SwissEphemeridesService("[PATH_TO_EPHEMERIDES_FILES]")
    .CreateContext();

// create chart
var chart = new AstrologyChart(date, eph);

// Define orbits with json string
var orbitBuilder = OrbitBuilder.FromJsonString("""
{
    "conjunction": {
        "sun": 10,
        "southnode": 8,
        "moon": 10
    }
}
""");
var orbits = orbitBuilder.Build();

Console.WriteLine(chart.AspectBetween(Planets.Sun, Planets.SouthNode, orbits));
//Output: Conjunction

Console.WriteLine(chart.AspectBetween(Planets.Moon, Planets.SouthNode, orbits));
//Moon: None

// Will throw NotSupportedException, because Jupiter is not given in orbit table.
Console.WriteLine(chart.AspectBetween(Planets.Jupiter, Planets.Sun, orbits));
The structure of the json needs to look like this:
{
  "aspect": {
    "planet": 123,
    "planet": 123,
    ...
  },
  "aspect": {
    "planet": 123,
    "planet": 123,
    ...
  },
  ...
}
The mapping to the enums is listed in the table below:
Planets json Aspects json
Planets.Sun sun Aspects.Conjunction conjunction
Planets.Moon moon Aspects.Opposition opposition
Planets.Mercury mercury Aspects.Square square
Planets.Venus venus Aspects.Trine trine
Planets.Mars mars Aspects.SemiSextile semisextile
Planets.Jupiter jupiter Aspects.Quincunx quincunx
Planets.Saturn saturn Aspects.Quintile quintile
Planets.Uranus uranus
Planets.Neptune neptune
Planets.Pluto pluto
Planets.NorthNode northnode
Planets.SouthNode southnode
Planets.Chiron chiron
Planets.Earth earth

Which zodiac do the decanates use?

DecanateOf divides the division a planet, an axis or a house cusp stands in into three parts. It counts in the zodiac of the chart. A chart stands in exactly one zodiac and chart.CalculationMode says which one, so a chart built with EphCalculationMode.Sidereal gives thirds of a constellation and a tropically calculated chart gives thirds of a sign.

using SharpAstrology.ExtensionMethods;
...
var chart = new AstrologyChart(pointInTime, eph, 51.0, 11.0, mode: EphCalculationMode.Sidereal);
var decanate = chart.DecanateOf(Planets.Sun);

Visualizing a chart

SharpAstrology offers a package that allows you to visualize your AstrologyChart via a Blazor component. See the project SharpAstrology.West.BlazorComponents.

Astro Chart

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on SharpAstrology.West:

Package Downloads
SharpAstrology.West.BlazorComponents

This package provides useful Blazor components to display information of an AstrologyChart class from the SharpAstrology.Base package.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.2.0 120 7/30/2026
0.1.0 111 7/29/2026
0.1.0-preview.4 475 7/14/2024
0.1.0-preview.2 144 7/11/2024

0.2.0: DecanateOf is documented to count in the zodiac of the chart. A chart carries exactly one zodiac since SharpAstrology.Base 0.14.0, and CalculationMode says which one, so a sidereally calculated chart gives thirds of a constellation. No behaviour changed, the floor on SharpAstrology.Base moved to 0.14.0.