This essay has been submitted by a student. This is not an example of the work written by our professional essay writers.
Design of a graphic user interface using Microsoft Visual C++ to display the output data produced by software called Numerical Electromagnetic Code 4 as a text file for analysing antennas. This project will be using Windows Application Programming Interface and Open Graphic Library Application Programming Interface to write the software in C language. Which the output data will be phrase and selectively display it into colour plot in a user friendly fashion.
This design project was written by using programming software developed by Microsoft Company called Microsoft Visual C++ (Version 6.0) .C language was choose to write the software, included two libraries which were Windows application programming interface (sometimes referred to as Windows API or Win32 API) and OpenGL application programming interface (OpenGL API).
Win32 API is a graphic oriented and event-driven programming. For Example, the user clicks mouse on the main window area of the program. Windows will decode the Hardware signals from the mouse and calculate or figure out which coordinate of main window user has pointed and clicked. Finally, the program read the message of the data and receives the instructions then returns the control to windows. 
There are thousands of functions in win32 API which allow the programmers to code in windows environment. Besides, programmer can display a GUI and formatted text on the windows. win32 API also able to let programmer to display video, produce audio, setup networking link with another computer or device and give security to protect the user from hacker damage or steal their data. Unfortunately, Win32 API worked for windows operating system and supported C language only.  
In 1991, Open Graphics Library (OpenGL) is developed by Silicon Graphics Company mainly used for engineering visualization or simulation and graphic gaming. Today, OpenGL support in C, C++, C#, Java, Fortran 90, Perl, ADA , PYTHON and more. it also works for major operating system (Windows, Unix, Macintosh, Embedded Device and Supercomputer).  
OpenGL have many different function calls to creating complex 3D environment. The main purposes of OpenGL are capable to accelerate the 3D complexities and support software emulation for full OpenGL feature implementations. 
In previous project, Dr Greg Cook design a GUI (Graphical User Interface) called ViewNEC that could phrase the data file and display it in colour plot. The main objective of this project is to modify and improve ViewNEC for user to analysing output antenna data as a text file produced by NEC-4 (Numerical Electrometric Code 4). After that, selectively display the Electric Field and Axial Ratio. NEC is modelling software for antenna written in FORTRAN and the most common version used by engineer is NEC-4. NEC worked for most of the operating system. 
E-field (Electric Field) is defined as determine the force in a space of a unit charge (N/C) which is equivalent to volts per meter (V/M). The E-field has direction and magnitude. Axial Ratio is used for determinate how well the polarization and the pattern of the antenna.
2.0 Project Specification
Design a user friendly GUI using Microsoft Visual C++ 6.0 with Win32 API and OpenGL API to display amplitude and phase of E-field and Axial Ratio values produced by proprietary software in NEC4. These data will be display in colour constraint plot.
The following will be using windows application programming interface:-
The software will be able to open and read the data text file. After that, the software will store the amplitude and phase of E-field X, E-field Y and E-field Z into the memory.
The software will use amplitude and phase of E-field from the memory and calculate axial ratio of X-Y, Y-Z, Z-X and X-Y-Z. Then, colour plots on the main window.
The user can use right mouse clicks to change the plane in the main window.
The data can be amplified or zoom in and out using double mouse click. Example, the user can double click one of the colour plots. After that, a dialog box will pop up and let the user to amplify the relevant colour plot.
If the user single mouse clicks on any colour plot, the relevant value can be display on the main window.
The user can modify the colour of the plot and change back to default colour of the plot.
The user able to filter out any unwanted colour plot in the main window. For instance the user click amplitude E-field X button, the main window will filter out all the colour plots except amplitude of E-field X.
The following will be using open graphics library application programming interface:-
The user will be able to use the mouse to move around the object or colour plots in 3D environment easily. But, the camera will stay at the same position.
The user can use the 3D glasses to view the amplitude and phase of E-field at the same point of area in the screen and able to compare amplitude and phase of E-field X, E-field Y and E-field Z at the same time in 3D environment.
The user able to use the 3D glasses to view amplitude and phase of E-field X, E-field Y or E-field Z at the same point of area in the screen with different plane at the same time in 3D environment.
The user can compare and view any colour plot in different plane in 3D environment at the same time rather than use right mouse clicks to change the plane.
Electric Field is a point of space where the force is being measured on a unit point of charge which is equally to volt per meter.
Axial Ratio is use to examinant the pattern of the antenna's polarization or checking the quality of the polarization.
There are three types of polarization which are linear polarization, circular polarization and elliptical polarization.
Linear polarization is travelling in one direction only. The electric field and magnetic field are perpendicular to each other while travelling to where the wave of the plane is propagating. They can be travel in horizontal or vertical which is usually called horizontally polarized and vertically polarized.
Circular polarization is where the y and x components of phase are different by 90Ëš and they are equal magnitudes.
Elliptical polarization is any two of the components are different by 90Ëš but the magnitudes are not equal.
In term of axial ratio, the circular polarization is usually in unity dB or one dB of axial ratio. The elliptical polarization is larger than one dB and the linear polarization is infinite dB axial ratio.
The derivation of axial ratio for x and y component are shown in appendix 9.1 and for x, y and z components are shown in appendix 9.2. 
NEC4 Generated Data Text File
Open Text File
Set Change Colour of Plots
Maximum & Minimum Display Colour Plots and
Of Amplitude E-field Filter Plots
Zoom Feature 3D Feature
Figure 1.0 - The Process of the Software
Figure 1.0 shows that after NEC 4 generated the data text file, the user have to open the data file and proceed to phrase the data from the software. In the end, the software will display the amplitude of E-field, phase of E-field and axial ratio. At this stage, the user has the options to change the range of amplitude E-field, change the colour of plots, enlarge the plots, view the plots in 3D environment and filter unwanted plots.
If the amplitude value is shown too large or too small in data text file, the user can set the range of maximum and minimum amplitude E-field in the main window. So that it will clearly show the colour plots. Furthermore, the user can change the colour of plots and filter any unwanted plots. Besides that, the user can enlarge any colour plots and view the value of any point of colour plot with mouse clicks.
In 3D feature, the user has the options to view the plots with different plane and easily rotate the plots with mouse in 3D environment. Besides, the user can view the mixture of amplitude and phase of E-field.
4.1 Data File
Figure 2.0 - Data File
The figure 2.0 shows a small section of data file produced by NEC 4. The data file included the location of X, Y, Z, Amplitude, Phase of E-field in different direction and other unwanted information.
The data taken shows that:-
The total volume of weight (X) taken is 40m and increasing 1m from 3m to 43m.
The total volume of length (Y) taken is 200m and increasing 1m from -100m to 100m.
The total volume of height (Z) taken is 1.5m and increasing 0.3m from 0.2m to 1.7m.
Therefore, the total of planes is 6 and the data gives an idea of where the amplitude and phase of E-field were taken. For example at (3m, -100m, 0.2m), amplitude of E-field X is 0.19679 V/m and phase of E-field is 6.98Ëš.
4.1.1 Open Data File
Before accessing or opening the data text file through the GetOpenFileName () function. The file dialogs box has to initialise as shown in appendix 9.3.
First of all, the struct of OPENFILENAME has to initialise to zero by using ZeroMemory() function , set the flexible of the file name by using szFileName function and set the length of struct size by using lStructSize function.
Then, hard code the file dialog box to find the default extension file name txt and other file type if user uses different extension. Then, point to the memory buffer that allocated for file name using lpstrFile and set the flags as shown above to open the data text file.
The following explain about flags shown in appendix 9.3:-
OFN_EXPLORER - The system will use the default windows explorer style depending on user's operating system. If not set, the system will use the old windows style of template.
OFN_FILEMUSTEXIST - The file name must exist or valid. For this case, any file name also valid because there is no hard code file name in appendix 9.3.
OFN_HIDEREADONLY - The check box of read only mode will hide. Since the code in appendix 9.3 didn't support. 
Finally, use CreateFile() function to open a file. Then, connecting a link between the run time file and operating system file handle to open the file with _open_osfhandle() function. After that, open and read the file in low level output using _fdopen() function.
The following figure 3.0 shows that the simple flow charts of opening the file from dialog box.
Open Program Software
Select Data Text File Cancel
Figure 3.0- Simple Flow Charts of Opening the File to Collecting Data
In the end, the open file dialog box will looks like figure 3.1.
Open File Dialog Box.bmp
Figure 3.1 - Open File Dialog Box (Windows Vista)
4.1.2 Collecting Data
A mechanism is needed to collect the data from the data text file. First of all, use fseek() function shown in appendix 9.4 to point the pointer to the first character starting from the top line.
Assumed that all data format generated by NEC 4 is the same and notice that figure 2.0 has "NEAR ELECTRIC FIELDS". So, that line can be used as a starting point for collecting data because there is no other lines have the same arrangement of characters with that line. To simplify, use "N" "E" "A" "R" " " "E" (Note that 5th character is a space).
Therefore the storage of five characters is needed, use strcpy() function to copy character by character starting from sixth location to first location and use strcmp() function to compare the storage with hard coded characters as shown in figure 4.0. If the system detected five characters of hard coded arrangement is the same in data file. It will note that line as a starting point of collecting data.
1st 2nd 3rd 4th 5th 6th characters from data file
N E A R E
Figure 4.0 - Mechanism of Copying and Comparing Characters
After that, use the same mechanism system to end the collecting of data as shown at appendix 9.4. Finally, use fscanf() function to collect data as shown at figure 4.1.untitled.JPG
Figure 4.1 - Collecting Data Code
4.1.3 Phrase Data
Assume the length of x and y direction of location are the same and the number of z plane will change for every data produced by NEC4.
Figure 5.0 - Code for Detect the Number to Z Plane
To find out the number of z plane, a simple logic system is coded as shown in figure 5.0. The number of z plane will keep increasing if the system detected the current line of z value is different with the previous line from figure 2.0(data file).
For complete information, the detecting system of maximum and minimum value of z plane can be added in the code as shown in figure 5.0.
Instate of calculating the number of X and Y by hand, the same logic system from figure 5.0 can be used. But, stop systems need to add into code as the same cycle of X and Y value will reappear in data. The summary of detect number of X shown in figure 5.1. (The summary also can apply to Y and Z)
Is the Current No Add Number of X
Line of X Value
Same with First
And Previous Yes Total Number of X
Figure 5.1 - Flow Diagram of Detecting the Number of X
4.1.4 Maximum and Minimum of Amplitude E-field
As the value of amplitude of E-field in X, Y and Z may vary. There could be huge difference value that hard to scale it down into view able 8-bits (256 colours) colour plot range. Therefore, the low value of amplitude will hardly view in colour plot compare with high value of amplitude. The user has to manually input the maximum and minimum range for amplitude of E-field in dialog box shown in figure 5.2.
If the max amplitude of range value input by user is smaller than amplitude from data file, the value will replace the amplitude of E-field. Similarly, min amplitude of range value is larger than amplitude of E-field, the value replace the amplitude of E-field. So, the amplitude of E-field will be within the range of user input.
Figure 5.2 - The Maximum and Minimum of Amplitude E-field Dialog Box (Windows Vista)
4.2 Display Colour Plots
After collecting and phrase the data, the next stage was to turn the data into colour plots. So, the colour ranges systems (8-bits) from 255 to 0 needs to define for data by using calculation shown below.
Amplitude of E-field
Phase of E-field
(Note: Maximum value of axial ratio is infinite. In this case, use 10 to simplify.)
Next, use the equation from above to get the colour value and define each 256 colours with the combination of red, green and blue colour.
Figure 6.0 - Code of Pre-Defined Red, Green and Blue for Amplitude E-field Colour Plot
For example from figure 6.0, the value of red, blue and green can be control by colour value. The lowest range of colour value was defined as blue; mid range was green and highest range was red.
Then, use CreateSolidBrush() function to paint the colour plots into main window. The mechanism of painting colour plots was the same as printer while one block of colour contain a datum .The painting starting from top left and continues to right. After that, start from second left of the line and continues to paint as shown in figure 6.1.
1 2 3 4 5 6 7
8 9 10 .......
Figure 6.1 - Mechanism Numbering Order of Painting
Finally, the colour plots in the main window will looks like figure 6.2.
Figure 6.2 - Main Window of the Software (Windows Vista)
4.2.1 Change Plane Z
To change the z plane of colour plots in main window, right mouse clicks can be setup as shown in figure 6.3. If the user right clicks on the main window, the z plane will increase by one plane then immediately re-plot the colour plots and it will keep increasing until the top of z plane. After that, it will restart to bottom of plane.
As the different data file have the different z plane, the Total_Of_zPlane value is detected by the code from figure 5.0.
Figure 6.3 - Code for Setup Right Mouse Clicks to Change Plane Z
4.2.2 Display the Value
First of all, the position of cursor must know when user left mouse clicks on any colour plots. So, use GetCursorpos() function to get coordinate of cursor when user left clicks and use ScreenToClient() convert a point of screen coordinate to coordinate of client area or main window. Then, get the colour value using GetPixel() and GetRValue() function. After that, use the following equation to get the value of amplitude, phase of E-field or Axial Ratio.
Amplitude of E-field
Phase of E-field
For example in figure 6.4, calculate the amplitude of E-field from specified area of colour plot can defined by using the pt. x and pt. y from GetPixel() function. untitled.JPG
Figure 6.4 - Code for Receive the Value of Amplitude E-field X from Colour Plot in Main Window
4.3 Zoom Feature
The zoom feature is implement into software to let user able to view the colour plots clearly.
Colour Plot into Main Window
Copy All Colour Plot into Memory
User Double Clicks On Any Colour Plot
Copy One of the Selected Colour Plot from Memory into Zoom Dialog Box
Figure 7.0 - Flow Chart of Copy the Colour Plot to Zoom Dialog Box
Figure 7.0 shows the step of copy the colour plot into zoom dialog box.To do this, each colour plot must save it into memory imediately after ploted by using BitBlt() function shown in figure 7.1.
Figure 7.1 - Code of Copy the Plot to Memory
If the user double click on any colour plots, the software will copy the colour plot from memory and paste into the dialog box that will pop up. After that user can easily control the dialog box to zoom in or return to original size as shown in figure 7.2.
Figure 7.2 - Zoom Dialog Box (Windows Vista)
The selected colour plot from memory can be stretch by using SetStretchBltMode() and StretchBlt() function as shown below.
Figure 7.3 - Code for Stretching the Colour Plot
When the user presses the zoom button, the colour plot will increase the size by 1.2 times. If the user presses the fit button, the colour plot will return to the original size. Besides that, the user also able to left click on any point of colour plot in zoom dialog box to display the value as shown in figure 7.2.
Unfortunately, the zoom dialog box cannot open multiple times as it might mess up the code. For safety, the user can't open multiple zoom dialog box. To counter this problem, a far better solution for zooming feature that added into program will shows in later chapter.
4.4 Customize the Colour of the Plots
The colour of the plots can be customize by modify the code from figure 6.0 to appendix 9.5 as the user will be able to control the combination of red, green or blue colour with input the value of ivalue from 0 to 1275 and the brightness of the colour will be control by the colour_value depending on the data value.
The colour could change from the red colour to magenta colour shown in figure 8.0.
Red Red = 255, Green = 0, Blue = 0
Yellow Red = 255, Green = 255, Blue = 0
Green Red = 0, Green = 255, Blue = 0
Cyan Red = 0, Green = 255, Blue = 255
Blue Red = 0, Green = 0, Blue = 255
Magenta Red = 255, Green = 0, Blue = 255
Figure 8.0 - The Range Of Colour
When turning the colour from red to yellow, the green colour will increase from 0 to 255. Oppositely, the value of control_green from figure 8.0 has to decrease from 255 to 0.
Again, the red colour will decrease from 255 to 0 while the yellow colour slowly turning to green colour. So, the value of control_red has to increase from 0 to 255. Therefore, the user can change the colour easily with input of ivalue from the dialog box shown in figure 8.1.
Figure 8.1 - Dialog Box to change the colour of the plot (Windows Vista)
For example, the user input 300 for amplitude of E-field, 700 for phase of E-field and 1275 for axial ratio. The colour of the plot will change as shown in figure 8.2. If the user press default button, the colour of the plot will change back to original colour.
Figure 8.2 - The Colour of the Plots Changed in Main Window (Windows Vista)
4.5 Filter Plots
The user able to filter out any colour plots by click the button located from the right side of the main window. For example the user clicked the axial ratio mode button; the program will filter out other plots except the axial ratio's colour plot as shown in figure 9.0. To change back to original view, the user can click on "show all modes" button.
Figure 9.0 - Filter out other Colour Plots except Axial Ratio. (Windows Vista)
4.6 OpenGL Setup
Before using the OpenGL API to support 3D environment drawing for colour plots with Win32 API, Microsoft Visual C++ 6.0 has to add OpenGL32.lib, Glu32.lib and GLaux.lib files under object or library modules in the settings. Next, the pixel format has to setup before the rendering can begin as shown in appendix 9.6.
These will setup the bits colours of the pixel, colour type, the z depth bits of each the pixel is rendered, support for windows and OpenGL. Besides that, double buffering feature has added into pixel format for rendering the pixel in the memory before paint everything into windows. Then, the setup of pixel format function can be called to initialise before paint into dialog box as shown in figure 10.0.
Figure 10.0 - Initialise the Dialog Box to use OpenGL
After that, setting up the OpenGL screen size as shown in appendix 9.7 to setup the width, height and perspective projection of the 3D world. As the drawing of 1 unit2 square (a datum of colour plots) will took a lot of space in 3D world, the value z depth of the screen has to be huge to prevent the drawing vanish or out of screen.
4.7 Setup the Control View of 3D Environment
Another important setup for OpenGL is the control view of the 3D world. There are two options to control the view of 3D world; either controls the object movement or camera movement. Since the camera movement will be too complex, this project was control the object movement to change the environment of 3D world as the code shown in appendix 9.8.
The user can move the colour plot to any direction by holding the right click button on the screen while moving the mouse around and holding the left click button while moving the mouse around to flipping the colour plot show in figure 11.0. The user also can holding the middle mouse button to turn the colour plot in clockwise direction if moving toward to left and anti-clockwise direction if moving the mouse towards right. Besides that, user can zoom in and zoom out the colour plot simply by using mouse wheel. These features are made possible by using LOWORD and HIWORD function to track down the movement of mouse shown in figure 11.0.
Flip Object Towards Up
Flip Object Towards Left Hold Left Click Flip Object Towards Right
Flip Object Towards Down
Object Move Up
Object Move Left Hold Right Click Object Move Right
Object Move Down
Rotate the Object Hold Middle Click Rotate the Object
Figure 11.0 - The Object Movement Control with the Mouse (Arrow indicate the direction of the mouse or the wheel movement)
4.8 Display the Colour Plots in 3D Environment
Last but not least, the drawing line or shading model in OpenGL has to setup using glShadeModel() and glHint() for smoothing the shading and the line as shown in appendix 9.9. Before drawing, it is safer to use glClear() function to clear the depth of the screen to avoid the graphic glitches.
Then, use glTranslatef() function to support the mouse right click button that moving the colour plot any direction or zoom in and out. For mouse left click button, use glRotatef() function to rotate the colour plot around in any direction.
Usually, the OpenGL programmer expert will use the triangle to draw any complicated object such as the face of human or even the sphere with smooth shading. To simplify, this project was using square to draw the colour plot by using GL_QUADS flag.
Using the formula from chapter 4.2 to convert the data value into colour plot and set the colour of red, green, blue into glcolor3ub() function. After that, use glvertex3f() function to draw the square (a datum) and using for loop to combined all the square together to form the colour plot shown in figure 12.1. (Remember to use glFlush() function to clear the buffers after ending the drawing)
Finally, the windows have to communicate the OpenGL so that dialog box will able to plot in 3D. As shown in appendix 9.10, rendering context (RC) is plug in the OpenGL into device context (DC) to communicate with graphics device interface (GDI) where the rendering context contain the information of OpenGL and device context contain the information of windows or graphics device interface. Then, call the drawing function from appendix 9.9 to plot.
After drawing, use wglMakeCurrent(NULL,NULL) to unplug the device context from rendering context and remember to use wglDeleteContext(hRC) to delete the rendering context for free the memory before exit the dialog box as shown in figure 12.0.
Figure 12.0 - Code for Close the Dialog Box
Figure 12.1 - Amplitude of E-field Colour Plot with Different Plane (Far Left is Bottom of Plane and Far Right is Top of Plane) in Dialog Box using OpenGL (Windows Vista)
4.9 Blend Amplitude and Phase of E-field in 3D Environment
To ease the user to view the amplitude and phase of electric field, this section will combined the amplitude and phase together. But, the user has to use anaglyph 3D glasses (cyan and red) to differentiate the amplitude and phase at the same place.
Before combined the amplitude and phase of colour plot, the lightning and blending setup code has to add into initialise the drawing section show in appendix 9.11. So that, the colour plot will looks like transparent. Then, place the amplitude in front and phase in back or vice versa so that both colour plot will looks like combined together as shown in figure 13.0. Besides that, remember to disable or remove the depth test function because the code will disrupts the blending function and transparent will not work.
Figure 13.0 - The Amplitude and Phase of Colour Plot Combined (Windows Vista)
According to the figure 13.0, the red colour is the amplitude of electric field and the cyan colour is the phase of electric field. The colour plots start from far left are X, Y, Z and average of amplitude and phase of electric field.
When the user wears the anaglyph 3D glasses (cyan and red) and see through the red colour lens, the phase of electric field will cancel out. So, the user will happen to be only view the amplitude of electric field as shown in figure 13.1.
Figure 13.1 - Example Taken from iPhone 4 Camera with Red Colour Cover on Camera Lens (Near Perfect Compare with Human's Eye)
If the user sees through the cyan lens, the amplitude of the electric field will almost cancel out and the user will only see the phase of the electric field as shown in figure 13.2.
Figure 13.2 - Example Taken from iPhone 4 Camera with Cyan Colour Cover on Camera Lens (Near Perfect Compare with Human's Eye)
4.9.1 Display in Different Plane
The user also can display the different plane of amplitude and phase of electric field in any direction by simply open and select the options as shown in figure 14.0.
Figure 14.0 - Dialog Box for Display the Different Plane of Amplitude and Phase of Electric Field (Windows Vista)
For example, the user select Electric field X of Amplitude and Phase option and pressed ok button. A dialog box will pop up and display the amplitude and phase of electric field x in 3D environment as shown in figure 14.1. Again, the user has to wear the anaglyph 3D glasses to differentiate amplitude and phase.
Figure 14.1 - Display all the z Plane of Amplitude and Phase of Electric Field X in Dialog Box (Windows Vista)
As more data or colour plot and calculation were added into the program, so the overall speed of displaying the colour plot will major slowing down when the user trying to re-plot in main window and moving the axial ratio colour plot in 3D environment as OpenGL tents to recalculate and re-plot.
For main window, the overall speed of displaying colour plot will improve when the calculation of colour value for each data were put into the phrase data stage and store the value, Instate of re-calculate the colour value every time the program re-plot.
The overall speed also could improved, when the all colour plots including all z plane were pre-plotted and copy into memory by using BitBlt() function. Then, just paste the colour plot into the main window when the user pressed left click to re-plot.
For OpenGL, double buffer feature doesn't seem to work very well for this project. So, the alternative solution to the slow down while moving the axial ratio colour plot was save the calculation data before plotting in OpenGL.
Since the objective of this project was to modify the previous project and adding more feature into the program while programming in C using Microsoft Visual C++ Version 6.0 to create the graphic user interface as user friendly as possible. Besides that, the overall speed was improved. Therefore, the target is achieved.
At this stage of completion, this project could be further improved by following:-
1) Since the range of the true colour (24-bit or 32-bit colour) were huge compare with 256 colours. So, the amplitude of electric field could properly convert into colour plot. Besides that, the user may doesn't need to input the maximum and minimum of amplitude.
2) This project was programming in c with windows API library to create GUI. So, the program will worked for windows operating system only. If use GTK+ and Qt as a library or toolkit with c programming, the program will not only could portable to Windows but Linux, Mac and Work Station.
3) The blending of two colour plot with anaglyph 3D glasses (cyan and red) doesn't work quite well because the user still able see two colour plot after using the anaglyph 3D glasses to filter. It may work better in polarized screen with polarized 3D glasses.
 No Name, 'Windows Application Programming Interface', 2011 Microsoft Corporation, About Windows API, http://msdn.microsoft.com ,2011.
 Richard R. Eckert: An Introduction to Windows Win32 API Programming, Lecture Notes, http://www.cs.binghamton.edu/~reckert/360/2_2000.pdf , 2011.
 No Name, 'OpenGL', The Industry Standard for High Performance Graphics, http://www.opengl.org , 2011.
 No Name, 'OpenGL', Wikipedia, Design, http://en.wikipedia.org/wiki/OpenGL, 14 April 2011.
 JS, 'OpenGL Drivers', OpenGL Drivers, http://www.opengldrivers.com/2009/06/find-out-how-silicon-graphics-invented.html , 9 June 2009.
 No Name, 'Numerical Electromagnetic Code', Wikipedia, http://en.wikipedia.org/wiki/Numerical_Electromagnetics_Code , 2011.
 Brook Miles, 'WinAPI Tutorial', The Forger's Win32 API Tutorial, http://www.winprog.org/tutorial/app_two.html , 2011.
 No Name, 'OPENFILENAME Structure', Microsoft Developed Network 2011, http://msdn.microsoft.com/en-us/library/ms646839(v=vs.85).aspx , 2011.
 Dr. Greg Cook, 'Array Antennas', University of Sheffield, Antennas & Propagation's Lecture Notes (EEE406), 22-26 page, 2011.