#!/usr/bin/env python3
"""
STT Python绑定使用示例

这个脚本展示了如何使用STT的Python绑定来生成球面三角网格。
"""

import pystt as stt
import os
import sys

def basic_example():
    """基本使用示例"""
    print("=== 基本使用示例 ===")
    
    # 创建生成器
    generator = stt.SttGenerator()
    
    # 设置参数
    generator.set_tree_depth(3, 6)  # 最小深度3，最大深度6
    generator.set_reference_system("WGS84")  # 使用WGS84参考系统
    
    # 运行生成
    result = generator.run("basic_output.msh")
    
    print(f"生成结果: {'成功' if result == 0 else '失败'}")
    print(f"输出文件: basic_output.msh")
    print()

def quick_creation_example():
    """快速创建示例"""
    print("=== 快速创建示例 ===")
    
    # 使用便利函数快速创建
    info = stt.create_stt(
        min_depth=2,
        max_depth=5,
        reference_system="Earth",
        output_file="quick_output.msh"
    )
    
    print("生成信息:")
    for key, value in info.items():
        print(f"  {key}: {value}")
    print()

def advanced_example():
    """高级使用示例"""
    print("=== 高级使用示例 ===")
    
    generator = stt.SttGenerator()
    
    # 设置自定义参考系统（月球）
    generator.set_pole_equator_radius(1738000.0, 1738000.0)  # 月球半径
    
    # 设置二十面体方向
    generator.set_icosahedron_orient(0.0, 90.0)  # 北极方向
    
    # 使用完整参数运行
    params = {
        "output_msh": "advanced_output.msh",
        "output_vertex": "vertices.txt",
        "output_triangle_center": "triangle_centers.txt",
        "output_neighbor": "neighbors.txt"
    }
    
    result = generator.run_full(params)
    
    print(f"高级生成结果: {'成功' if result == 0 else '失败'}")
    print("输出文件:")
    for key, file in params.items():
        if os.path.exists(file):
            size = os.path.getsize(file)
            print(f"  {file}: {size} bytes")
        else:
            print(f"  {file}: 未生成")
    print()

def custom_reference_system_example():
    """自定义参考系统示例"""
    print("=== 自定义参考系统示例 ===")
    
    generator = stt.SttGenerator()
    
    # 设置自定义椭球参数（例如火星）
    # 火星: 赤道半径 3396.2 km, 极半径 3376.2 km
    generator.set_pole_equator_radius(3396200.0, 3376200.0)
    generator.set_tree_depth(3, 7)
    
    result = generator.run("mars_grid.msh")
    
    print(f"火星网格生成: {'成功' if result == 0 else '失败'}")
    print()

def check_module_info():
    """检查模块信息"""
    print("=== 模块信息 ===")
    
    info = stt.get_info()
    for key, value in info.items():
        print(f"{key}: {value}")
    
    print(f"可用常量:")
    print(f"  stt.WGS84: {stt.WGS84}")
    print(f"  stt.EARTH: {stt.EARTH}")
    print(f"  stt.MOON: {stt.MOON}")
    print()

def main():
    """主函数"""
    print("STT Python绑定使用示例")
    print("=" * 30)
    
    # 检查模块是否可用
    try:
        check_module_info()
    except Exception as e:
        print(f"错误: 无法加载STT模块 - {e}")
        print("请确保已经正确安装STT Python绑定")
        sys.exit(1)
    
    # 运行各种示例
    try:
        basic_example()
        quick_creation_example()
        advanced_example()
        custom_reference_system_example()
        
        print("所有示例运行完成！")
        print("检查生成的文件以查看结果。")
        
    except Exception as e:
        print(f"运行示例时出错: {e}")
        import traceback
        traceback.print_exc()

if __name__ == "__main__":
    main()