- calculateChecksum(byte[]) - Static method in class com.esplibrary.bluetooth.BTUtil
-
Utility method for calculating a checksum from data
- calculateChecksumFor(byte[], int) - Static method in class com.esplibrary.packets.PacketUtils
-
Utility method for calculating a checksum by summing the bytes in data.
- calculateSumNoCarry(int, int) - Method in class com.esplibrary.utilities.ByteList
-
Sums the entire byte list with not attention paid to carries.
- cancelServiceDiscoveryTimeout() - Method in class com.esplibrary.bluetooth.V1connectionLEWrapper
-
Cancel the service discovery timeout
- canPerformBTWrite() - Method in class com.esplibrary.bluetooth.V1connectionBaseWrapper
-
Indicates if data can be written.
- canPerformBTWrite() - Method in class com.esplibrary.bluetooth.V1connectionDemoWrapper
-
- canPerformBTWrite() - Method in class com.esplibrary.bluetooth.V1connectionLEWrapper
-
- canPerformBTWrite() - Method in class com.esplibrary.bluetooth.V1connectionWrapper
-
- checkForEchos(ESPPacket) - Method in class com.esplibrary.bluetooth.V1connectionBaseWrapper
-
Checks if packet is an echo.
- checkForExpiry(List<ESPRequest>) - Method in class com.esplibrary.client.ResponseProcessor
-
Checks for ESP packet that have expired.
- checkRequestForExpiration() - Method in class com.esplibrary.bluetooth.V1connectionBaseWrapper
-
Check if any of the queue
packet
or in flight packet have expired.
- clear() - Method in class com.esplibrary.utilities.ByteList
-
Resets the list count back to zero.
- clear(boolean) - Method in class com.esplibrary.utilities.ByteList
-
Resets the internal data set and the list count back to zero.
- clearConnectionListeners() - Method in interface com.esplibrary.bluetooth.IV1connectionWrapper
-
Removes all connection event listeners.
- clearConnectionListeners() - Method in class com.esplibrary.bluetooth.V1connectionBaseWrapper
-
- clearESPClientListener() - Method in interface com.esplibrary.bluetooth.IV1connectionWrapper
-
- clearESPClientListener() - Method in class com.esplibrary.bluetooth.V1connectionBaseWrapper
-
- clearESPClientListener() - Method in class com.esplibrary.client.ESPValentineClient
-
- clearESPClientListener() - Method in interface com.esplibrary.client.IESPClient
-
- clearMalformedListener() - Method in interface com.esplibrary.bluetooth.IV1connectionWrapper
-
- clearMalformedListener() - Method in class com.esplibrary.bluetooth.V1connectionBaseWrapper
-
- clearMalformedListener() - Method in class com.esplibrary.client.ESPValentineClient
-
- clearMalformedListener() - Method in interface com.esplibrary.client.IESPClient
-
- clearNoDataListener() - Method in interface com.esplibrary.bluetooth.IV1connectionWrapper
-
- clearNoDataListener() - Method in class com.esplibrary.bluetooth.V1connectionBaseWrapper
-
- clearNoDataListener() - Method in class com.esplibrary.client.ESPValentineClient
-
- clearNoDataListener() - Method in interface com.esplibrary.client.IESPClient
-
- clearNotificationListener() - Method in interface com.esplibrary.bluetooth.IV1connectionWrapper
-
- clearNotificationListener() - Method in class com.esplibrary.bluetooth.V1connectionBaseWrapper
-
- clearNotificationListener() - Method in class com.esplibrary.bluetooth.V1connectionDemoWrapper
-
- clearNotificationListener() - Method in class com.esplibrary.client.ESPValentineClient
-
- clearNotificationListener() - Method in interface com.esplibrary.client.IESPClient
-
- clearRequests() - Method in class com.esplibrary.bluetooth.V1connectionBaseWrapper
-
Removes all pending packet in the queue.
- clearWriteListener() - Method in interface com.esplibrary.bluetooth.IV1connectionWrapper
-
- clearWriteListener() - Method in class com.esplibrary.bluetooth.V1connectionBaseWrapper
-
- CLIENT_CHARACTERISTIC_CONFIG_CHARACTERISTIC_UUID - Static variable in class com.esplibrary.bluetooth.BTUtil
-
- CLIENT_CHARACTERISTIC_CONFIG_STR - Static variable in class com.esplibrary.bluetooth.BTUtil
-
- CLIENT_OUT_V1_IN_LONG_CHAR_UUID_STR - Static variable in class com.esplibrary.bluetooth.BTUtil
-
- CLIENT_OUT_V1_IN_LONG_CHARACTERISTIC_UUID - Static variable in class com.esplibrary.bluetooth.BTUtil
-
- CLIENT_OUT_V1_IN_SHORT_CHAR_UUID_STR - Static variable in class com.esplibrary.bluetooth.BTUtil
-
- CLIENT_OUT_V1_IN_SHORT_CHARACTERISTIC_UUID - Static variable in class com.esplibrary.bluetooth.BTUtil
-
- clone() - Method in class com.esplibrary.data.SweepData
-
Creates a deep-copy of this instance.
- clone() - Method in class com.esplibrary.data.SweepDefinition
-
- clone() - Method in class com.esplibrary.data.SweepSection
-
- clone() - Method in class com.esplibrary.packets.InfDisplayData
-
Creates an identical copy of this instance.
- clone() - Method in class com.esplibrary.utilities.Range
-
Creates an identical copy of this instance
- cloneSweepDefinitions(List<SweepDefinition>) - Static method in class com.esplibrary.data.SweepData
-
Utility method for creating a clone of a list of sweep
definitions
.
- cloneSweepSections(List<SweepSection>) - Static method in class com.esplibrary.data.SweepData
-
Utility method for creating a clone of a list of sweep sections.
- com.esplibrary.bluetooth - package com.esplibrary.bluetooth
-
- com.esplibrary.client - package com.esplibrary.client
-
- com.esplibrary.client.callbacks - package com.esplibrary.client.callbacks
-
- com.esplibrary.constants - package com.esplibrary.constants
-
- com.esplibrary.data - package com.esplibrary.data
-
- com.esplibrary.packets - package com.esplibrary.packets
-
- com.esplibrary.packets.request - package com.esplibrary.packets.request
-
- com.esplibrary.packets.response - package com.esplibrary.packets.response
-
- com.esplibrary.utilities - package com.esplibrary.utilities
-
- compareTo(Range) - Method in class com.esplibrary.utilities.Range
-
- CONCEALED_DISPLAY_BYTE - Static variable in class com.esplibrary.constants.Constants
-
Concealed Display (CD) byte value.
- connect(Context, BluetoothDevice) - Method in interface com.esplibrary.bluetooth.IV1connectionWrapper
-
Asynchronosly attempts to establish a connection with device.
- connect(Context, BluetoothDevice) - Method in class com.esplibrary.bluetooth.V1connectionBaseWrapper
-
- connect(Context, BluetoothDevice) - Method in class com.esplibrary.bluetooth.V1connectionDemoWrapper
-
- connect(Context, BluetoothDevice) - Method in class com.esplibrary.bluetooth.V1connectionLEWrapper
-
- connect(Context, BluetoothDevice) - Method in class com.esplibrary.bluetooth.V1connectionWrapper
-
- connect(BluetoothDevice, ConnectionType, ConnectionListener) - Method in class com.esplibrary.client.ESPValentineClient
-
- connect(BluetoothDevice, ConnectionType, ConnectionListener) - Method in interface com.esplibrary.client.IESPClient
-
Attempts to make a connection with device
.
- connectDemo(String, ConnectionListener) - Method in class com.esplibrary.client.ESPValentineClient
-
- connectDemo(String, ConnectionListener) - Method in interface com.esplibrary.client.IESPClient
-
Starts a demo connection.
- ConnectionEvent - Enum in com.esplibrary.bluetooth
-
Possible connection states
- ConnectionListener - Interface in com.esplibrary.bluetooth
-
Interface definition for a callback to be invoked when a connection event has occurred.
- ConnectionType - Enum in com.esplibrary.bluetooth
-
Supported Bluetooth type
- Constants - Class in com.esplibrary.constants
-
- contains(Range) - Method in class com.esplibrary.data.SweepSection
-
Indicates if
r
is contained in this section.
- contains(int) - Method in class com.esplibrary.data.SweepSection
-
Indicates if frequency is contained in this section.
- contains(byte) - Method in class com.esplibrary.utilities.ByteList
-
Indicates if the byte is contained inside of this list.
- contains(Range) - Method in class com.esplibrary.utilities.Range
-
Returns true if r is contained within this instances lower and upper bounds.
- contains(int) - Method in class com.esplibrary.utilities.Range
-
Returns true if val is contained within this instances lower and upper bounds.
- convertByteToKMuteString(byte) - Static method in class com.esplibrary.data.V18UserSettings
-
Helper method for converting a byte containing the d,C,b bits, to a String indicating the K mute timeout.
- convertIntToPacketId(int) - Static method in class com.esplibrary.packets.request.RequestPacket
-
- convertKMuteStringToByte(String) - Static method in class com.esplibrary.data.V18UserSettings
-
Helper method for converting a String into a packed byte containing the d,C,b bits.
- convertToStringImage1() - Method in class com.esplibrary.packets.InfDisplayData
-
Returns the String representation of the seven segment image 1.
- convertToStringImage2() - Method in class com.esplibrary.packets.InfDisplayData
-
Returns the String representation of the seven segment image 2.
- copy(AlertData) - Method in class com.esplibrary.data.AlertData
-
Copies the data inside alert.
- copyTo(byte[]) - Method in class com.esplibrary.utilities.ByteList
-
Utility method for copying all elements from this list to data
- copyTo(byte[], int, int) - Method in class com.esplibrary.utilities.ByteList
-
Utility method for copying elements into dest.
- CREATOR - Static variable in class com.esplibrary.data.SweepSection
-
- CREATOR - Static variable in class com.esplibrary.data.V18UserSettings
-
- CREATOR - Static variable in class com.esplibrary.data.V19UserSettings
-
- CREATOR - Static variable in class com.esplibrary.utilities.Range
-
- CUSTOM_FREQUENCIES_BIT_INDEX - Static variable in class com.esplibrary.data.V19UserSettings
-
- customSweeps - Variable in class com.esplibrary.data.SweepData
-
V1's current Sweep definition


