SharpAstrology.West
0.2.0
dotnet add package SharpAstrology.West --version 0.2.0
NuGet\Install-Package SharpAstrology.West -Version 0.2.0
<PackageReference Include="SharpAstrology.West" Version="0.2.0" />
<PackageVersion Include="SharpAstrology.West" Version="0.2.0" />
<PackageReference Include="SharpAstrology.West" />
paket add SharpAstrology.West --version 0.2.0
#r "nuget: SharpAstrology.West, 0.2.0"
#:package SharpAstrology.West@0.2.0
#addin nuget:?package=SharpAstrology.West&version=0.2.0
#tool nuget:?package=SharpAstrology.West&version=0.2.0
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.
| Product | Versions 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. |
-
net10.0
- SharpAstrology.Base (>= 0.14.0)
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.