Дополнительные материалы к занятию можно скачать здесь.
WPF предоставляет дополнительные графические и анимационные возможности, которые были ранее доступны только из специализированных библиотек - в частности, Интерфейс графических устройств (GDI) Microsoft Windows и Microsoft Windows GDI+. WPF предлагает встроенную поддержку мультимедиа, векторной графики, анимации и композиции содержимого, упрощая разработчикам создание оригинального пользовательского интерфейса и содержимого. Используя Microsoft Visual Studio .NET или даже текстовый редактор, такой как Блокнот (Майкрософт), можно создать векторную графику или сложную анимацию и интегрировать мультимедиа в приложения.
WPF знакомит разработчиков Windows с новыми графическими функциями, которые имеют следующие преимущества:
Создаем проект practice_5_1.
В окне MainPage.xaml наберите следующий код:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid x:Name="LayoutRoot">
<Viewport3D Height="300" Width="300" >
<Viewport3D.Camera>
<PerspectiveCamera Position="4 0.5 0.5" LookDirection="-3.5 0 0" />
</Viewport3D.Camera>
<ModelVisual3D>
<ModelVisual3D.Content>
<DirectionalLight Direction="-3.5 0 0" />
</ModelVisual3D.Content>
</ModelVisual3D>
<ModelVisual3D>
<ModelVisual3D.Content>
<GeometryModel3D>
<GeometryModel3D.Geometry>
<MeshGeometry3D
Positions="1 0 0 1 1 0 1 0 1 "
TriangleIndices="0 1 2"/>
</GeometryModel3D.Geometry>
<GeometryModel3D.Material>
<DiffuseMaterial>
<DiffuseMaterial.Brush>
<SolidColorBrush Color="BlueViolet" />
</DiffuseMaterial.Brush>
</DiffuseMaterial>
</GeometryModel3D.Material>
</GeometryModel3D>
</ModelVisual3D.Content>
</ModelVisual3D>
</Viewport3D>
</Grid>
</Window>
Перейдите в окно MainPage.xaml.cs и документрируем строчку InitializeComponent();:
Получаем следующий результат:
Для начала нужно создать пустой проект C#:
В свойствах проекта в пункте "Тип выходных данных" выберите "Приложение Windows".
Добавьте к проекту элемент "Файл с текстом программы".
К ссылкам проекта добавьте PresentationCore, PresentationFramework, System, System.Xaml и WindowsBase:
В окно кода добавьте следующую программу:
// Simple3DSceneInCode.cs (c) 2007 by Charles Petzold
//----------------------------------------------------
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Media;
using System.Windows.Media.Media3D;
namespace Petzold.Simple3DSceneInCode
{
public class Simple3DSceneInCode : Window
{
PerspectiveCamera cam;
[STAThread]
public static void Main()
{
Application app = new Application();
app.Run(new Simple3DSceneInCode());
}
public Simple3DSceneInCode()
{
Title = "Simple 3D Scene in Code";
// Создаем контент док-панели окна
DockPanel dock = new DockPanel();
Content = dock;
// Создаем скролл-бар для движения камеры
ScrollBar scroll = new ScrollBar();
scroll.Orientation = Orientation.Horizontal;
scroll.Value = -2;
scroll.Minimum = -2;
scroll.Maximum = 2;
scroll.ValueChanged += ScrollBarOnValueChanged;
dock.Children.Add(scroll);
DockPanel.SetDock(scroll, Dock.Bottom);
// Создаем Viewport3D для трехмерной сцена
Viewport3D viewport = new Viewport3D();
dock.Children.Add(viewport);
// Задаем MeshGeometry3D.
MeshGeometry3D mesh = new MeshGeometry3D();
mesh.Positions.Add(new Point3D(0, 0, 0));
mesh.Positions.Add(new Point3D(0, 1, -1));
mesh.Positions.Add(new Point3D(0, 0, -2));
mesh.TriangleIndices = new Int32Collection(new int[] { 0, 1, 2 });
// Задаем GeometryModel3D.
GeometryModel3D geomod = new GeometryModel3D();
geomod.Geometry = mesh;
geomod.Material = new DiffuseMaterial(Brushes.Blue);
geomod.BackMaterial = new DiffuseMaterial(Brushes.Red);
// Создаем ModelVisual3D для GeometryModel3D.
ModelVisual3D modvis = new ModelVisual3D();
modvis.Content = geomod;
viewport.Children.Add(modvis);
// Создаем другую ModelVisual3D для света
modvis = new ModelVisual3D();
modvis.Content = new AmbientLight(Colors.White);
viewport.Children.Add(modvis);
// Создаем камеру
cam = new PerspectiveCamera(new Point3D(-2, 0, 5),
new Vector3D(0, 0, -1), new Vector3D(0, 1, 0), 45);
viewport.Camera = cam;
}
void ScrollBarOnValueChanged(object sender,
RoutedPropertyChangedEventArgs<double> args)
{
cam.Position = new Point3D(args.NewValue, 0, 5);
}
}
}
Получаем следующий результат:
Создаем проект practice_5_3.
В окне MainPage.xaml наберите следующий код:
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
WindowTitle="Два треугольника образуют квадрат"
Title="Два треугольника">
<Viewport3D>
<ModelVisual3D>
<ModelVisual3D.Content>
<Model3DGroup>
<GeometryModel3D>
<GeometryModel3D.Geometry>
<MeshGeometry3D
Positions="0 1 0, 0 0 0, 1 1 0, 1 0 0"
TriangleIndices="0 1 2, 1 3 2" />
</GeometryModel3D.Geometry>
<GeometryModel3D.Material>
<DiffuseMaterial Brush="Blue" />
</GeometryModel3D.Material>
<GeometryModel3D.BackMaterial>
<DiffuseMaterial Brush="Red" />
</GeometryModel3D.BackMaterial>
</GeometryModel3D>
<!-- Источники света -->
<AmbientLight Color="#404040" />
<DirectionalLight Color="#C0C0C0" Direction="0 0 -3.5" />
</Model3DGroup>
</ModelVisual3D.Content>
</ModelVisual3D>
<!-- Камера -->
<Viewport3D.Camera>
<PerspectiveCamera Position="0.5 0.5 4"
LookDirection="0 0 -3.5"
UpDirection="1 0 0"
FieldOfView="60" />
</Viewport3D.Camera>
</Viewport3D>
</Page>
Перейдите в окно MainPage.xaml.cs и документрируем строчку InitializeComponent();:
Получаем следующий результат:
Землю моделировали, используя алгоритм V. Miszalok (http://www.miszalok.de/C_00/Index_all_Courses.htm). Спутники изображены в виде додекаэдров (Чарльз Петзольд)
Создаем проект practice_5_4.
Файл earth.bmp нужно поместить в папку c:\temp
В окне MainWindow.xaml наберите следующий код:
<Window x:Class="sphere1.MainWindow" x:Name="window"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Космический сегмент ГЛОНАСС" Width="800" Height="800">
<Window.Resources>
<BitmapImage x:Key="earthImage" UriSource="C:\temp\earth.bmp"/>
<ImageBrush x:Key="earthBrush" ImageSource="{ StaticResource earthImage }"/>
<SolidColorBrush x:Key="solidColorBrush" Color="Red"/>
<DiffuseMaterial x:Key="backMaterial" Brush="{ StaticResource solidColorBrush }"/>
<MeshGeometry3D x:Key="sat"
Positions="1.17082039324994,-0.723606797749979,0 1,-1,-1
1.61803398874989,0,-0.618033988749895 1.17082039324994,-0.723606797749979,0
1.61803398874989,0,-0.618033988749895 1.61803398874989,0,0.618033988749895 1.17082039324994,
-0.723606797749979,0 1.61803398874989,0,0.618033988749895 1,-1,1 1.17082039324994,-0.723606797749979,0 1,-1,1
0.618033988749895,-1.61803398874989,0 1.17082039324994,-0.723606797749979,0 0.618033988749895,
-1.61803398874989,0 1,-1,-1 -1.17082039324994,-0.723606797749979,0 -1,-1,1 -1.61803398874989,0,0.618033988749895
-1.17082039324994,-0.723606797749979,0 -1.61803398874989,0,0.618033988749895 -1.61803398874989,0,-0.618033988749895
-1.17082039324994,-0.723606797749979,0 -1.61803398874989,0,-0.618033988749895 -1,-1,-1 -1.17082039324994,
-0.723606797749979,0 -1,-1,-1 -0.618033988749895,-1.61803398874989,0 -1.17082039324994,-0.723606797749979,0
-0.618033988749895,-1.61803398874989,0 -1,-1,1 -1.17082039324994,0.723606797749979,0 -1,1,-1 -1.61803398874989,0,
-0.618033988749895 -1.17082039324994,0.723606797749979,0 -1.61803398874989,0,-0.618033988749895 -1.61803398874989,0,
0.618033988749895 -1.17082039324994,0.723606797749979,0 -1.61803398874989,0,0.618033988749895 -1,1,1 -1.17082039324994,
0.723606797749979,0 -1,1,1 -0.618033988749895,1.61803398874989,0 -1.17082039324994,0.723606797749979,0
-0.618033988749895,1.61803398874989,0 -1,1,-1 1.17082039324994,0.723606797749979,0 1,1,1 1.61803398874989,0,
0.618033988749895 1.17082039324994,0.723606797749979,0 1.61803398874989,0,0.618033988749895 1.61803398874989,0,
-0.618033988749895 1.17082039324994,0.723606797749979,0 1.61803398874989,0,-0.618033988749895 1,1,-1 1.17082039324994,
0.723606797749979,0 1,1,-1 0.618033988749895,1.61803398874989,0 1.17082039324994,0.723606797749979,0 0.618033988749895,
1.61803398874989,0 1,1,1 -0.723606797749979,0,-1.17082039324994 -1,1,-1 0,0.618033988749895,-1.61803398874989
-0.723606797749979,0,-1.17082039324994 0,0.618033988749895,-1.61803398874989 0,-0.618033988749895,-1.61803398874989
-0.723606797749979,0,-1.17082039324994 0,-0.618033988749895,-1.61803398874989 -1,-1,-1 -0.723606797749979,0,
-1.17082039324994 -1,-1,-1 -1.61803398874989,0,-0.618033988749895 -0.723606797749979,0,-1.17082039324994
-1.61803398874989,0,-0.618033988749895 -1,1,-1 -0.723606797749979,0,1.17082039324994 -1,-1,1 0,-0.618033988749895,
1.61803398874989 -0.723606797749979,0,1.17082039324994 0,-0.618033988749895,1.61803398874989 0,0.618033988749895,
1.61803398874989 -0.723606797749979,0,1.17082039324994 0,0.618033988749895,1.61803398874989 -1,1,1
-0.723606797749979,0,1.17082039324994 -1,1,1 -1.61803398874989,0,0.618033988749895 -0.723606797749979,0,
1.17082039324994 -1.61803398874989,0,0.618033988749895 -1,-1,1 0.723606797749979,0,-1.17082039324994 1,-1,-1 0,
-0.618033988749895,-1.61803398874989 0.723606797749979,0,-1.17082039324994 0,-0.618033988749895,-1.61803398874989
0,0.618033988749895,-1.61803398874989 0.723606797749979,0,-1.17082039324994 0,0.618033988749895,-1.61803398874989 1,1,-1
0.723606797749979,0,-1.17082039324994 1,1,-1 1.61803398874989,0,-0.618033988749895 0.723606797749979,0,-1.17082039324994
1.61803398874989,0,-0.618033988749895 1,-1,-1 0.723606797749979,0,1.17082039324994 1,1,1 0,0.618033988749895,
1.61803398874989 0.723606797749979,0,1.17082039324994 0,0.618033988749895,1.61803398874989 0,-0.618033988749895,
1.61803398874989 0.723606797749979,0,1.17082039324994 0,-0.618033988749895,1.61803398874989 1,-1,1
0.723606797749979,0,1.17082039324994 1,-1,1 1.61803398874989,0,0.618033988749895 0.723606797749979,0,1.17082039324994
1.61803398874989,0,0.618033988749895 1,1,1 0,-1.17082039324994,-0.723606797749979 1,-1,-1 0.618033988749895,
-1.61803398874989,0 0,-1.17082039324994,-0.723606797749979 0.618033988749895,-1.61803398874989,0 -0.618033988749895,
-1.61803398874989,0 0,-1.17082039324994,-0.723606797749979 -0.618033988749895,-1.61803398874989,0 -1,-1,-1 0,
-1.17082039324994,-0.723606797749979 -1,-1,-1 0,-0.618033988749895,-1.61803398874989 0,-1.17082039324994,
-0.723606797749979 0,-0.618033988749895,-1.61803398874989 1,-1,-1 0,1.17082039324994,-0.723606797749979 -1,1,-1
-0.618033988749895,1.61803398874989,0 0,1.17082039324994,-0.723606797749979 -0.618033988749895,1.61803398874989,0
0.618033988749895,1.61803398874989,0 0,1.17082039324994,-0.723606797749979 0.618033988749895,1.61803398874989,0 1,1,
-1 0,1.17082039324994,-0.723606797749979 1,1,-1 0,0.618033988749895,-1.61803398874989 0,1.17082039324994,
-0.723606797749979 0,0.618033988749895,-1.61803398874989 -1,1,-1 0,-1.17082039324994,0.723606797749979 -1,-1,1
-0.618033988749895,-1.61803398874989,0 0,-1.17082039324994,0.723606797749979 -0.618033988749895,-1.61803398874989,0
0.618033988749895,-1.61803398874989,0 0,-1.17082039324994,0.723606797749979 0.618033988749895,-1.61803398874989,0 1,-1,1
0,-1.17082039324994,0.723606797749979 1,-1,1 0,-0.618033988749895,1.61803398874989 0,-1.17082039324994,0.723606797749979
0,-0.618033988749895,1.61803398874989 -1,-1,1 0,1.17082039324994,0.723606797749979 1,1,1 0.618033988749895,
1.61803398874989,0 0,1.17082039324994,0.723606797749979 0.618033988749895,1.61803398874989,0 -0.618033988749895,
1.61803398874989,0 0,1.17082039324994,0.723606797749979 -0.618033988749895,1.61803398874989,0 -1,1,1 0,1.17082039324994,
0.723606797749979 -1,1,1 0,0.618033988749895,1.61803398874989 0,1.17082039324994,0.723606797749979 0,0.618033988749895,
1.61803398874989 1,1,1"
Normals="-0.894427190999916,0.552786404500042,8.32667268468867E-17 -0.894427190999916,0.552786404500042,
8.32667268468867E-17 -0.894427190999916,0.552786404500042,8.32667268468867E-17 -0.894427190999916,0.552786404500042,
8.32667268468867E-17 -0.894427190999916,0.552786404500042,8.32667268468867E-17 -0.894427190999916,0.552786404500042,
8.32667268468867E-17 -0.894427190999916,0.552786404500042,8.32667268468867E-17 -0.894427190999916,0.552786404500042,
8.32667268468867E-17 -0.894427190999916,0.552786404500042,8.32667268468867E-17 -0.894427190999916,0.552786404500042,
8.32667268468867E-17 -0.894427190999916,0.552786404500042,8.32667268468867E-17 -0.894427190999916,0.552786404500042,
8.32667268468867E-17 -0.894427190999916,0.552786404500042,8.32667268468867E-17 -0.894427190999916,0.552786404500042,
8.32667268468867E-17 -0.894427190999916,0.552786404500042,8.32667268468867E-17 0.894427190999916,0.552786404500042,
-8.32667268468867E-17 0.894427190999916,0.552786404500042,-8.32667268468867E-17 0.894427190999916,0.552786404500042,
-8.32667268468867E-17 0.894427190999916,0.552786404500042,-8.32667268468867E-17 0.894427190999916,0.552786404500042,
-8.32667268468867E-17 0.894427190999916,0.552786404500042,-8.32667268468867E-17 0.894427190999916,0.552786404500042,
-8.32667268468867E-17 0.894427190999916,0.552786404500042,-8.32667268468867E-17 0.894427190999916,0.552786404500042,
-8.32667268468867E-17 0.894427190999916,0.552786404500042,-8.32667268468867E-17 0.894427190999916,0.552786404500042,
-8.32667268468867E-17 0.894427190999916,0.552786404500042,-8.32667268468867E-17 0.894427190999916,0.552786404500042,
-8.32667268468867E-17 0.894427190999916,0.552786404500042,-8.32667268468867E-17 0.894427190999916,0.552786404500042,
-8.32667268468867E-17 0.894427190999916,-0.552786404500042,8.32667268468867E-17 0.894427190999916,-0.552786404500042,
8.32667268468867E-17 0.894427190999916,-0.552786404500042,8.32667268468867E-17 0.894427190999916,-0.552786404500042,
8.32667268468867E-17 0.894427190999916,-0.552786404500042,8.32667268468867E-17 0.894427190999916,-0.552786404500042,
8.32667268468867E-17 0.894427190999916,-0.552786404500042,8.32667268468867E-17 0.894427190999916,-0.552786404500042,
8.32667268468867E-17 0.894427190999916,-0.552786404500042,8.32667268468867E-17 0.894427190999916,-0.552786404500042,
8.32667268468867E-17 0.894427190999916,-0.552786404500042,8.32667268468867E-17 0.894427190999916,-0.552786404500042,
8.32667268468867E-17 0.894427190999916,-0.552786404500042,8.32667268468867E-17 0.894427190999916,-0.552786404500042,
8.32667268468867E-17 0.894427190999916,-0.552786404500042,8.32667268468867E-17 -0.894427190999916,-0.552786404500042,
-8.32667268468867E-17 -0.894427190999916,-0.552786404500042,-8.32667268468867E-17 -0.894427190999916,-0.552786404500042,
-8.32667268468867E-17 -0.894427190999916,-0.552786404500042,-8.32667268468867E-17 -0.894427190999916,-0.552786404500042,
-8.32667268468867E-17 -0.894427190999916,-0.552786404500042,-8.32667268468867E-17 -0.894427190999916,-0.552786404500042,
-8.32667268468867E-17 -0.894427190999916,-0.552786404500042,-8.32667268468867E-17 -0.894427190999916,-0.552786404500042,
-8.32667268468867E-17 -0.894427190999916,-0.552786404500042,-8.32667268468867E-17 -0.894427190999916,-0.552786404500042,
-8.32667268468867E-17 -0.894427190999916,-0.552786404500042,-8.32667268468867E-17 -0.894427190999916,-0.552786404500042,
-8.32667268468867E-17 -0.894427190999916,-0.552786404500042,-8.32667268468867E-17 -0.894427190999916,-0.552786404500042,
-8.32667268468867E-17 0.552786404500042,-8.32667268468867E-17,0.894427190999916 0.552786404500042,-8.32667268468867E-17,
0.894427190999916 0.552786404500042,-8.32667268468867E-17,0.894427190999916 0.552786404500042,-8.32667268468867E-17,
0.894427190999916 0.552786404500042,-8.32667268468867E-17,0.894427190999916 0.552786404500042,-8.32667268468867E-17,
0.894427190999916 0.552786404500042,-8.32667268468867E-17,0.894427190999916 0.552786404500042,-8.32667268468867E-17,
0.894427190999916 0.552786404500042,-8.32667268468867E-17,0.894427190999916 0.552786404500042,-8.32667268468867E-17,
0.894427190999916 0.552786404500042,-8.32667268468867E-17,0.894427190999916 0.552786404500042,-8.32667268468867E-17,
0.894427190999916 0.552786404500042,-8.32667268468867E-17,0.894427190999916 0.552786404500042,-8.32667268468867E-17,
0.894427190999916 0.552786404500042,-8.32667268468867E-17,0.894427190999916 0.552786404500042,8.32667268468867E-17,
-0.894427190999916 0.552786404500042,8.32667268468867E-17,-0.894427190999916 0.552786404500042,8.32667268468867E-17,
-0.894427190999916 0.552786404500042,8.32667268468867E-17,-0.894427190999916 0.552786404500042,8.32667268468867E-17,
-0.894427190999916 0.552786404500042,8.32667268468867E-17,-0.894427190999916 0.552786404500042,8.32667268468867E-17,
-0.894427190999916 0.552786404500042,8.32667268468867E-17,-0.894427190999916 0.552786404500042,8.32667268468867E-17,
-0.894427190999916 0.552786404500042,8.32667268468867E-17,-0.894427190999916 0.552786404500042,8.32667268468867E-17,
-0.894427190999916 0.552786404500042,8.32667268468867E-17,-0.894427190999916 0.552786404500042,8.32667268468867E-17,
-0.894427190999916 0.552786404500042,8.32667268468867E-17,-0.894427190999916 0.552786404500042,8.32667268468867E-17,
-0.894427190999916 -0.552786404500042,8.32667268468867E-17,0.894427190999916 -0.552786404500042,8.32667268468867E-17,
0.894427190999916 -0.552786404500042,8.32667268468867E-17,0.894427190999916 -0.552786404500042,8.32667268468867E-17,
0.894427190999916 -0.552786404500042,8.32667268468867E-17,0.894427190999916 -0.552786404500042,8.32667268468867E-17,
0.894427190999916 -0.552786404500042,8.32667268468867E-17,0.894427190999916 -0.552786404500042,8.32667268468867E-17,
0.894427190999916 -0.552786404500042,8.32667268468867E-17,0.894427190999916 -0.552786404500042,8.32667268468867E-17,
0.894427190999916 -0.552786404500042,8.32667268468867E-17,0.894427190999916 -0.552786404500042,8.32667268468867E-17,
0.894427190999916 -0.552786404500042,8.32667268468867E-17,0.894427190999916 -0.552786404500042,8.32667268468867E-17,
0.894427190999916 -0.552786404500042,8.32667268468867E-17,0.894427190999916 -0.552786404500042,-8.32667268468867E-17,
-0.894427190999916 -0.552786404500042,-8.32667268468867E-17,-0.894427190999916 -0.552786404500042,-8.32667268468867E-17,
-0.894427190999916 -0.552786404500042,-8.32667268468867E-17,-0.894427190999916 -0.552786404500042,-8.32667268468867E-17,
-0.894427190999916 -0.552786404500042,-8.32667268468867E-17,-0.894427190999916 -0.552786404500042,-8.32667268468867E-17,
-0.894427190999916 -0.552786404500042,-8.32667268468867E-17,-0.894427190999916 -0.552786404500042,-8.32667268468867E-17,
-0.894427190999916 -0.552786404500042,-8.32667268468867E-17,-0.894427190999916 -0.552786404500042,-8.32667268468867E-17,
-0.894427190999916 -0.552786404500042,-8.32667268468867E-17,-0.894427190999916 -0.552786404500042,-8.32667268468867E-17,
-0.894427190999916 -0.552786404500042,-8.32667268468867E-17,-0.894427190999916 -0.552786404500042,-8.32667268468867E-17,
-0.894427190999916 -8.32667268468867E-17,0.894427190999916,0.552786404500042 -8.32667268468867E-17,0.894427190999916,
0.552786404500042 -8.32667268468867E-17,0.894427190999916,0.552786404500042 -8.32667268468867E-17,0.894427190999916,
0.552786404500042 -8.32667268468867E-17,0.894427190999916,0.552786404500042 -8.32667268468867E-17,0.894427190999916,
0.552786404500042 -8.32667268468867E-17,0.894427190999916,0.552786404500042 -8.32667268468867E-17,0.894427190999916,
0.552786404500042 -8.32667268468867E-17,0.894427190999916,0.552786404500042 -8.32667268468867E-17,0.894427190999916,
0.552786404500042 -8.32667268468867E-17,0.894427190999916,0.552786404500042 -8.32667268468867E-17,0.894427190999916,
0.552786404500042 -8.32667268468867E-17,0.894427190999916,0.552786404500042 -8.32667268468867E-17,0.894427190999916,
0.552786404500042 -8.32667268468867E-17,0.894427190999916,0.552786404500042 8.32667268468867E-17,-0.894427190999916,
0.552786404500042 8.32667268468867E-17,-0.894427190999916,0.552786404500042 8.32667268468867E-17,-0.894427190999916,
0.552786404500042 8.32667268468867E-17,-0.894427190999916,0.552786404500042 8.32667268468867E-17,-0.894427190999916,
0.552786404500042 8.32667268468867E-17,-0.894427190999916,0.552786404500042 8.32667268468867E-17,-0.894427190999916,
0.552786404500042 8.32667268468867E-17,-0.894427190999916,0.552786404500042 8.32667268468867E-17,-0.894427190999916,
0.552786404500042 8.32667268468867E-17,-0.894427190999916,0.552786404500042 8.32667268468867E-17,-0.894427190999916,
0.552786404500042 8.32667268468867E-17,-0.894427190999916,0.552786404500042 8.32667268468867E-17,-0.894427190999916,
0.552786404500042 8.32667268468867E-17,-0.894427190999916,0.552786404500042 8.32667268468867E-17,-0.894427190999916,
0.552786404500042 8.32667268468867E-17,0.894427190999916,-0.552786404500042 8.32667268468867E-17,0.894427190999916,
-0.552786404500042 8.32667268468867E-17,0.894427190999916,-0.552786404500042 8.32667268468867E-17,0.894427190999916,
-0.552786404500042 8.32667268468867E-17,0.894427190999916,-0.552786404500042 8.32667268468867E-17,0.894427190999916,
-0.552786404500042 8.32667268468867E-17,0.894427190999916,-0.552786404500042 8.32667268468867E-17,0.894427190999916,
-0.552786404500042 8.32667268468867E-17,0.894427190999916,-0.552786404500042 8.32667268468867E-17,0.894427190999916,
-0.552786404500042 8.32667268468867E-17,0.894427190999916,-0.552786404500042 8.32667268468867E-17,0.894427190999916,
-0.552786404500042 8.32667268468867E-17,0.894427190999916,-0.552786404500042 8.32667268468867E-17,0.894427190999916,
-0.552786404500042 8.32667268468867E-17,0.894427190999916,-0.552786404500042 -8.32667268468867E-17,-0.894427190999916,
-0.552786404500042 -8.32667268468867E-17,-0.894427190999916,-0.552786404500042 -8.32667268468867E-17,-0.894427190999916,
-0.552786404500042 -8.32667268468867E-17,-0.894427190999916,-0.552786404500042 -8.32667268468867E-17,-0.894427190999916,
-0.552786404500042 -8.32667268468867E-17,-0.894427190999916,-0.552786404500042 -8.32667268468867E-17,-0.894427190999916,
-0.552786404500042 -8.32667268468867E-17,-0.894427190999916,-0.552786404500042 -8.32667268468867E-17,-0.894427190999916,
-0.552786404500042 -8.32667268468867E-17,-0.894427190999916,-0.552786404500042 -8.32667268468867E-17,-0.894427190999916,
-0.552786404500042 -8.32667268468867E-17,-0.894427190999916,-0.552786404500042 -8.32667268468867E-17,-0.894427190999916,
-0.552786404500042 -8.32667268468867E-17,-0.894427190999916,-0.552786404500042 -8.32667268468867E-17,-0.894427190999916,
-0.552786404500042"
TextureCoordinates="0.5,0.5 0.5,0 1,0.4 0.5,0.5 1,0.4 0.85,1 0.5,0.5 0.85,1 0.15,1 0.5,0.5 0.15,1 0,0.4 0.5,0.5
0,0.4 0.5,0 0.5,0.5 0.5,0 1,0.4 0.5,0.5 1,0.4 0.85,1 0.5,0.5 0.85,1 0.15,1 0.5,0.5 0.15,1 0,0.4 0.5,0.5 0,0.4 0.5,0
0.5,0.5 0.5,0 1,0.4 0.5,0.5 1,0.4 0.85,1 0.5,0.5 0.85,1 0.15,1 0.5,0.5 0.15,1 0,0.4 0.5,0.5 0,0.4 0.5,0 0.5,0.5 0.5,0
1,0.4 0.5,0.5 1,0.4 0.85,1 0.5,0.5 0.85,1 0.15,1 0.5,0.5 0.15,1 0,0.4 0.5,0.5 0,0.4 0.5,0 0.5,0.5 0.5,0 1,0.4 0.5,0.5
1,0.4 0.85,1 0.5,0.5 0.85,1 0.15,1 0.5,0.5 0.15,1 0,0.4 0.5,0.5 0,0.4 0.5,0 0.5,0.5 0.5,0 1,0.4 0.5,0.5 1,0.4 0.85,1
0.5,0.5 0.85,1 0.15,1 0.5,0.5 0.15,1 0,0.4 0.5,0.5 0,0.4 0.5,0 0.5,0.5 0.5,0 1,0.4 0.5,0.5 1,0.4 0.85,1 0.5,0.5 0.85,1
0.15,1 0.5,0.5 0.15,1 0,0.4 0.5,0.5 0,0.4 0.5,0 0.5,0.5 0.5,0 1,0.4 0.5,0.5 1,0.4 0.85,1 0.5,0.5 0.85,1 0.15,1 0.5,0.5
0.15,1 0,0.4 0.5,0.5 0,0.4 0.5,0 0.5,0.5 0.5,0 1,0.4 0.5,0.5 1,0.4 0.85,1 0.5,0.5 0.85,1 0.15,1 0.5,0.5 0.15,1 0,0.4
0.5,0.5 0,0.4 0.5,0 0.5,0.5 0.5,0 1,0.4 0.5,0.5 1,0.4 0.85,1 0.5,0.5 0.85,1 0.15,1 0.5,0.5 0.15,1 0,0.4 0.5,0.5 0,0.4
0.5,0 0.5,0.5 0.5,0 1,0.4 0.5,0.5 1,0.4 0.85,1 0.5,0.5 0.85,1 0.15,1 0.5,0.5 0.15,1 0,0.4 0.5,0.5 0,0.4 0.5,0 0.5,0.5
0.5,0 1,0.4 0.5,0.5 1,0.4 0.85,1 0.5,0.5 0.85,1 0.15,1 0.5,0.5 0.15,1 0,0.4 0.5,0.5 0,0.4 0.5,0"
TriangleIndices="0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171
172 173 174 175 176 177 178 179" />
</Window.Resources>
<StackPanel >
<!--Viewport3D is a drawing canvas which resizes its Content automatically-->
<Viewport3D x:Name="viewport">
<Viewport3D.Camera>
<PerspectiveCamera Position="-1 2 10" LookDirection="1 -2 -10" UpDirection="0 1 0" FieldOfView="30" />
</Viewport3D.Camera>
<!--Any 3D-content must be packed in a ModelVisual3D-object-->
<ModelVisual3D>
<ModelVisual3D.Content>
<!--Only one Content is allowed. Thus we use a Model3DGroup as envelope for our two lights
and all further GeometryModel3Ds.-->
<Model3DGroup x:Name="model3DGroup">
<AmbientLight Color="#444444"/>
<DirectionalLight x:Name="directionalLight" Color="#ffffff" Direction="-1 -1 -1" />
<!--A lot of GeometryModel3Ds will be inserted here.-->
<!--Первая орбита -->
<!-- Первый спутник -->
<GeometryModel3D Geometry="{StaticResource sat}">
<GeometryModel3D.Material>
<DiffuseMaterial Brush="Cyan" />
</GeometryModel3D.Material>
<GeometryModel3D.BackMaterial>
<DiffuseMaterial Brush="Red" />
</GeometryModel3D.BackMaterial>
<GeometryModel3D.Transform>
<Transform3DGroup>
<TranslateTransform3D OffsetX="45" OffsetY="0" OffsetZ="0" />
<ScaleTransform3D ScaleX="0.05" ScaleY="0.05" ScaleZ="0.05"/>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" x:Name="rotate1" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<!--Наклонение орбиты 64,8 градуса -->
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="1 0 0" Angle="-64.8" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
</Transform3DGroup>
</GeometryModel3D.Transform>
</GeometryModel3D>
<!-- 2-й спутник -->
<GeometryModel3D Geometry="{StaticResource sat}">
<GeometryModel3D.Material>
<DiffuseMaterial Brush="Cyan" />
</GeometryModel3D.Material>
<GeometryModel3D.BackMaterial>
<DiffuseMaterial Brush="Red" />
</GeometryModel3D.BackMaterial>
<GeometryModel3D.Transform>
<Transform3DGroup>
<TranslateTransform3D OffsetX="45" OffsetY="0" OffsetZ="0" />
<ScaleTransform3D ScaleX="0.05" ScaleY="0.05" ScaleZ="0.05"/>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" Angle="45" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" x:Name="rotate2" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<!--Наклонение орбиты 64,8 градуса -->
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="1 0 0" Angle="-64.8" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
</Transform3DGroup>
</GeometryModel3D.Transform>
</GeometryModel3D>
<!-- 3-й спутник -->
<GeometryModel3D Geometry="{StaticResource sat}">
<GeometryModel3D.Material>
<DiffuseMaterial Brush="Cyan" />
</GeometryModel3D.Material>
<GeometryModel3D.BackMaterial>
<DiffuseMaterial Brush="Red" />
</GeometryModel3D.BackMaterial>
<GeometryModel3D.Transform>
<Transform3DGroup>
<TranslateTransform3D OffsetX="45" OffsetY="0" OffsetZ="0" />
<ScaleTransform3D ScaleX="0.05" ScaleY="0.05" ScaleZ="0.05"/>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" Angle="90" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" x:Name="rotate3" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<!--Наклонение орбиты 64,8 градуса -->
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="1 0 0" Angle="-64.8" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
</Transform3DGroup>
</GeometryModel3D.Transform>
</GeometryModel3D>
<!-- 4-й спутник -->
<GeometryModel3D Geometry="{StaticResource sat}">
<GeometryModel3D.Material>
<DiffuseMaterial Brush="Cyan" />
</GeometryModel3D.Material>
<GeometryModel3D.BackMaterial>
<DiffuseMaterial Brush="Red" />
</GeometryModel3D.BackMaterial>
<GeometryModel3D.Transform>
<Transform3DGroup>
<TranslateTransform3D OffsetX="45" OffsetY="0" OffsetZ="0" />
<ScaleTransform3D ScaleX="0.05" ScaleY="0.05" ScaleZ="0.05"/>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" Angle="135" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" x:Name="rotate4" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<!--Наклонение орбиты 64,8 градуса -->
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="1 0 0" Angle="-64.8" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
</Transform3DGroup>
</GeometryModel3D.Transform>
</GeometryModel3D>
<!-- 5-й спутник -->
<GeometryModel3D Geometry="{StaticResource sat}">
<GeometryModel3D.Material>
<DiffuseMaterial Brush="Cyan" />
</GeometryModel3D.Material>
<GeometryModel3D.BackMaterial>
<DiffuseMaterial Brush="Red" />
</GeometryModel3D.BackMaterial>
<GeometryModel3D.Transform>
<Transform3DGroup>
<TranslateTransform3D OffsetX="45" OffsetY="0" OffsetZ="0" />
<ScaleTransform3D ScaleX="0.05" ScaleY="0.05" ScaleZ="0.05"/>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" Angle="180" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" x:Name="rotate5" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<!--Наклонение орбиты 64,8 градуса -->
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="1 0 0" Angle="-64.8" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
</Transform3DGroup>
</GeometryModel3D.Transform>
</GeometryModel3D>
<!-- 6-й спутник -->
<GeometryModel3D Geometry="{StaticResource sat}">
<GeometryModel3D.Material>
<DiffuseMaterial Brush="Cyan" />
</GeometryModel3D.Material>
<GeometryModel3D.BackMaterial>
<DiffuseMaterial Brush="Red" />
</GeometryModel3D.BackMaterial>
<GeometryModel3D.Transform>
<Transform3DGroup>
<TranslateTransform3D OffsetX="45" OffsetY="0" OffsetZ="0" />
<ScaleTransform3D ScaleX="0.05" ScaleY="0.05" ScaleZ="0.05"/>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" Angle="225" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" x:Name="rotate6" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<!--Наклонение орбиты 64,8 градуса -->
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="1 0 0" Angle="-64.8" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
</Transform3DGroup>
</GeometryModel3D.Transform>
</GeometryModel3D>
<!-- 7-й спутник -->
<GeometryModel3D Geometry="{StaticResource sat}">
<GeometryModel3D.Material>
<DiffuseMaterial Brush="Cyan" />
</GeometryModel3D.Material>
<GeometryModel3D.BackMaterial>
<DiffuseMaterial Brush="Red" />
</GeometryModel3D.BackMaterial>
<GeometryModel3D.Transform>
<Transform3DGroup>
<TranslateTransform3D OffsetX="45" OffsetY="0" OffsetZ="0" />
<ScaleTransform3D ScaleX="0.05" ScaleY="0.05" ScaleZ="0.05"/>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" Angle="270" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" x:Name="rotate7" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<!--Наклонение орбиты 64,8 градуса -->
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="1 0 0" Angle="-64.8" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
</Transform3DGroup>
</GeometryModel3D.Transform>
</GeometryModel3D>
<!-- 8-й спутник -->
<GeometryModel3D Geometry="{StaticResource sat}">
<GeometryModel3D.Material>
<DiffuseMaterial Brush="Cyan" />
</GeometryModel3D.Material>
<GeometryModel3D.BackMaterial>
<DiffuseMaterial Brush="Red" />
</GeometryModel3D.BackMaterial>
<GeometryModel3D.Transform>
<Transform3DGroup>
<TranslateTransform3D OffsetX="45" OffsetY="0" OffsetZ="0" />
<ScaleTransform3D ScaleX="0.05" ScaleY="0.05" ScaleZ="0.05"/>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" Angle="315" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" x:Name="rotate8" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<!--Наклонение орбиты 64,8 градуса -->
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="1 0 0" Angle="-64.8" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
</Transform3DGroup>
</GeometryModel3D.Transform>
</GeometryModel3D>
<!--Вторая орбита -->
<!--Первый спутник -->
<!-- 1-й спутник -->
<GeometryModel3D Geometry="{StaticResource sat}">
<GeometryModel3D.Material>
<DiffuseMaterial Brush="Brown" />
</GeometryModel3D.Material>
<GeometryModel3D.BackMaterial>
<DiffuseMaterial Brush="Red" />
</GeometryModel3D.BackMaterial>
<GeometryModel3D.Transform>
<Transform3DGroup>
<TranslateTransform3D OffsetX="45" OffsetY="0" OffsetZ="0" />
<ScaleTransform3D ScaleX="0.05" ScaleY="0.05" ScaleZ="0.05"/>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" Angle="15" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" x:Name="rotate9" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 1 0" Angle="120" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<!--Наклонение орбиты 64,8 градуса -->
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="1 0 0" Angle="-64.8" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
</Transform3DGroup>
</GeometryModel3D.Transform>
</GeometryModel3D>
<!-- 2-й спутник -->
<GeometryModel3D Geometry="{StaticResource sat}">
<GeometryModel3D.Material>
<DiffuseMaterial Brush="Brown" />
</GeometryModel3D.Material>
<GeometryModel3D.BackMaterial>
<DiffuseMaterial Brush="Red" />
</GeometryModel3D.BackMaterial>
<GeometryModel3D.Transform>
<Transform3DGroup>
<TranslateTransform3D OffsetX="45" OffsetY="0" OffsetZ="0" />
<ScaleTransform3D ScaleX="0.05" ScaleY="0.05" ScaleZ="0.05"/>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" Angle="60" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" x:Name="rotate10" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 1 0" Angle="120" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<!--Наклонение орбиты 64,8 градуса -->
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="1 0 0" Angle="-64.8" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
</Transform3DGroup>
</GeometryModel3D.Transform>
</GeometryModel3D>
<!-- 3-й спутник -->
<GeometryModel3D Geometry="{StaticResource sat}">
<GeometryModel3D.Material>
<DiffuseMaterial Brush="Brown" />
</GeometryModel3D.Material>
<GeometryModel3D.BackMaterial>
<DiffuseMaterial Brush="Red" />
</GeometryModel3D.BackMaterial>
<GeometryModel3D.Transform>
<Transform3DGroup>
<TranslateTransform3D OffsetX="45" OffsetY="0" OffsetZ="0" />
<ScaleTransform3D ScaleX="0.05" ScaleY="0.05" ScaleZ="0.05"/>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" Angle="105" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" x:Name="rotate11" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 1 0" Angle="120" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<!--Наклонение орбиты 64,8 градуса -->
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="1 0 0" Angle="-64.8" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
</Transform3DGroup>
</GeometryModel3D.Transform>
</GeometryModel3D>
<!-- 4-й спутник -->
<GeometryModel3D Geometry="{StaticResource sat}">
<GeometryModel3D.Material>
<DiffuseMaterial Brush="Brown" />
</GeometryModel3D.Material>
<GeometryModel3D.BackMaterial>
<DiffuseMaterial Brush="Red" />
</GeometryModel3D.BackMaterial>
<GeometryModel3D.Transform>
<Transform3DGroup>
<TranslateTransform3D OffsetX="45" OffsetY="0" OffsetZ="0" />
<ScaleTransform3D ScaleX="0.05" ScaleY="0.05" ScaleZ="0.05"/>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" Angle="150" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" x:Name="rotate12" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 1 0" Angle="120" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<!--Наклонение орбиты 64,8 градуса -->
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="1 0 0" Angle="-64.8" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
</Transform3DGroup>
</GeometryModel3D.Transform>
</GeometryModel3D>
<!-- 5-й спутник -->
<GeometryModel3D Geometry="{StaticResource sat}">
<GeometryModel3D.Material>
<DiffuseMaterial Brush="Brown" />
</GeometryModel3D.Material>
<GeometryModel3D.BackMaterial>
<DiffuseMaterial Brush="Red" />
</GeometryModel3D.BackMaterial>
<GeometryModel3D.Transform>
<Transform3DGroup>
<TranslateTransform3D OffsetX="45" OffsetY="0" OffsetZ="0" />
<ScaleTransform3D ScaleX="0.05" ScaleY="0.05" ScaleZ="0.05"/>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" Angle="195" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" x:Name="rotate13" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 1 0" Angle="120" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<!--Наклонение орбиты 64,8 градуса -->
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="1 0 0" Angle="-64.8" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
</Transform3DGroup>
</GeometryModel3D.Transform>
</GeometryModel3D>
<!-- 6-й спутник -->
<GeometryModel3D Geometry="{StaticResource sat}">
<GeometryModel3D.Material>
<DiffuseMaterial Brush="Brown" />
</GeometryModel3D.Material>
<GeometryModel3D.BackMaterial>
<DiffuseMaterial Brush="Red" />
</GeometryModel3D.BackMaterial>
<GeometryModel3D.Transform>
<Transform3DGroup>
<TranslateTransform3D OffsetX="45" OffsetY="0" OffsetZ="0" />
<ScaleTransform3D ScaleX="0.05" ScaleY="0.05" ScaleZ="0.05"/>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" Angle="240" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" x:Name="rotate14" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 1 0" Angle="120" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<!--Наклонение орбиты 64,8 градуса -->
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="1 0 0" Angle="-64.8" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
</Transform3DGroup>
</GeometryModel3D.Transform>
</GeometryModel3D>
<!-- 7-й спутник -->
<GeometryModel3D Geometry="{StaticResource sat}">
<GeometryModel3D.Material>
<DiffuseMaterial Brush="Brown" />
</GeometryModel3D.Material>
<GeometryModel3D.BackMaterial>
<DiffuseMaterial Brush="Red" />
</GeometryModel3D.BackMaterial>
<GeometryModel3D.Transform>
<Transform3DGroup>
<TranslateTransform3D OffsetX="45" OffsetY="0" OffsetZ="0" />
<ScaleTransform3D ScaleX="0.05" ScaleY="0.05" ScaleZ="0.05"/>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" Angle="285" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" x:Name="rotate15" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 1 0" Angle="120" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<!--Наклонение орбиты 64,8 градуса -->
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="1 0 0" Angle="-64.8" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
</Transform3DGroup>
</GeometryModel3D.Transform>
</GeometryModel3D>
<!-- 8-й спутник -->
<GeometryModel3D Geometry="{StaticResource sat}">
<GeometryModel3D.Material>
<DiffuseMaterial Brush="Brown" />
</GeometryModel3D.Material>
<GeometryModel3D.BackMaterial>
<DiffuseMaterial Brush="Red" />
</GeometryModel3D.BackMaterial>
<GeometryModel3D.Transform>
<Transform3DGroup>
<TranslateTransform3D OffsetX="45" OffsetY="0" OffsetZ="0" />
<ScaleTransform3D ScaleX="0.05" ScaleY="0.05" ScaleZ="0.05"/>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" Angle="330" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" x:Name="rotate16" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<!--Сдвиг по долготе 120 градусов относительно первой плоскости-->
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 1 0" Angle="120" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<!--Наклонение орбиты 64,8 градуса -->
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="1 0 0" Angle="-64.8" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
</Transform3DGroup>
</GeometryModel3D.Transform>
</GeometryModel3D>
<!--Третья орбита -->
<!--Первый спутник -->
<!-- 1-й спутник -->
<GeometryModel3D Geometry="{StaticResource sat}">
<GeometryModel3D.Material>
<DiffuseMaterial Brush="Green" />
</GeometryModel3D.Material>
<GeometryModel3D.BackMaterial>
<DiffuseMaterial Brush="Red" />
</GeometryModel3D.BackMaterial>
<GeometryModel3D.Transform>
<Transform3DGroup>
<TranslateTransform3D OffsetX="45" OffsetY="0" OffsetZ="0" />
<ScaleTransform3D ScaleX="0.05" ScaleY="0.05" ScaleZ="0.05"/>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" Angle="30" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" x:Name="rotate17" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 1 0" Angle="240" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<!--Наклонение орбиты 64,8 градуса -->
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="1 0 0" Angle="-64.8" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
</Transform3DGroup>
</GeometryModel3D.Transform>
</GeometryModel3D>
<!-- 2-й спутник -->
<GeometryModel3D Geometry="{StaticResource sat}">
<GeometryModel3D.Material>
<DiffuseMaterial Brush="Green" />
</GeometryModel3D.Material>
<GeometryModel3D.BackMaterial>
<DiffuseMaterial Brush="Red" />
</GeometryModel3D.BackMaterial>
<GeometryModel3D.Transform>
<Transform3DGroup>
<TranslateTransform3D OffsetX="45" OffsetY="0" OffsetZ="0" />
<ScaleTransform3D ScaleX="0.05" ScaleY="0.05" ScaleZ="0.05"/>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" Angle="75" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" x:Name="rotate18" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 1 0" Angle="240" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<!--Наклонение орбиты 64,8 градуса -->
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="1 0 0" Angle="-64.8" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
</Transform3DGroup>
</GeometryModel3D.Transform>
</GeometryModel3D>
<!-- 3-й спутник -->
<GeometryModel3D Geometry="{StaticResource sat}">
<GeometryModel3D.Material>
<DiffuseMaterial Brush="Green" />
</GeometryModel3D.Material>
<GeometryModel3D.BackMaterial>
<DiffuseMaterial Brush="Red" />
</GeometryModel3D.BackMaterial>
<GeometryModel3D.Transform>
<Transform3DGroup>
<TranslateTransform3D OffsetX="45" OffsetY="0" OffsetZ="0" />
<ScaleTransform3D ScaleX="0.05" ScaleY="0.05" ScaleZ="0.05"/>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" Angle="120" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" x:Name="rotate19" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 1 0" Angle="240" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<!--Наклонение орбиты 64,8 градуса -->
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="1 0 0" Angle="-64.8" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
</Transform3DGroup>
</GeometryModel3D.Transform>
</GeometryModel3D>
<!-- 4-й спутник -->
<GeometryModel3D Geometry="{StaticResource sat}">
<GeometryModel3D.Material>
<DiffuseMaterial Brush="Green" />
</GeometryModel3D.Material>
<GeometryModel3D.BackMaterial>
<DiffuseMaterial Brush="Red" />
</GeometryModel3D.BackMaterial>
<GeometryModel3D.Transform>
<Transform3DGroup>
<TranslateTransform3D OffsetX="45" OffsetY="0" OffsetZ="0" />
<ScaleTransform3D ScaleX="0.05" ScaleY="0.05" ScaleZ="0.05"/>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" Angle="165" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" x:Name="rotate20" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 1 0" Angle="240" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<!--Наклонение орбиты 64,8 градуса -->
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="1 0 0" Angle="-64.8" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
</Transform3DGroup>
</GeometryModel3D.Transform>
</GeometryModel3D>
<!-- 5-й спутник -->
<GeometryModel3D Geometry="{StaticResource sat}">
<GeometryModel3D.Material>
<DiffuseMaterial Brush="Green" />
</GeometryModel3D.Material>
<GeometryModel3D.BackMaterial>
<DiffuseMaterial Brush="Red" />
</GeometryModel3D.BackMaterial>
<GeometryModel3D.Transform>
<Transform3DGroup>
<TranslateTransform3D OffsetX="45" OffsetY="0" OffsetZ="0" />
<ScaleTransform3D ScaleX="0.05" ScaleY="0.05" ScaleZ="0.05"/>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" Angle="210" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" x:Name="rotate21" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 1 0" Angle="240" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<!--Наклонение орбиты 64,8 градуса -->
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="1 0 0" Angle="-64.8" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
</Transform3DGroup>
</GeometryModel3D.Transform>
</GeometryModel3D>
<!-- 6-й спутник -->
<GeometryModel3D Geometry="{StaticResource sat}">
<GeometryModel3D.Material>
<DiffuseMaterial Brush="Green" />
</GeometryModel3D.Material>
<GeometryModel3D.BackMaterial>
<DiffuseMaterial Brush="Red" />
</GeometryModel3D.BackMaterial>
<GeometryModel3D.Transform>
<Transform3DGroup>
<TranslateTransform3D OffsetX="45" OffsetY="0" OffsetZ="0" />
<ScaleTransform3D ScaleX="0.05" ScaleY="0.05" ScaleZ="0.05"/>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" Angle="255" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" x:Name="rotate22" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 1 0" Angle="240" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<!--Наклонение орбиты 64,8 градуса -->
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="1 0 0" Angle="-64.8" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
</Transform3DGroup>
</GeometryModel3D.Transform>
</GeometryModel3D>
<!-- 7-й спутник -->
<GeometryModel3D Geometry="{StaticResource sat}">
<GeometryModel3D.Material>
<DiffuseMaterial Brush="Green" />
</GeometryModel3D.Material>
<GeometryModel3D.BackMaterial>
<DiffuseMaterial Brush="Red" />
</GeometryModel3D.BackMaterial>
<GeometryModel3D.Transform>
<Transform3DGroup>
<TranslateTransform3D OffsetX="45" OffsetY="0" OffsetZ="0" />
<ScaleTransform3D ScaleX="0.05" ScaleY="0.05" ScaleZ="0.05"/>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" Angle="300" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" x:Name="rotate23" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 1 0" Angle="240" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<!--Наклонение орбиты 64,8 градуса -->
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="1 0 0" Angle="-64.8" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
</Transform3DGroup>
</GeometryModel3D.Transform>
</GeometryModel3D>
<!-- 8-й спутник -->
<GeometryModel3D Geometry="{StaticResource sat}">
<GeometryModel3D.Material>
<DiffuseMaterial Brush="Green" />
</GeometryModel3D.Material>
<GeometryModel3D.BackMaterial>
<DiffuseMaterial Brush="Red" />
</GeometryModel3D.BackMaterial>
<GeometryModel3D.Transform>
<Transform3DGroup>
<TranslateTransform3D OffsetX="45" OffsetY="0" OffsetZ="0" />
<ScaleTransform3D ScaleX="0.05" ScaleY="0.05" ScaleZ="0.05"/>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" Angle="345" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 0 1" x:Name="rotate24" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="0 1 0" Angle="240" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<!--Наклонение орбиты 64,8 градуса -->
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Axis="1 0 0" Angle="-64.8" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
</Transform3DGroup>
</GeometryModel3D.Transform>
</GeometryModel3D>
</Model3DGroup>
</ModelVisual3D.Content>
</ModelVisual3D>
</Viewport3D>
</StackPanel>
<!--end of the uppermost StackPanel which contains everything-->
<Window.Triggers>
<EventTrigger RoutedEvent="Window.Loaded">
<BeginStoryboard>
<Storyboard TargetProperty="Angle">
<!--Первая плоскость-->
<DoubleAnimation Storyboard.TargetName="rotate1" From="0" To="360" Duration="0:2:00" RepeatBehavior="Forever" />
<DoubleAnimation Storyboard.TargetName="rotate2" From="0" To="360" Duration="0:2:00" RepeatBehavior="Forever" />
<DoubleAnimation Storyboard.TargetName="rotate3" From="0" To="360" Duration="0:2:00" RepeatBehavior="Forever" />
<DoubleAnimation Storyboard.TargetName="rotate4" From="0" To="360" Duration="0:2:00" RepeatBehavior="Forever" />
<DoubleAnimation Storyboard.TargetName="rotate5" From="0" To="360" Duration="0:2:00" RepeatBehavior="Forever" />
<DoubleAnimation Storyboard.TargetName="rotate6" From="0" To="360" Duration="0:2:00" RepeatBehavior="Forever" />
<DoubleAnimation Storyboard.TargetName="rotate7" From="0" To="360" Duration="0:2:00" RepeatBehavior="Forever" />
<DoubleAnimation Storyboard.TargetName="rotate8" From="0" To="360" Duration="0:2:00" RepeatBehavior="Forever" />
<!--Вторая плоскость-->
<DoubleAnimation Storyboard.TargetName="rotate9" From="0" To="360" Duration="0:2:00" RepeatBehavior="Forever" />
<DoubleAnimation Storyboard.TargetName="rotate10" From="0" To="360" Duration="0:2:00" RepeatBehavior="Forever" />
<DoubleAnimation Storyboard.TargetName="rotate11" From="0" To="360" Duration="0:2:00" RepeatBehavior="Forever" />
<DoubleAnimation Storyboard.TargetName="rotate12" From="0" To="360" Duration="0:2:00" RepeatBehavior="Forever" />
<DoubleAnimation Storyboard.TargetName="rotate13" From="0" To="360" Duration="0:2:00" RepeatBehavior="Forever" />
<DoubleAnimation Storyboard.TargetName="rotate14" From="0" To="360" Duration="0:2:00" RepeatBehavior="Forever" />
<DoubleAnimation Storyboard.TargetName="rotate15" From="0" To="360" Duration="0:2:00" RepeatBehavior="Forever" />
<DoubleAnimation Storyboard.TargetName="rotate16" From="0" To="360" Duration="0:2:00" RepeatBehavior="Forever" />
<!--Третья плоскость-->
<DoubleAnimation Storyboard.TargetName="rotate17" From="0" To="360" Duration="0:2:00" RepeatBehavior="Forever" />
<DoubleAnimation Storyboard.TargetName="rotate18" From="0" To="360" Duration="0:2:00" RepeatBehavior="Forever" />
<DoubleAnimation Storyboard.TargetName="rotate19" From="0" To="360" Duration="0:2:00" RepeatBehavior="Forever" />
<DoubleAnimation Storyboard.TargetName="rotate20" From="0" To="360" Duration="0:2:00" RepeatBehavior="Forever" />
<DoubleAnimation Storyboard.TargetName="rotate21" From="0" To="360" Duration="0:2:00" RepeatBehavior="Forever" />
<DoubleAnimation Storyboard.TargetName="rotate22" From="0" To="360" Duration="0:2:00" RepeatBehavior="Forever" />
<DoubleAnimation Storyboard.TargetName="rotate23" From="0" To="360" Duration="0:2:00" RepeatBehavior="Forever" />
<DoubleAnimation Storyboard.TargetName="rotate24" From="0" To="360" Duration="0:2:00" RepeatBehavior="Forever" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Window.Triggers>
</Window>
Переходим в окно ):
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Media.Media3D;
namespace sphere1
{
public partial class MainWindow : Window
{
private const int maxLongitudes = 100; //maximum
private const int maxLatitudes = 100; //maximum
private Point3D[,] position = new Point3D[maxLongitudes + 1, maxLatitudes];
private Point[,] texture = new Point[maxLongitudes + 1, maxLatitudes];
private DiffuseMaterial[] frontMaterial = new DiffuseMaterial[maxLatitudes - 1];
private int longitudes; //actual <= maximum
private int latitudes; //actual <= maximum
private int emptySlices = 0; //cuts slices out of the apple
private int IndexOfFirstGeometryModel3DInModel3DGroup; //= no of lights = 2
private Matrix3D matrix = Matrix3D.Identity;
private MatrixTransform3D matrixTransform3D;
private Quaternion qX = new Quaternion(new Vector3D(1, 0, 0), 1); //rotations around X-axis
private Quaternion qY = new Quaternion(new Vector3D(0, 1, 0), 1); //rotations around Y-axis
private Quaternion qZ = new Quaternion(new Vector3D(0, 0, 1), 1); //rotations around Z-axis
private System.Windows.Threading.DispatcherTimer timer =
new System.Windows.Threading.DispatcherTimer();
public MainWindow() //constructor
{
InitializeComponent();
IndexOfFirstGeometryModel3DInModel3DGroup = model3DGroup.Children.Count;
longitudes = 30;
latitudes = 30;
StartAnimation();
GenerateImageMaterials();
GenerateSphere();
GenerateAllCylinders();
timer.Interval = TimeSpan.FromMilliseconds(50);
timer.Tick += TimerOnTick;
}
private void StartAnimation()
{
timer.Stop();
matrix = Matrix3D.Identity;
timer.Start();
}
private void TimerOnTick(Object sender, EventArgs args)
{
matrix.Rotate(qY);
matrixTransform3D = new MatrixTransform3D(matrix);
for (int i = IndexOfFirstGeometryModel3DInModel3DGroup;
i < model3DGroup.Children.Count; i++)
((GeometryModel3D)model3DGroup.Children[i]).Transform = matrixTransform3D;
}
protected override void OnRenderSizeChanged(SizeChangedInfo sizeInfo)
{
try { viewport.Width = viewport.Height = window.ActualWidth; }
catch { }
}
private void GenerateImageMaterials()
{
ImageBrush imageBrush;
double flatThickness = 1.0 / (latitudes - 1);
double minus = (double)(longitudes - emptySlices);
for (int lat = 0; lat < latitudes - 1; lat++)
{
imageBrush = new ImageBrush((BitmapImage)Resources["earthImage"]);
imageBrush.Viewbox = new Rect(0, lat * flatThickness, minus / longitudes,
flatThickness);
frontMaterial[lat] = new DiffuseMaterial(imageBrush);
}
}
private void GenerateSphere()
{
int longitudes = 30;
int latitudes = 30;
double latitudeArcusIncrement = Math.PI / (latitudes - 1);
double longitudeArcusIncrement = 2.0 * Math.PI / longitudes;
for (int lat = 0; lat < latitudes; lat++)
{
double latitudeArcus = lat * latitudeArcusIncrement;
double radius = Math.Sin(latitudeArcus);
//if ( lat == latitudes/2 ) radius *= 1.3;
double y = Math.Cos(latitudeArcus);
double textureY = (double)lat / (latitudes - 1);
for (int lon = 0; lon <= longitudes; lon++)
{
double longitudeArcus = lon * longitudeArcusIncrement;
position[lon, lat].X = radius * Math.Cos(longitudeArcus);
position[lon, lat].Y = y;
position[lon, lat].Z = -radius * Math.Sin(longitudeArcus);
texture[lon, lat].X = (double)lon / longitudes;
texture[lon, lat].Y = textureY;
}
}
}
private void GenerateAllCylinders()
{ //At first delete all existing flats beginning with the last one
for (int i = model3DGroup.Children.Count - 1;
i >= IndexOfFirstGeometryModel3DInModel3DGroup; i--)
model3DGroup.Children.Remove((GeometryModel3D)model3DGroup.Children[i]);
for (int lat = 0; lat < latitudes - 1; lat++)
{
GeometryModel3D geometryModel3D = new GeometryModel3D();
geometryModel3D.Geometry = GenerateCylinder(lat);
geometryModel3D.Material = frontMaterial[lat];
geometryModel3D.BackMaterial = (DiffuseMaterial)Resources["backMaterial"];
model3DGroup.Children.Add(geometryModel3D);
}
}
private MeshGeometry3D GenerateCylinder(int lat)
{
MeshGeometry3D meshGeometry3D = new MeshGeometry3D();
for (int lon = 0; lon <= longitudes - emptySlices; lon++)
//create a zigzag point collection
{
Point3D p0 = position[lon, lat]; //on the ceiling
Point3D p1 = position[lon, lat + 1]; //on the floor
meshGeometry3D.Positions.Add(p0); //on the ceiling
meshGeometry3D.Positions.Add(p1); //on the floor
meshGeometry3D.Normals.Add((Vector3D)p0); //ceiling normal
meshGeometry3D.Normals.Add((Vector3D)p1); //floor normal
meshGeometry3D.TextureCoordinates.Add(texture[lon, lat]); //on the ceiling
meshGeometry3D.TextureCoordinates.Add(texture[lon, lat + 1]); //on the floor
}
for (int lon = 1; lon < meshGeometry3D.Positions.Count - 2; lon += 2)
{ //first triangle = left upper part of a rectangle
meshGeometry3D.TriangleIndices.Add(lon - 1); //left upper point
meshGeometry3D.TriangleIndices.Add(lon); //left lower point
meshGeometry3D.TriangleIndices.Add(lon + 1); //right upper point
//second triangle = right lower part of the rectangle
meshGeometry3D.TriangleIndices.Add(lon + 1); //right upper point
meshGeometry3D.TriangleIndices.Add(lon); //left lower point
meshGeometry3D.TriangleIndices.Add(lon + 2); //right lower point
}
return meshGeometry3D;
}
}
}
Результат:
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.