Россия, г. Ейск |
Опубликован: 01.11.2011 | Уровень: специалист | Доступ: платный
Практическая работа 5:
Трансформация и анимация в Silverlight с помощью XAML
Упражнение 12.4 Анимация 24-х спутников ГЛОНАСС
Землю моделировали, используя алгоритм 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>Листинг .
Переходим в окно MainWindow.xaml.cs и вводим следующий код (http://www.miszalok.de/C_00/Index_all_Courses.htm):
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; } } }Листинг .
Результат: