"""
تصميم عملي لمصفوفة المستشعرات
"""
import numpy as np

class PracticalSensorArray:
    """تصميم هندسي حقيقي للمستشعرات"""
    
    def __init__(self):
        # أبعاد واقعية (50 سم)
        self.arm_length = 0.5  # meters
        
        # إحداثيات المستشعرات (رباعي سطوح)
        self.positions = np.array([
            [0.5, 0.0, -0.3536],
            [-0.5, 0.0, -0.3536],
            [0.0, 0.5, 0.3536],
            [0.0, -0.5, 0.3536]
        ])
        
        # مواصفات كهربائية واقعية
        self.specifications = {
            'field_range': (-20000, 20000),  # V/m
            'resolution': 1.0,               # V/m
            'noise': 0.5,                    # V/m RMS
            'bandwidth': 1000,               # Hz
            'temperature_range': (-40, 85),  # °C
            'power_consumption': 0.5         # Watts per sensor
        }
    
    def calculate_gradient(self, measurements):
        """حساب التدرج بشكل عملي"""
        # measurements: shape (4, 3) - E_x, E_y, E_z لكل مستشعر
        gradient = np.zeros((3, 3))
        
        for i in range(3):  # لكل مركب x,y,z
            # حل نظام معادلات للتدرج
            M = np.column_stack([
                self.positions[1] - self.positions[0],
                self.positions[2] - self.positions[0],
                self.positions[3] - self.positions[0]
            ])
            
            delta_E = np.array([
                measurements[1, i] - measurements[0, i],
                measurements[2, i] - measurements[0, i],
                measurements[3, i] - measurements[0, i]
            ])
            
            if np.linalg.matrix_rank(M) == 3:
                gradient[i, :] = np.linalg.solve(M.T, delta_E)
        
        return gradient

print("✅ تصميم المستشعرات جاهز!")
