import math

def test_bifacial_visibility():
    """Test how much sky and ground each panel orientation can see"""
    
    print("=== Bifacial Effect Analysis ===")
    print("More vertical = better bifacial effect")
    print()
    
    tilts = [20, 30, 45, 60, 70, 90]  # 90 = vertical
    
    for tilt in tilts:
        # Sky view factor for back side
        sky_factor = (1 - math.cos(math.radians(tilt))) / 2
        
        # Ground view factor for back side  
        ground_factor = (1 + math.cos(math.radians(tilt))) / 2
        
        # Angle from vertical (0° = vertical, 90° = horizontal)
        angle_from_vertical = 90 - tilt
        
        print(f"Tilt {tilt}°: {angle_from_vertical}° from vertical")
        print(f"  Back side sees sky: {sky_factor:.3f} ({sky_factor*100:.1f}%)")
        print(f"  Back side sees ground: {ground_factor:.3f} ({ground_factor*100:.1f}%)")
        print(f"  Total bifacial exposure: {sky_factor + ground_factor:.3f}")
        print()

print("Expected behavior:")
print("- Vertical (90°): Maximum bifacial effect")
print("- Tilt 70°: Good bifacial effect") 
print("- Tilt 20°: Poor bifacial effect")
print()

test_bifacial_visibility()