Skip to main content

A floor below for tuning to what's above

Project description

ThresholdFloor

ThresholdFloor is a geolocated simulation of light, shadow, and sky.

It answers a very old question:

If I stand here, what is the sky doing right now?

Where MoonTime tracks cycles, and AetherField tracks positions, ThresholdFloor brings those movements down to Earth — into light, into shadow, into place.


🌍 What It Does

ThresholdFloor creates a virtual “floor” at a real location on Earth and lets you observe:

  • ☀️ The Sun’s angle across the sky
  • 🌗 The shifting length and direction of shadows
  • 🌅 Sunrise and sunset behavior
  • 🌞 Seasonal turning points (equinoxes, solstices)
  • 🌌 Zodiac regions above and below the horizon

It turns celestial motion into something physical:

light touching ground


🧭 Core Idea

In many ancient systems, knowledge of time and season did not come from clocks.

It came from:

  • shadows on the ground
  • the angle of light
  • where the sun rose and set

ThresholdFloor recreates that perspective computationally.

Instead of asking:

What time is it?

You can ask:

Where is the light?


🚀 Quick Example

from thresholdfloor import ThresholdFloor as tf

def test_one():

    tfloor = tf(
        name="meow meow tehran",
        latitude=35.6892,
        longitude=51.3890,
        tz="Asia/Tehran"
    )

    print(tfloor.get_phase())  # Shadow-based phase

    tfloor.sigil()  # Visual representation of current state

    hkfloor = tf(
        "meow meow hongkong",
        22.3027,
        114.1772,
        "Asia/Hong_Kong",
        elevation_m=958
    )

    sigil = hkfloor.sigil(show=False)

    print(hkfloor.get_sunrise())  # Sunrise angle

    bfloor = tf(
        "meow meow beijing",
        39.9075,
        116.3972,
        "Asia/Shanghai",
        elevation_m=50
    )

    print(bfloor.as_above())  # Zodiac above horizon
    print(bfloor.as_below())  # Zodiac below horizon

    tofloor = tf(
        "meow meow tokyo",
        35.68972,
        139.69222,
        "Asia/Tokyo"
    )

    print(tofloor.now())      # Local MoonTime
    print(tofloor.observe())  # Current solar geometry

🌞 Solar Cycle Example

def test_two():

    jfloor = tf(
        "Jericho",
        latitude=31.871,
        longitude=35.443,
        tz="Asia/Jerusalem"
    )

    # Configure observation point
    jfloor.configure_gatehouse(31.8720, 35.4440, -245.0, bearing_deg=90.7)

    # Compute solstice anchors
    summer, winter = jfloor.compute_solstice_anchors()

    # Lay out solar markers across the year
    jfloor.auto_layout_gate_posts_across_solar_range(
        start_date=winter,
        days=366,
        num_pegs=7,
    )

    # Scan solar cycle into months
    result = jfloor.scan_solar_cycle_for_months(winter, days=366)

    for m in range(1, 13):
        print(f"Month {m}: first hit on {result['first_hits'][m]}")

🧩 Core Concepts

Floor

A Floor is a fixed location defined by:

  • latitude
  • longitude
  • timezone
  • optional elevation

It represents a real place on Earth.


Observation

tfloor.observe()

Returns the current solar position relative to the floor:

  • altitude
  • azimuth
  • light direction

Phase

tfloor.get_phase()

A shadow-based phase derived from solar geometry.


Sigil

tfloor.sigil()

Generates a visual encoding of the current state of the floor.

This is an evolving feature and may expand in future releases.


Horizon Mapping

tfloor.as_above()
tfloor.as_below()

Maps zodiac regions relative to the local horizon.


Local Time

tfloor.now()

Returns the current moment expressed relative to the floor.


🌌 Design Philosophy

ThresholdFloor is built around a simple inversion:

Modern systems:

  • abstract time
  • global reference
  • detached observation

ThresholdFloor:

  • grounded time
  • local reference
  • embodied observation

It does not ask you to synchronize with a global clock.

It lets you observe what is happening where you are.


🧬 Ecosystem

ThresholdFloor builds on:

  • moontime → temporal cycles
  • aetherfield → celestial positions

Together they form:

  • Time → MoonTime
  • Sky → AetherField
  • Ground → ThresholdFloor

🧪 Status

Alpha release.

Core functionality is in place, but APIs and visual systems (such as sigils) are still evolving.


🕯️ Closing Note

There was a time when people did not need instruments to understand the day.

They could look at a shadow and know:

  • how far the sun had traveled
  • what season they were in
  • where they stood in the cycle

ThresholdFloor is an attempt to rebuild that intuition.

Not by replacing modern systems —

but by letting light and shadow speak again.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

thresholdfloor-0.1.7.tar.gz (1.7 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

thresholdfloor-0.1.7-py3-none-any.whl (1.7 MB view details)

Uploaded Python 3

File details

Details for the file thresholdfloor-0.1.7.tar.gz.

File metadata

  • Download URL: thresholdfloor-0.1.7.tar.gz
  • Upload date:
  • Size: 1.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.4

File hashes

Hashes for thresholdfloor-0.1.7.tar.gz
Algorithm Hash digest
SHA256 be25b61949ce3e09ccfca953a83248764987ba0a10e1bde85e89323f40518f71
MD5 d376eede50406b7e8b9c43799a0aa772
BLAKE2b-256 05fe0b7693454def6d2370e79029bb79c92aceceea4c7dc700f5380cdef8a6eb

See more details on using hashes here.

File details

Details for the file thresholdfloor-0.1.7-py3-none-any.whl.

File metadata

  • Download URL: thresholdfloor-0.1.7-py3-none-any.whl
  • Upload date:
  • Size: 1.7 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.4

File hashes

Hashes for thresholdfloor-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 ede3d98ae24ef411ebedf9fa6cfc34641a2ca97323c6ef736ea9666ee5fe09e5
MD5 c5b91c1eb31741f982daf74384d2edc2
BLAKE2b-256 0e1df9eda439822b5614073c9bd71774eb836bdc6a8984cf2b549a21c53b177b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page