{% load static %}
| Index | Preference | Name |
|---|---|---|
| {{ forloop.counter0 }} | {{ k }} | {{ v.2 }} |
{{data_median_age}}
Median Age
{{data_med_household}}
Med. Household Income TR
{{data_med_housevalue}}
Med. House Value TR
{{data_population}}
Population
The office will be located in the {{location_title}}.
There, the popularity and the nightlife indexes are {{popularity}} and {{nightlife}} over 5.
These are some of the best restaurants around:
| Name |
|---|
| {{ rest.0 }} |
Raiting


I am a young professional with experience in embedded systems, computer hardware, UX/UI design and front-end web development.
GPA: 3.1
GPA: 4.0
I am interested in pursuing a career in computer engineering, with a focus on embedded systems
In my free time, I enjoy sailing, running, lacrosse, and hanging out with friends
Designed user interface for Clarkson University's "Smart Apartment Dashboards"
Designed user interface mockups for a Clarkson University born social media company meant to foster inovation
Designed user interface mockups for a Clarkson University specific ridesharing company


---
layout: post
title: The description of EM wave polarization
tags: [物理]
categories: study
section: 学习
description: 这是关于电磁波极化，Poincare 球，Stokes 参量的笔记。
---
For a EM wave, we denote the direction of E field as the direction of polarization, the most general form for a EM wave propagating in space is
\begin{align}
\begin{split}
\vec{E}(t)=&\hat{h}E_h+\hat{v}E_v\\
=&\hat{h}e_hcos(kx-\omega t+\psi_h)+\hat{v}e_vcos(kx-\omega t+\psi_v) \label{1}
\end{split}
\end{align}
where $\hat{k},\hat{h},\hat{v}$ form a triad, and $e_h,e_v$ are assumed to be positive.
(As a rule of thumb, we see the polarization state should be determined by $e_h/e_v$ and $\psi_v-\psi_h$, also, if we keep the E field normalized, then it could be described by 2 parameters, which form the face of a sphere, this is called Poincaré Sphere. Of cause, we could using exponent to denote E field as
\begin{align}
\begin{split}
\vec{E}(t)=&\hat{h}e_he^{i(kx-\omega t+\psi_h)}+\hat{v}e_ve^{i(kx-\omega t+\psi_v)} \\
=&(\hat{h}e_h+\hat{v}e_ve^{i\psi})e^{i(kx-\omega t+\psi_h)}
\end{split}
\end{align}
where $\psi=\psi_v-\psi_h$ is the phase different between $E_h$ and $E_v$.
)
For example:
- $\psi=2m\pi$,($m=0,1,2,\cdots$)
\begin{align}
\vec{E}(t)=(\hat{h}e_h+\hat{v}e_v)e^{i(kx-\omega t+\psi_h)}
\end{align}
is linear polarized in first and third quadrant.
- $\psi=(2m+1)\pi$,($m=0,1,2,\cdots$)
\begin{align}
\vec{E}(t)=(\hat{h}e_h-\hat{v}e_v)e^{i(kx-\omega t+\psi_h)}
\end{align}
is linear polarized in second and fourth quadrant.
- $\psi=\pm\pi/2$ and $e_h=e_v=e_0$
\begin{align}
\vec{E}(t)=e_0(\hat{h}\pm i\hat{v})e^{i(kx-\omega t+\psi_h)}
\end{align}
represents left/right circular polarization respectively.
- $\psi=\pm\pi/2$ and $e_h\neq e_v$
\begin{align}
\vec{E}(t)=(\hat{h}e_h\pm i\hat{v}e_v)e^{i(kx-\omega t+\psi_h)}
\end{align}
represents left/right elliptical polarization respectively, the major and minor axis are along $\hat{h}$ and $\hat{v}$ direction. We have
\begin{align}
\begin{split}
\vec{E}(t)=&\hat{h}e_hcos(kx-\omega t+\psi_v)\mp\hat{v}e_vsin(kx-\omega t+\psi_v)\\
=&\hat{h}E_h+\hat{v}E_v
\end{split}
\end{align}
\begin{align}
\Rightarrow (\frac{E_h}{e_h})^2+(\frac{E_v}{e_v})^2=1
\end{align}
when $e_h>e_v$, $e_h$ is the major axis, $e_v$ is the minor axis.
For the general elliptical polarized wave, from Eq.(\ref{1})
\begin{align}
\vec{E}(t)=&\hat{h}E_h+\hat{v}E_v \nonumber\\
=&\hat{h}e_hcos(kx-\omega t+\psi_h)+\hat{v}e_vcos(kx-\omega t+\psi_v)
\end{align}
The polarization ellipse shows below,
Figure 1: Elliptical Polarization
Here, $e_1$ is the major axis, $e_2$ is the minor axis, and we define
\begin{align}
tan\beta=\frac{e_2}{e_1} \quad\quad\quad
\begin{array}{ll}
0\leq\beta\leq\pi/4, & \hbox{left-hand polarization;} \\
-\pi/4\leq\beta\leq 0, & \hbox{right-hand polarization.}
\end{array}
\end{align}
From Eq.(\ref{1}), we have
$$
\frac{E_h}{e_h}=cos(kx-\omega t+\psi_h)
$$$$
\frac{E_v}{e_v}=cos(kx-\omega t+\psi_v)
$$
that is
\begin{align}
\frac{E_v}{e_v}=\frac{E_h}{e_h}cos\psi-\sqrt{1-(\frac{E_h}{e_h})^2}sin\psi \nonumber \\
\Rightarrow (\frac{E_h}{e_h})^2+(\frac{E_v}{e_v})^2-2\frac{E_h}{e_h}\frac{E_v}{e_v}cos\psi=sin^2\psi
\end{align}
(Or notice that
\begin{align}
\frac{E_h}{e_h}sin\psi_v-\frac{E_v}{e_v}sin\psi_h=cos(kx-\omega t)sin\psi \\
\frac{E_h}{e_h}cos\psi_v-\frac{E_v}{e_v}cos\psi_h=sin(kx-\omega t)sin\psi
\end{align}
Eliminating the time dependence $t$, we have
\begin{align}
(\frac{E_h}{e_h})^2+(\frac{E_v}{e_v})^2-2\frac{E_h}{e_h}\frac{E_v}{e_v}cos\psi=sin^2\psi
\end{align}
)
We can write the E field in major/minor coordinate system, first we have the unit vector along major and minor axis are
\begin{align}
\begin{split}
\hat{1}=&cos\alpha\hat{h}+sin\alpha\hat{v} \\
\hat{2}=&-sin\alpha\hat{h}+cos\alpha\hat{v} \label{14}
\end{split}
\end{align}
where $\alpha\in[0,\pi)$, that is
\begin{align}
\begin{split}
\hat{h}=&cos\alpha\hat{1}-sin\alpha\hat{2} \\
\hat{v}=&sin\alpha\hat{1}+cos\alpha\hat{2}
\end{split}
\end{align}
The general E field can also be written as
\begin{align}
\vec{E}(t)=\hat{1}e_1cos(kx-\omega t+\psi_0)-\hat{2}e_2sin(kx-\omega t+\psi_0) \label{15}
\end{align}
From Eq.(\ref{1}), we also get
\begin{align}
\begin{split}
\vec{E}(t)=&\hat{1}e_1cos(kx-\omega t+\psi_0)-\hat{2}e_2sin(kx-\omega t+\psi_0)\\
=&\hat{h}e_hcos(kx-\omega t+\psi_h)+\hat{v}e_vcos(kx-\omega t+\psi_v)\\
=&\hat{1}(e_hcos(kx-\omega t+\psi_h)cos\alpha+e_vcos(kx-\omega t+\psi_v)sin\alpha)\\
+&\hat{2}(-e_hcos(kx-\omega t+\psi_h)sin\alpha+e_vcos(kx-\omega t+\psi_v)cos\alpha)
\end{split}
\end{align}
We get
\begin{align}
e_1cos\psi_0=e_hcos\psi_hcos\alpha+e_vcos\psi_vsin\alpha \label{17a}\\
e_1sin\psi_0=e_hsin\psi_hcos\alpha+e_vsin\psi_vsin\alpha \label{17b}\\
e_2cos\psi_0=-e_hsin\psi_hsin\alpha+e_vsin\psi_vcos\alpha \label{17c}\\
e_2sin\psi_0=e_hcos\psi_hsin\alpha-e_vcos\psi_vcos\alpha \label{17d}
\end{align}
$(Eq.(\ref{17a}))^2+(Eq.(\ref{17b}))^2$, we get
\begin{align}
e_1^2=e_h^2cos^2\alpha+e_v^2sin^2\alpha+e_he_vsin2\alpha cos\psi \label{18}
\end{align}
$(Eq.(\ref{17c}))^2+(Eq.(\ref{17d}))^2$, we get
\begin{align}
e_2^2=e_1^2tan^2\beta=e_h^2sin^2\alpha+e_v^2cos^2\alpha-e_he_vsin2\alpha cos\psi \label{19}
\end{align}
Note that $e_1^2+e_2^2=e_h^2+e_v^2$.
$Eq.(\ref{17a})\cdot Eq.(\ref{17c})+Eq.(\ref{17b})\cdot Eq.(\ref{17d})$, we get
\begin{align}
e_1^2tan\beta=e_he_vsin\psi \label{20}
\end{align}
$Eq.(\ref{17a})\cdot Eq.(\ref{17d})-Eq.(\ref{17b})\cdot Eq.(\ref{17c})$, we get
\begin{align}
2e_he_vcos\psi=(e_h^2-e_v^2)tan2\alpha \label{21}
\end{align}
Now we define four
Stokes parameters as
\begin{align}
S_0=&\frac{1}{\eta}(e_h^2+e_v^2) \label{22a}\\
S_1=&\frac{1}{\eta}(e_h^2-e_v^2) \label{22b}\\
S_2=&\frac{2}{\eta}e_he_vcos\psi \label{22c}\\
S_3=&\frac{2}{\eta}e_he_vsin\psi \label{22d}
\end{align}
$S_0$ is the total intensity of the wave, $S_1$ is large(in absolute value) if it has a preference for linear polarization along $x$ or $y$, $S_2$ is large when polarization is along $\pm 45^o$,$S_3$ is large when it is circular polarized. Notice that $S_0^2=S_1^2+S_2^2+S_3^2$, $\eta$ can set to be $e_h^2+e_v^2$ to make $S_0$ normalized.
Adding Eq.(\ref{18}) and Eq.(\ref{19}), we have
\begin{align}
\begin{split}
&e_1^2(1+tan^2\beta)=\eta S_0 \\
&\Rightarrow e_1^2=\eta S_0 cos^2\beta \label{23}
\end{split}
\end{align}
Subtracting Eq.(\ref{19}) from Eq.(\ref{18}) and making use of Eq.(\ref{21}) and Eq.(\ref{23}), we have
\begin{align}
S_1=S_0cos2\beta cos2\alpha \label{24}
\end{align}
From Eq.(\ref{22c}),Eq.(\ref{21}),Eq.(\ref{24}), we have
\begin{align}
S_2=S_0cos2\beta sin2\alpha \label{25}
\end{align}
From Eq.(\ref{22d}),Eq.(\ref{20}),Eq.(\ref{23}), we have
\begin{align}
S_3=S_0sin2\beta \label{26}
\end{align}
Define $\theta=\pi/2-2\beta,\phi=2\alpha$, we get
\begin{align}
S_1=&S_0sin\theta cos\phi \\
S_2=&S_0sin\theta sin\phi \\
S_3=&S_0cos\theta
\end{align}
$\theta,\phi$ defines the
Poincaré Sphere(Fig.
2), with $\theta\in[0,\pi/2)$ is right-hand polarization and $\theta\in(\pi/2,\pi]$ is left-hand polarization. We see that $\beta$ is the departure from linear polarization and $\alpha$ is the ratio of $E_h$ and $E_v$ component.
Figure 2: Poincaré Sphere
$\alpha,\beta$ related to $\psi,e_h,e_v$ through
\begin{align}
tan\beta=&\frac{e_2}{e_1},\\
tan2\alpha=&\frac{2e_he_vcos\psi}{e_h^2-e_v^2}.
\end{align}
The polarization vector in Poincaré Sphere $(\theta,\phi)$ is
\begin{align}
e^{i\gamma}\left(
\begin{array}{c}
cos\frac{\theta}{2} \\
sin\frac{\theta}{2}e^{i\phi} \\
\end{array}
\right).
\end{align}
It corresponding to the eigenstate
\begin{align}
|\Psi\rangle=\frac{1}{\sqrt{2}}\left(
\begin{array}{c}
E_h-iE_v \\
E_h+iE_v \\
\end{array}
\right)=\left(
\begin{array}{c}
\Psi_l \\
\Psi_r\\
\end{array}
\right)
\end{align}
of the polarization matrix
\begin{align}
\textbf{H}(\textbf{r})=\textbf{r}\cdot\sigma=\frac{1}{2}\left(
\begin{array}{cc}
z & x-iy \\
x+iy & -z \\
\end{array}
\right)=\frac{1}{2}\left(
\begin{array}{cc}
cos\theta & sin\theta e^{-i\phi} \\
sin\theta e^{i\phi} & -cos\theta \\
\end{array}
\right).
\end{align}
where $\sigma$ is the vector of Pauli spin matrix and $\textbf{r}=(x,y,z)$ is a unit vector with polar angles $\theta$ and $\phi$.
In literature, we also have
Jones vector, which is defined by
\begin{align}
|\Psi'\rangle=\left(
\begin{array}{c}
E_h \\
E_v \\
\end{array}
\right)=e^{i\delta}\left(
\begin{array}{c}
cos\alpha cos\beta-isin\alpha sin\beta \\
sin\alpha cos\beta+icos\alpha sin\beta \\
\end{array}\right), \label{30}
\end{align}
where $\alpha,\beta$ is what we defined before and $\delta=\gamma+\alpha$.
(Prove: From Eq.(\ref{15}),we can get
\begin{align}
E_1=&e_1cos\psi_0\\
E_2=&-e_1tan\beta sin\psi_0=ie_1tan\beta cos\psi_0=itan\beta E_1
\end{align}
we have omitted the phase factor $kx-\omega t$, from Eq.(\ref{14}), we get
\begin{align}
E_h=cos\alpha E_1-sin\alpha E_2\\
E_v=sin\alpha E_1+cos\alpha E_2
\end{align}
\begin{align}
\Rightarrow E_h=&E_1(cos\alpha-isin\alpha tan\beta)=E_1'(cos\alpha cos\beta-isin\alpha sin\beta)\\
E_v=&E_1(sin\alpha+icos\alpha tan\beta)=E_1'(sin\alpha cos\beta+icos\alpha sin\beta)
\end{align}
which is just Eq.(\ref{30}).)
So we can see that Jones vector is convenient when dealing with linear polarization and polarization transformation, while Poincaré vector is convenient for circular polarized beam.
For
partial polarization beam, Stokes parameters show their natural merit. Generalize the definition:
\begin{align}
S_0=&\frac{1}{\eta}(<E_h^2>+<E_v^2>) \\
S_1=&\frac{1}{\eta}(<E_h^2>-<E_v^2>)=S_0<cos2\beta cos2\alpha> \\
S_2=&\frac{2}{\eta}<E_hE_vcos\psi>=\frac{2}{\eta}<Re(E_h^*E_v>=S_0<cos2\beta sin2\alpha> \\
S_3=&\frac{2}{\eta}<E_hE_vsin\psi>= \frac{2}{\eta}<Re(-iE_h^*E_v>=S_0<sin2\beta>
\end{align}
For completely unpolarized waves, $E_h$ and $E_v$ are uncorrelated, we have $S_1=S_2=S_3=0$, so for partial polarized waves, we have $S_0^2>S_1^2+S_2^2+S_3^2$. We can split the partial polarized beam into two components,
\begin{align}
\vec{S}=\vec{S}_{un}+\vec{S}_p
\end{align}
$\vec{S_{un}}$represents unpolarized part and $\vec{S_p}$ the totally polarized part with
\begin{align}
\vec{S}=&(S_0,S_1,S_2,S_3)\\
\vec{S}_{un}=&([S_0-\sqrt{S_1^2+S_2^2+S_3^2}],0,0,0)\\
\vec{S}_p=&(\sqrt{S_1^2+S_2^2+S_3^2},S_1,S_2,S_3)
\end{align}
and we can define the
degree of polarization $\mathscr{P}$ as
\begin{align}
\mathscr{P}=\frac{\sqrt{S_1^2+S_2^2+S_3^2}}{S_0}
\end{align}
then $\vec{S}=S_0(1,\mathscr{P}cos2\beta cos2\alpha,\mathscr{P}cos2\beta sin2\alpha,\mathscr{P}sin2\beta)$, which is in the Poincar\'{e} Sphere.
References
- [1] Jin Au Kong, "Electromagnetic wave theory".
-
- [2] M.V.Berry, "The Adiabatic Phase and Pancharatnam's Phase for Polarized Light".
-
- [3] "Chapter 2 Matrix description of wave propagation and polarization".
Footnotes:
1email:bczhu1990@gmail.com


About Me
In Spring 2020, I completed AAS degree in IT software development and currently being trained as a Full-Stack Web Developer by University of Minnesota Bootcamp Program. I am from Indonesia and living in Minneapolis. My hobbies are traveling to experience different type of cultures, snorkling, cooking, and hiking. My dream job is to work in a company that involves helping people through apps, specifically apps for a business related workplace.


In Gambit, we expect you to code as if you’re coding for your life. The organizers of Gambit believe in situation coding more than anything else. In Gambit we give you a chance to show your worth as a sports coder sitting anywhere in the world. In few years since its inception, Gambit has blossomed into a hub, a community of marathon coders.
Gambit is the signature event of “Kaivalya”, the annual Activity Fest of the Computer
Science Department, BTKIT Dwarahat. It is an online situation coding competition
conducted on codechef.com or hackerearth.com that allows participants (College Students) to appear online from anywhere in the world.
Gambit 2019 will start at (10 A.M. IST or later) and be over by evening. For the first time Gambit will be organized for first year (to increase their participation and interest) and other years separately for fair results. It consists of two rounds, the prelims and final. Participants from colleges are also encouraged to participate onsite at BTKIT campus. Proper Internet facility will be provided. There will be several challenges to solve in limited time and winners will be decided based on factors like number of problems solved, time taken and accuracy of solutions.
So this year, get your scribble pads, buckle up and make a Gambit.
COMPETITION RULES:
- “Gambit” will be hosted online on codechef.com or hackerearth.com.
- It is a team event and a team can consist of up to 2 members.
- All team members need to register separately for Kaivalya and also need to have an account on codechef.com or hackerearth.com
- We only allow college students to participate and hence a certificate from the college stating the enrolment of the team members needs to be issued and mailed to us in order for the team to claim prizes.
- There will be some time penalty on wrong submission of problems.
- Team solving most number of problems in least time will be the winner.


Customers
Rentals
RV
Log out
Edit an RV
Id
Brand
Model
Color
Type
price
Fuel Status
Km Driven
Requires Further Service
Requires Maintenance
Requires Cleaning
Is Rented
Cancel
Save


Air Pollution before, during and after July 4th
Sample Measurement (μg/m^3)
-10 to 35
35 to 735.9
Slide the date above to see the changes for July 3rd, 4th and 5th.


Omniwire | Nevada News
NEVADA NEWS
Launch Map
Las Vegas
Reno
Carson City
KTVN
Reno Gazette-Journal
Las Vegas Sun
Carson Now
Fox5 Vegas
Back to Top
The Latest News
© Tapestry Media 2018


Good Day, My name is Mr. Micheal Tan. I trained and work as an external auditor for the United Oversea Bank (UOB) Malaysia. I have taken pains to find your contact through personal endeavours because a late investor , who bears the same last name with you has left monies totaling a little over $10 million United States Dollars with Our Bank for the past twelve years and no next of kin has come forward all these years. Banking regulation legislation in malaysia demand that I notify the fiscal authorities after a statutory time period of twelve years when dormant accounts of this type are called in by the monetary regulatory bodies. The above set of facts underscores my reason of writing.I am of the settled conviction that using my insider leverage, working with you,since you have the same last Name with the Late Investor, we can secure the funds in the account for us instead of allowing it pass as unclaimed funds into the coffers of the Government of Malaysia . This exactly is why I crave your participation and cooperation.I have seized all relevant information (legal and Banking) that will facilitate our putting you forward as the claimant/beneficiary of the funds and ultimately transfer the money to any account nominated by you. Be assured that I and my colleagues are on top of the situation all the time and there will be no risk . Needless to say, Uttermost CONFIDENTIALITY is of vital importance if we are to successfully reap the immense benefits of this transaction. I have intentionally left out the finer details for now until I hear from you. To affirm your willingness and co-operation to my proposal please do so by email, stating your full names, date of birth, telephone number and fax number and occupation. I do expect your prompt response. Thank you Mr. Micheal Tan Email: micheal_tan@infohq.com


There are two algorithms that can be used to find the upper bounds given in maxBettiNumbers.
The “Simplified” algorithm simply finds the maximum of while ignoring the ideal structure of an ideal. In other words, it searches all possible numeric functions instead of just the Hilbert functions. This has two consequences. First, it is significantly faster because it allows for a simplification of the algorithm. Second, it does not always give the smallest upper bounds. However, there is one instance where it is guarenteed to give the smallest upper bounds: when no upper bound for the Hilbert function is specified.
The “Complete” algorithm does not make this simplification, and as a result, is slower but give the smallest upper bounds in every situation.
Ideally, we would like to use the “Simplified” algorithm when it gives the smallest upper bounds, and use the “Complete” algorithm otherwise. By default, the algorithm is selected that guarentees the smallest upper bounds. However, this can be overridden by passing the Algorithm option to maxBettiNumbers. The possible values are
If Algorithm=>"Simplified" is forced, this may not return valid Hilbert functions for some inputs.


2 references to FireOperationDeletedEvent
Microsoft.Management.Infrastructure.CimCmdlets (2)
CimSessionProxy.cs (2)
987
this.
FireOperationDeletedEvent
(args.observable, true);
1001
this.
FireOperationDeletedEvent
(args.observable, false);


{% assign grouped = include.talks.grouped %} {% for group in include.talks.groups %} {% if grouped %}


YOU HAVE TO BUY BREAD AND MILK! PANIC! YOU HAVE TO BUY BREAD AND MILK! PANIC! YOU HAVE TO BUY BREAD AND MILK! PANIC! YOU HAVE TO BUY BREAD AND MILK! PANIC! YOU HAVE TO BUY BREAD AND MILK! PANIC! YOU HAVE TO BUY BREAD AND MILK! PANIC! YOU HAVE TO BUY BREAD AND MILK! PANIC! YOU HAVE TO BUY BREAD AND MILK! PANIC! YOU HAVE TO BUY BREAD AND MILK! PANIC!


{% extends 'users/password_reset/base.html' %} {% block content_block %}
Complete
Your password has been set. You may go ahead and log in now.
Log in


https://gabrielecirulli.github.io/2048 and https://play2048.co are operated and maintained by Gabriele Cirulli, @iirelu and @sigod. This website is hosted on servers operated by GitHub Inc. This document outlines the data handling practices for this website.
For analytics purposes, anonymous and aggregated data may be collected, using Google Analytics. Google AdSense, used on this website for advertsing purposes, may also collect similar data. This data includes:
AdSense is used to publish ads on this site. Users in the European Economic Area (EEA) are served non-personalized ads (NPA), which do not track users and are not based on the user's past behavior on this or other websites. The following data may be used in order to serve NPAs:
For all other users, personalized ads may be displayed. Personalized ads may use the following information:
For more information on how Google Analytics and Google AdSense use this data see:
We use your browser's local storage features to locally store information about the game's state. This lets us save your game at any point and allow you to pick it back up from where you left off. This data is kept in your browser and never sent to servers operated by us or a third-party. No personally-identifiable information is included.
If you have any questions, feel free to email me@gabrielecirulli.com


Account Activity¶
Account Activities let you track actions performed by a user in live.
For example Account Activity will trigger an event when a user publishes a tweet, reads a message, likes a tweet…
Introduction¶
Account Activity is a large topic that we will cover in multiple pages.
Account Activity is a way to receive live events about actions performed by a Twitter user.
To receive such events, Twitter uses Webhooks. Behind a webhook url is a server processing requests.
Tweetinvi offers request handlers which will automatically filter and respond to requests coming from Twitter.
There are 2 ways of using handlers, through a middleware for AspNet or by manually feeding the handlers with a Http server request.
Once the webhook application is running with the request handler, you need to register your webhook url to Twitter so that Twitter knows which url it should send the events to.
Twitter now know where to send events but does not know yet which which users the application should monitor.
We need to subscribe users to the webhook.
Now that users are subscribed to our webhook, Twitter will send events (through http requests) related to the subscribed users to our server.
These events will be raised by the Account Activity Stream.
We will use this stream and watch for specific events to take actions.
What is account activity¶
Account Activities let you track actions performed by a user in live.
For example Account Activity will trigger an event when a user publishes a tweet, reads a message, likes a tweet…
It is Twitter replacement of the old User Stream.
Differently from the user stream, Account Activity uses Webhooks.
You can learn more as to what Account Activities offer on twitter documentation.
Account Activities api is restricted to premium accounts.
You need to request access to a premium Twitter account. You can register to get such an account on https://developer.twitter.com/en/apply
After you have been approved you will be able to go to Dev Environments.
There you will be able to create a free
Account Activity API Sandbox
environment.
What is a webhook¶
Similar to polling, webhooks provide your application a way of consuming new event data from an endpoint.
However, instead of sending repeated requests for new events, you provide the endpoint with a URL, which your application monitors.
Whenever a new event occurs within the endpoint app, it posts the event data to your specified URL, updating your application in real-time.
In Twitter, you register your application url to a webhook environment.
When your application url has been registered, Twitter will send user events to this url.
AspNetPlugin¶
TweetinviAPI.AspNetPlugin
package offers additional tools to work with webhooks.
It can split requests coming from Twitter and requests coming from actual users.
It can automatically route
HttpRequest
to let Tweetinvi respond on its own.It provides an AspNet middleware to automatically route the
HttpRequest
.
Install the AspNetPlugin
.
dotnet add package TweetinviAPI.AspNetPlugin
If your project targets .NETCore version >= 3.0, your project will need to have a FrameworkReference
into your dependencies <ItemGroup>
, next to PackageReference
.
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="TweetinviAPI" Version="5.0.3" />
<PackageReference Include="TweetinviAPI.AspNetPlugin" Version="5.0.3" />
</ItemGroup>
Example.csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
<RootNamespace>tweetinvi_hello_world</RootNamespace>
</PropertyGroup>
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="TweetinviAPI" Version="5.0.3" />
<PackageReference Include="TweetinviAPI.AspNetPlugin" Version="5.0.3" />
</ItemGroup>
</Project>
In the future will be done automatically when properly supported by nuget (issue).
Finally in your code you will need to register the plugin. This needs to be done before a client you use for webhooks is created.
Plugins.Add<AspNetPlugin>();
var client = new TwitterClient(creds);
Ngrok¶
Your webhook application will need to publicly accessible through a https url.
When developing, making your localhost publicly accessible can be complicated. Ngrok comes to help you.
Different solutions offer this, but I have been using Ngrok and I liked its simplicity.
To use it, you will need to create an account, download the binary and execute the command ngrok http 8042
.
Ngrok will generate a unique https url which will be redirected to the http://localhost:8042
.
This operation will give you a list of public url endpoints that you can use to register a webhook on Twitter.
When registering your application url you will need to use the https
endpoint.
Webhooks - Requests handler¶
To reduce the complexity of Account Activity, Tweetinvi offers ways to automatically handle requests coming to your http/aspnet server.
Pick the approach the most appropriate to your needs:
| Project type | Description | |
|---|---|---|
| Http Server | Console/Desktop Application | Help you handle http requests and automatically handle requests coming from Twitter |
| AspNet Server | AspNet Application | Configure AspNet to route incoming requests and automtically handle requests coming from Twitter |
Webhooks - Register¶
Twitter offer different environments
to run webhooks.
An environment can be linked with 1 or multiple webhooks.
During the registration process of a webhook url, Twitter will send an http request to your webhook url.
This request is called a CRC request. Twitter expect your application to send a response containing a special authentication token.
If you use the Tweetinvi request handler, the response to the CRC request will be done automatically for you.
// request to register your url - a crc challenge will be received by your http server
await userClient.AccountActivity.CreateAccountActivityWebhookAsync("sandbox", "https://my-webook-url.ngrok.io");
This request will only be successful if Twitter receives the expected response from your server.
Webhooks - List¶
You can list your environments and their associated webhooks.
// This requires applications credentials with a bearer token
var environments = await appClient.AccountActivity.GetAccountActivityWebhookEnvironmentsAsync();
// the sandbox environment is available within the free tier
var sandboxEnvironment = environments.Single(x => x.Name == "sandbox");
// registered webhooks url are available in the Webhooks collection
var registeredWebhooks = sandboxEnvironment.Webhooks;
You can also request webhooks of a specific environment.
var webhooks = await appClient.AccountActivity.GetAccountActivityEnvironmentWebhooksAsync("sandbox");
Webhooks - Delete¶
Twitter restricts the number of webhooks url to which it will send the events.
In the case of the sandbox environment this is limited 1 unique url.
To remove a webhook from Twitter:
await appClient.AccountActivity.DeleteAccountActivityWebhookAsync("WEBHOOK_ENVIRONMENT", "WEBHOOK_ID");
// quick solution to clean your sandbox environment
var webhooks = await appClient.AccountActivity.GetAccountActivityEnvironmentWebhooksAsync("sandbox");
if (webhooks.Length > 0)
{
await appClient.AccountActivity.DeleteAccountActivityWebhookAsync("sandbox", webhooks[0]);
}


Users that you Follow
{% for user in following %}
{{user.following}}
{%extends 'main/base.html'%} {%load bootstrap4%} {% load static %} {%block content%} {{block.supper}}