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:
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.
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.
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 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.
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.
If you wish to try this sample:
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:
As well as the Immelmann turn, we can construct a group of moved 3D objects. If you wish to try the 4 planes sample:
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.
This chapter uses additional components:
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.
If a plane has a vertical acceleration then its wing is being deformed. The grotesque picture is shown below:
Normal state.
Deformed state.
If you wish to try this sample then:
This sample looks like:
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.
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:
was deformed to a torus:
If you wish to try this sample, then:
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.
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:
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:
This table describes the dependency of drag coefficient on the angle of attack and the Mach number.
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:
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.
Any field implements the following interface:
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.
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:
Derived parameters may be:
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:
through the Camera.
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.
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.
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.
We use a special component for this purpose. Its property editor is presented below:
This UI is clear.
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.