It is not easy to study any science intensive software. My software is not only science intensive, it is an interdisciplinary
one. Why do we need interdisciplinary software? Let mechanical engineers be engaged by mechanics, and electricians be engaged
by electricity. However, I know some engineering problems that includes mechanics, electricity, heat, elasticity phenomena,
and also require the usage of star catalogues. For example, an aircraft or spacecraft may be equipped by radio systems,
laser altimeters, and astronavigation systems. Merging such problems into a single software framework enables us to solve
these problems more effectively. The best understanding of my framework, I've found among advanced mathematicians and
IT specialists. Both of them have a good understanding of high levels of abstraction. Otherwise lots of engineers
underestimate IT specialists. For example, many engineers do not know about high levels of abstraction in electronic
commerce. Lots of Russian residents think that commerce is:

weighing;

paying cash;

wrapping.

Many engineers have almost similar opinions about electronic commerce software. Many radio-physics engineers think that
magnetic strength field of a
dipole antenna is
. Good IT
specialists consider any physical field as an object. According to his opinion, it should be necessary to develop an
abstract physical field. "I do not need any abstract field. I'm engaged by concrete practical problems. So I do not
need arrays of variable lengths and I use Delphi and Fortran" - answers the radio-physics engineer. However,
this radio-physics engineer solves new concrete practical problems from the zero point. This article is a
single step of a very difficult way of propaganda of this universal engineering framework. The best propaganda
should be easy to understand. The human mind grasps virtual reality much more better than abstract theories or
equations. Sometimes, even I have a doubts about my own software. However, when I see a good behavior of 3D shapes,
my doubt vanishes. If you try my software, then you would notice that mechanical motions and interactions of 3D shapes
with physical fields are correct. The first picture of this paper indicates such an interaction. This framework enables
us to construct complicated pictures of virtual reality at once. It is like
The Incredible Machine,
but requires a more strong understanding of engineering problems. Indeed, this software is not a software, but rather
a scientific research or philosophy. Now, I do not know the details of its future development. Some of its elements seem
very bad. Later, I'll improve them, but now I do not know optimal ways for this improvement. This article is a survey.
The documentation of this software contains the systematical description. This documentation shall be improved and extended.
So let us start.

Background

This framework seems very unusual. Other similar frameworks are adopted to specialists of domains. For example,
LabView is oriented to dataflow.
A typical dataflow diagram looks like:

This diagram means that the signal flows from Filter 1 to Filter 2 and then to
Filter 3. The situation is quite clear. However, if the software functionality is not limited to
data flows, then a more appropriate language is a language of associations. In this language as well as in my
software, this diagram looks like:

The directions of arrows are inverted. This picture means that Filter 2 is a consumer of the signal of
Filter 1. Filter 1 does not know about Filter 2, but Filter 2
knows about Filter 1. This is known to any IT specialist (I hope that this article would be read by
more wider audience than IT specialists) . We may also imagine the situation that is presented on the following picture:

This R 1 link means that Plane 1 is a consumer of radiation of Radar.
Link F 1 means that Radar is a consumer of the 6D position of Plane 1.
Radar, as a source of radiation, does know about Plane 1. Otherwise, Plane 1
does not know about Radar as a 6D position. Similarly, we may consider Plane 2 as a
consumer of radiation of Plane 1. The notation of associations may be considered as an egoism of the
software developer. However, specialists of electric circuits found that the letter "i" of the imaginary unit is an
egoism of a mathematician since this letter is used for instantaneous currents. But the imaginary unit is not used
by specialists of electric circuits only. It is used by specialists of aerodynamics, quantum chemistry, semiconductors,
control systems etc. Otherwise, my software is quite flexible, and it is very easy to invert the directions of arrows.
This software is far from perfection. I intend to do revisions. However, now it is discussed for a little group of users.
Maybe, the motion of 3D shapes would attract more people to it. This propaganda shall be continued.

1. 6D motion

This software originated as a version of dataflow. However, an excellent application of dataflow is animation.
Really, equations of the motion of air and space objects are known, and the usage of advanced dataflow may
sufficiently improve any software devoted to 6D motion. This software has an abstract 3D graphics layer. An
OpenGL implementation has been developed. I've found that DirectX leads to memory overflow when many 3D graphics
windows are used. Maybe, I'll develop a DirectX implementation later. This chapter uses the following ingredients (components):

Finite formulas - ;

System of ordinary differential equation -
;

Rigid reference frame - ;

