当前位置: 占星网 > 占星软件 > 其他软件 >
次
好的,我们来详细分析一下这段PHP代码,它定义了如何绘制北印度风格的占星命盘(Chakra)。
代码核心功能:
这段代码属于一个名为 North 的 PHP 类,它的主要目的是定义绘制北印度风格占星命盘的具体规则和布局。它继承自一个更通用的 AbstractChakra 类,这意味着它拥有一些通用的图表绘制功能,但专门针对北印度风格进行了定制。
关键特性分析:
固定宫位系统 ($chakraFix = self::FIX_BHAVA;)
这是最核心的特征! 这行代码明确指出该图表使用固定宫位 (Bhava) 系统。
在北印度风格中:
宫位 (Bhava) 在图表上的物理位置是固定不变的(例如,第1宫永远是顶部中间的菱形,第2宫永远是左上角的三角形,以此类推)。
星座 (Rashi) 则根据具体星盘的上升点 (Lagna / Ascendant) 在这些固定的宫位中轮转。
这与南印度风格(固定星座)形成了鲜明对比。
几何结构 (基础形状 + 变换规则)
$bhavaPointsBase: 定义了绘制命盘所需两种基础形状的顶点坐标:
BHAVA_TRIANGLE (三角形): 用于绘制第 2, 3, 5, 6, 8, 9, 11, 12 宫。
BHAVA_RECTANGLE (矩形/菱形): 用于绘制第 1, 4, 7, 10 这四个角宫 (Kendra)。
$transformRules: 这是实现北印度布局的关键。它是一个数组,定义了如何将上述的基础形状 (base) 通过一系列几何变换 (transform)(如平移 Matrix::TYPE_TRANSLATION、旋转 Matrix::TYPE_ROTATION、镜像 Matrix::TYPE_REFLECTION)映射到每个宫位 (1 到 12) 的最终位置和方向。
例如,对于第1宫(1 => ...),它使用矩形 (BHAVA_RECTANGLE) 作为基础,然后向右平移2个单位 ([2, 0]),将其放置在图表顶部中央的菱形位置。
对于第3宫(3 => ...),它使用三角形 (BHAVA_TRIANGLE),先旋转90度 (M_PI_2),再进行垂直镜像 ([false, true]),最终形成左下角的三角形宫位。
通过为每个宫位定义不同的基础形状和变换组合,代码以编程方式构建出标准的北印度命盘方形外观,其中包含内部的菱形和三角形。
行星位置 ($grahaPointsBase)
这个数组定义了行星 (Graha) 符号放置在每个宫位内部的相对坐标。
它考虑了同一个宫位内可能存在的不同行星数量 (COUNT_ONE, COUNT_FOUR, COUNT_FIVE, COUNT_MORE),为不同数量的行星提供了不同的布局方案,以避免行星符号重叠,使得排布更清晰。
例如,如果一个三角形宫位只有一个行星 (COUNT_ONE),它会被放在相对坐标 [1, 1/3] 的位置(大致在三角形重心偏上的位置)。
星座标签位置 (getRashiLabelPoints 方法)
这个方法用于计算星座 (Rashi) 数字标签应该放置在每个宫位旁边的具体位置和对齐方式。
它首先获取当前命盘中哪个星座落入哪个宫位的信息 ($this->Analysis->getRashiInBhava(...))。
然后,它使用已经过变换计算后的每个宫位的实际顶点坐标 ($this->bhavaPoints)。
根据宫位的编号 ($bhava),它判断标签应该放在宫位的哪个方向(上方、左侧、下方、右侧),并设置相应的文本对齐方式 (textAlign, textValign)。例如:
对于 1, 2, 12 宫(顶部),标签放在宫位下方 (textValign = 'bottom')。
对于 3, 4, 5 宫(左侧),标签放在宫位右侧 (textAlign = 'right')。
以此类推,确保星座数字清晰地标注在对应宫位的外侧。
$offsetCorner 用于在宫位边界和标签之间留出一定的空隙。
其他属性
$chakraGraha = Graha::KEY_SK;: 这可能与特定的 Chakra 类型有关(如 Shukra Chakra/金星 चक्र),或者是一个默认值。在解释通用 Rasi 盘布局时不是最关键的。
$chakraDivider = 4;: 可能与图表的四分结构(角宫/Kendra)有关,暗示了其四边形的整体形态。
总结:
这段 PHP 代码通过以下方式定义了北印度占星命盘的绘制方法:
确立核心原则: 使用固定的宫位布局。
定义基础构件: 提供三角形和菱形/矩形两种基础形状的坐标。
构建整体布局: 利用详细的变换规则(平移、旋转、镜像)将基础形状精确地放置和定向,形成 12 个宫位的标准北印度方形排布。
定位内部元素: 规定了在每个宫位内部根据行星数量摆放行星符号的相对位置。
标注外部信息: 计算并设置星座数字标签在每个宫位外侧的准确位置和对齐方式。
总而言之,该类结合了几何学、坐标变换和占星学规则,以程序化的方式生成符合北印度传统的、视觉上准确的占星命盘。
(责任编辑:admin)