예제 #1
0
파일: Mesh.py 프로젝트: MartinPdeS/PyMieSim
    def MakeProperties(self):

        self.CartMesh = np.asarray([self.bind.X, self.bind.Y, self.bind.Z])

        self.dOmega = _Angle(0, Unit='Radian')
        self.dOmega.Radian = self.bind.dOmega
        self.dOmega.Degree = self.bind.dOmega * (180 / pi)**2

        self.Omega = _Angle(0, Unit='Radian')
        self.Omega.Radian = self.bind.Omega
        self.Omega.Degree = self.bind.Omega * (180 / pi)**2
예제 #2
0
    def ComputeParameters(self):
        """relation taken from
        http://optics.hanyang.ac.kr/~choh/degree/[2014-1]%20photonics_graduated/Polarization%20Optics(ch6)new.pdf
        slide 6"""

        self.Delay = _Angle(np.angle(self.J[0]) - np.angle(self.J[1]),
                            Unit='Radian')

        if abs(self.J[1]) == 0:
            r = 1e6
            arg0 = 2 * r / (1 - abs(r)**2) * cos(self.Delay.Radian)
            arg1 = 2 * r / (1 + abs(r)**2) * sin(self.Delay.Radian)
            self.Azimuth = _Angle(np.arctan(abs(arg0)) / 2, Unit='Radian')
            self.Ellipsity = _Angle(np.arcsin(abs(arg1)) / 2, Unit='Radian')

        elif abs(self.J[0]) == abs(self.J[1]):
            r = abs(self.J[0]) / abs(self.J[1])
            arg0 = cos(self.Delay.Radian) * 1e6
            arg1 = sin(self.Delay.Radian)
            self.Azimuth = _Angle(np.arctan(arg0) / 2, Unit='Radian')
            self.Ellipsity = _Angle(np.arcsin(arg1) / 2, Unit='Radian')

        else:
            r = abs(self.J[0]) / abs(self.J[1])
            arg0 = 2 * r / (1 - abs(r)**2) * cos(self.Delay.Radian)
            arg1 = 2 * r / (1 + abs(r)**2) * sin(self.Delay.Radian)
            self.Azimuth = _Angle(np.arctan(abs(arg0)) / 2, Unit='Radian')
            self.Ellipsity = _Angle(np.arcsin(abs(arg1)) / 2, Unit='Radian')
예제 #3
0
    def __init__(self, Angle=None):

        self.Angle = _Angle(Angle, Unit='Degree')
        self.Size = self.Angle.Radian.size
        self.Format = "04.1f"
        self.Unit = "[Deg]"

        super().__init__(
            Vector=[np.cos(self.Angle.Radian),
                    np.sin(self.Angle.Radian)])
예제 #4
0
def NA2Angle(NA: float) -> np.ndarray:
    if NA <= 1.0: return _Angle(np.arcsin(NA), Unit='Radian')
    if NA >= 1.0: return _Angle(np.arcsin(NA - 1) + np.pi / 2, Unit='Radian')
예제 #5
0
파일: Mesh.py 프로젝트: MartinPdeS/PyMieSim
 def Theta(self):
     if not self._Theta:
         self._Theta = _Angle(self.bind.Theta, Unit='Radian')
         return self._Theta
     else:
         return self._Theta
예제 #6
0
파일: Mesh.py 프로젝트: MartinPdeS/PyMieSim
 def Phi(self):
     if not self._Phi:
         self._Phi = _Angle(self.bind.Phi, Unit='Radian')
         return self._Phi
     else:
         return self._Phi