Moved reference frame -

Camera -

3D Shape -

Finite formulas are used for kinematics trajectories of vehicles. If we wish to use ordinary differential equations
of vehicle dynamics, we should use second components. Rigid reference frame are used for installation of cameras on
them, and moved ones are used for installation of vehicles. However, we can install camera on the moved reference frame.
Now, I'll exhibit some examples.

1.1 Immelmann turn

For me, the immelmann turn is
like the "Hello world". The following scenario is a rather impressive than a realistic one. Real planes and pilots do not
allow such acceleration. To create this scenario, I chose analytic formulas of 6D motion. One of these formulas looks like:

Sometimes people tell me: "Only you can construct formulas for such advanced maneuvers. Hence your framework is not
applicable." However, my practice has lots of examples for replacing 200 members by 2 - 3 guys. A potential an excellent
application of this framework is a competition between guys for formulas for maneuvers of planes. This competition does
not include finite formulas only. They can include differential equations. More complicated competitions may include
acceleration limits, robot pilots, and air fights. It is a real fight of minds. Now, let us return to the Immelmann turn.
This scenario is presented on the following picture:

This picture has the following meaning. We have a set of kinematic formulas that are stored on the Motion
component. We also have a moved frame Plane Frame. This frame has the following properties:

I.e., coordinate X corresponds to Formula_1 of Motion, ... , component Q3
of orientation quaternion corresponds to Formula_7 of Motion. The Plane
has been installed on the Plane Frame. We also have two rigid frames: Forward frame and
Left frame. The properties editor of the rigid reference frame looks like:

It contains the transformation matrix and the coordinates. We can construct a tree of frames as it is presented below:

This diagram means that the 6D state frame 1.1 is considered relative to frame 1 etc.
The usage of such diagrams is one of the reasons for the application of associations in this framework.

Then, set the Step and Step Count text fields on the main form to 1 and 150,
respectively. Open the Forw and Left cameras (right click on squares).
Move the opened windows to (almost) full common visibility of them, and click the Start button on
the one of the windows. You will see the Immelmann turn from different positions:

then, set the Step and Step Count text fields on the main form to 1 and 70, respectively.

This situation contains a group of planes and several cameras. It is a very good exercise to set cameras for the
necessary view. Two cameras have been installed on the planes. I doubted that these cameras would shown the correct
picture. But after some thought, I understood their moves. Indeed, this framework is an excellent tool for training
3D-imagination skills.

In lots of cases we should represent virtual reality inside framework of engineering
problem. The example below shows plain by camera that is installed on radar.
I've considered a two channel follow-up system of
radars antenna. I've said that it is possible to install a virtual camera on the antenna. If you wish to
try this sample, then:

set the Step and Step Count text fields on the main form to 0.1 and 80, respectively.
The following graph shows the residuals of the control system.

The red curve is an azimuth residual, and the blue curve is an elevation angle one. We can find this oscillatory process
through the Following camera that has been installed on the antenna.

2. Deformations

This chapter uses additional components:

Transformer of 3D shape

Transformer of bitmap

As well as any transformer, the 3D shape is a consumer of data. It transforms the shape surface by the following rule:

u = f(w);

where u = (x, y, z) and w = (x', y', z') are 3D vectors. Since this framework, in fact, contains the
dataflow, we can use any data transformer for the definition of f. However, we should define what is x.
This framework operates with a notion of alias. For example, the finite formulas component has the constants x, y,
z, and a:

Every constant may be an alias, and it may be used as the input data of a 3D shape transformation. Otherwise, the editor
of properties of the 3D shape transformer looks like:

The picture above has the following meaning. Components of w=(x', y', z') to F.x, F.y,
and F.z, or x, y, and z of F. Otherwise,
components of u = (x, y, z) correspond to Formula_1, ... , Formula_3 of
F. So we can deform the 3D shapes. Similarly, we can deform 2D bitmaps.

2.1 Deformation of plane

If a plane has a vertical acceleration then its wing is being deformed. The grotesque picture is shown below:

This picture contains a prototype Plane, and the result of the deformation, the Deformed Plane.
The F contains the formulas of deformation. Also, we have two cameras and a reference frame that define a
6D position of cameras.

2.2 Torus

This sample is rather an example of
analytical geometry.
It shows that this framework may also be used as a training software. In this sample, a square:

There exists an engineering problem when we deform a view. For example, sometimes it is necessary to simulate a view
through a curved mineral glass, or view in a distorting mirror. The transformer of a bitmap is used for solving this
problem. As well as any typical object of this framework, the camera implements a set of interfaces. One of them is
the "Bitmap provider". The transformer of the bitmap
transformer
may be connected to any "Bitmap provider". The editor of properties of the transformer of the bitmap looks like:

In this picture, the camera view of the torus has been used as a prototype. We have performed the following transformation
of coordinates of the bitmap:

If you wish try this sample, you should perform the downloads from 2.2.

3. 6D dynamics

3.1 Introduction

Solid body dynamics is described by systems of ordinary differential equations (ODE). This software contains an
ODE solver. However, I've found that this solver is very complicated for users who wish to simulate 6D dynamics.
So I've developed a special solver
6D dynamics for 6D dynamics. It is not easy to use it, but later, I'll develop a more simple component. This
component does not operate with the ODE but it uses the forces and torques. Its editor of properties looks like:

Forces and torques are decomposed by the components of absolute reference frame and relative reference frame:

There is a rigid connection between a solid body and relative frame. This decomposition is very convenient. For example,
it is convenient to describe a tractive force of an aircraft engine using a relative reference frame. However, an absolute
reference frame is useful for the description of gravity forces. The description of 6D dynamics of solid bodies requires
feedback. Forces and torques act on solid bodies. Values of forces and torques depend on motion parameters of the body.
Otherwise, derivations of motion parameters depend on forces and torques. This feedback is presented on the following picture:

It had been used as a mechanism of aliases for the implementation of this feedback. A more profound description of aliases
can be found in the documentation. Usage of aliases enables linking aliases with motion parameters. It is shown below:

3.2 Example. Dynamics of an aircraft

Let us consider an example of aircraft dynamics. An aircraft is forced by gravitational force, reactive force, and
aerodynamic force. Moreover, the aerodynamic momentum forces on the aircraft. Gravitational force and tractive ones
are very trivial, and we consider aerodynamic forces and torques. They are described by the
drag coefficient, and the
lift coefficient. These
coefficients depend on the angle of attack.
At transonic velocity, these coefficients strongly depend on the
Mach number. Aerodynamic torques
also may be described by coefficients, those may depend on the
angle of attack and the
Mach number. Usually, these
coefficients are obtained by experimental ways and defined by tables. I've created a scenario with forces and moments
that depend on the angle of attack and the Mach number. Maybe, I would be criticized by specialists of aerodynamics.
However, I am ready for further discussion of the subject and improving of this scenario. This scenario is shown on
the following picture:

This scenario contains different calculations, and uses 2D tables
of aerodynamic
coefficients. For example, the
drag coefficient
is defined by the following 2D table:

Some engineering devices contain a set of components that are not rigidly linked. It is convenient to merge such devices
into containers. One example of containers is presented below. The
conventional layout helicopter
has the following components:

Fuselage;

Main rotor;

Tail rotor.

For pitch (tilting forward and back) or roll (tilting sideways), the
angle of attack of the main
rotor blades is altered or cycled during the rotation, creating a differential of lift at different points of the rotary wing
(see Controlling flight).
So we have a very complicated motion of blades. This framework uses the following scenario of this motion:

For convenience, we've merged these components into a single one (named Helicopter),
and then we've installed cameras around it:

You can observe the helicopter through these cameras:

You can notice the helicopter specific motion of the blades.

Virtual reality does not only show things that could be seen by the eye. It also represents invisible physical
phenomenen. Heat distribution, electromagnetic waves, and lots other phenomenen are not visible. Good examples
of visualization can be found at:

There exists thousands of other examples. Since this framework is universal, it should operate with every kind of
physical field. Fields may live at 1D, 2D, 3D, or 4D space (time). Now, an
Euclidean space of any dimension
is implemented as an environment of physical field. My software does not yet admit
Pseudo-Riemannian manifold
as an environment of physical field. However, I do not already like the
Pseudo-Riemannian manifold, and prefer
Noncommutative geometry.
My first step in noncommutative geometry
can be found here. My great wish is the adoption of this framework to
Noncommutative geometry.
Let us return to physical fields in the Euclidean spaces. Physics have scalar, vector, tensor, and other types of fields.
An important aspect of modeling is a law of field transformation during coordinate system transformation. A good review of
this subject can be found in
this article.

5.1 implementation of physical fields

Any field implements the following interface:

namespace PhysicalField
{
///<summary>/// Physical Field///<summary> publicinterface IPhysicalField
{
///<summary>/// Dimension of space ///<summary> int SpaceDimension
{ get; }
///<summary>/// Dimension of space ///<summary> int Count
{ get; }
///<summary> /// Type of n-th component ///<summary> ///<param name="n">Component number</param>////<returns>Type of n-th component</returns>object GetType(int n);
///<summary>/// Type of transformation of n - th component ///<summary> ///<param name="n">Component number</param>//////<returns>Transformation type</returns> object GetTransformationType(int n);
///<summary>/// Calculates field///<summary> ///<param name="position">Position</param>////<returns>Array of components of field</returns> object[] this[double[] position]
{ get; }
}
}

A field may contain a set of components of different types. Types may be scalar, vector, or tensor ones. Every component
has its own type of transformation. The method: object[] this[double[] position] calculates
the field value at a position on a Euclidean space. The usage of the set components has the following reason. Electromagnetic
fields of infrared and radio diapason may be considered as fields of different nature. We can separate different frequency
bands. So the separation of fields may be very convenient. This software contains the dataflow and data processing. It is an
excellent material for implementation of the field. As well as, for 6D dynamics, we use following architecture of feedback:

The user interface of the field property editor looks like:

This editor has a number of components. Coordinates are defined by aliases. Field parameters are defined through
data processing. We can use a matrix and vector formulas for the definition of a field. The following formula with a
vector product will be used below:

and corresponds to the electric field strength of a
dipole antenna.

5.2 Interaction between a field and a surface

The interaction between a field and a surface is presented on the following picture:

A surface is divided by elements. Every element of a surface has material and derived parameters. Material parameters may be:

Vector that characterizes surface anisotropy (surface may have a set of such vectors);

Normal vector;

Surface conductance (surface may have a set of such parameters for different frequency bands);

Heat-transfer factor.

Derived parameters may be:

Surface current (surface may have a set of currents for different frequency bands);

Surface temperature;

Derived parameters of the element of a surface depend on the field value near the element and at material parameters of
the element. The mechanism of aliases is used for the calculation of derived parameters. The user interface editor of
surface properties is presented on the following picture:

This picture contains the aliases of field and material parameters. Also, it contains a derived parameter.
This software supports the visualization of derived parameters:

Output parameters are used as colors of visualization. A sample scenario of interaction between fields and
surfaces is presented below:

This sample contains a Field that is an electric field strength of a
dipole antenna. The
Surface contains a material parameter. It is a vector of normal. The derived parameter is
a surface current. The module of surface current is visualized. If you press the Update button on the
surface property editor, then you can see the following picture:

Originally, I used star catalogues for my own research in Astronomy. Later, I found that catalogues with the framework
is an excellent material for solving engineering problems. Lots of engineering devices use astronomical instruments.
Moreover, star catalogues may be used for virtual reality. Let us consider the construction of a set of stars step by step.

Step 1: SQL Query

It uses the Query component
for this purpose. Its property editor is presented below:

Now this framework supports the SQL Server driver, the Oracle driver, and the ODBC one.

Step 2: Transformation

A catalogue of stars operates with parallaxes, the star's magnitudes, and other parameters. We should transform them
to geometric coordinates and also visible colors and sizes. We use data transformation for this purpose.

Step 3: Creation of a set of visible images.

We use a special component for this purpose. Its property editor is presented below:

This UI is clear.

Step 4: Installation of (moved) cameras

We can install cameras on the (moved) reference frame and observe the stars through them. The resulting picture looks like:

A sample of the visualization of stars is presented below:

It contains all the ingredients of steps 1 - 4. For the motion of pictures, enter the Step and Step Count
and then press the Start button:

Ilja Muromets
is a Russian national hero, and a resident of the territory of the present Ukraine. He was very ill and was even
paralyzed up to the age of 33 years. Then, he became a very strong man and he defeated the well equipped, hard
skilled troops of the Tatars, Mongols, Khazars, and the Hitlerite aggressors. Now I'm in a similar situation.
The iron curtain of USSR, the shortage of information and hardware has made me paralyzed. Now, my own powerful
computers are looking for
Dark matter in the space,
using catalogues with lots of stars. These catalogues may be downloaded by anybody. Many scientific papers and
databases are accessible. Recent technologies enable everybody to do great scientific discoveries at home. Now
we have fantastic 3D graphics. I was even named 3D Monster for my 3D graphics. The voice of one man is the voice
of no one. Of course, one man cannot produce commercial software. But he can generate excellent ideas for it.