Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/34: Рейтинг темы: голосов - 34, средняя оценка - 4.68
8 / 8 / 0
Регистрация: 01.12.2009
Сообщений: 227
1

Фигура в пространстве

12.03.2011, 12:50. Показов 6463. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток !

Что нужно для создания фигуры в пространстве(3d) ? и как реализовать 3 координатные оси (x,y,z) в vb.net ?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.03.2011, 12:50
Ответы с готовыми решениями:

Найти координаты точки в пространстве, имея уравнение прямой в пространстве
Имеются две точки, через которые проходит прямая в пространстве: A(3; 1; 4216) B(12; 10; 12308) ...

Где выполняются PHP- скрипты в отдельном адресном пространстве или в адресном пространстве сервера?
Кто знает где выполняются PHP- скрипты в отдельном адресном пространстве или в адресном...

фигура
помогите сделать шести угольник вот такой, получается только залить его полностью, а как сделать...

Фигура в 3d
Не могу сделать фаску.

10
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
12.03.2011, 14:46 2
555shiro, трехмерную фигуру реализовать не так просто. Если просто отображение этой фигуры - то тут просто кубик рисуешь. Если же ее надо манипулировать, вращать, то средствами GDI+ через System.Drawing выходит строк 400 кода, как минимум и куча математических преобразований.
Не знаю, может через DirectX лече сделать, но самый легкий способ - это через WPF- там строк 30 разметки приложения и ни строчки кода. Вот тут я выложил недоработанный пример вращения куба
Если интересен данный подход, могу код разметки выложить.
0
8 / 8 / 0
Регистрация: 01.12.2009
Сообщений: 227
12.03.2011, 19:51  [ТС] 3
Мне именно надо манипулирование,требуется нарисовать какую либо обьемную букву,перемещать её и вращать по 3 осям...
код посмотрю,но мне всё равно надо в этом разобраться,да и к тому же это интересно,хотя и нелегко
0
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
12.03.2011, 20:37 4
На WPF -
XML
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
<Window x:Class="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>
        <Viewport3D MouseDown="Viewport3D_MouseDown">
            <Viewport3D.Camera>
                <PerspectiveCamera x:Name="camera" Position="-2,2,2" LookDirection="3,-2,-2" UpDirection="0,1,0"/>
            </Viewport3D.Camera>
            <ModelVisual3D>
 
                <ModelVisual3D.Content>
                    <DirectionalLight Color="White" Direction="-1,-1,-1" />
 
                </ModelVisual3D.Content>
            </ModelVisual3D>
            <ModelVisual3D>
 
                    <Viewport2DVisual3D>
                        
                        <Viewport2DVisual3D.Geometry>
                            <MeshGeometry3D Positions=  "0,0,0, 1,0,0, 0,1,0, 1,1,0
                                                        0,0,1, 1,0,1, 0,1,1, 1,1,1" 
                                            TriangleIndices="0,2,1, 1,2,3, 0,4,2, 2,4,6
                                                            0,1,4, 1,5,4, 1,7,5, 1,3,5
                                                            4,5,6, 7,6,5, 2,6,3, 3,6,7"
                                            TextureCoordinates="0,0, 0,0, 1,0, 0,0
                                                                0,1, 0,0, 1,1, 1,0" />
 
                        </Viewport2DVisual3D.Geometry>
                        <Viewport2DVisual3D.Material>
                            <MaterialGroup>
                                <DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="True">
                                    
                                </DiffuseMaterial>
                                <SpecularMaterial SpecularPower="24">
                                    <SpecularMaterial.Brush>
                                        <SolidColorBrush Color="LightBlue" />
                                    </SpecularMaterial.Brush>
                                </SpecularMaterial>
                            </MaterialGroup>
                        </Viewport2DVisual3D.Material>
                    <Viewport2DVisual3D.Visual>
                        <Border BorderBrush="Yellow" BorderThickness="1">
                            <StackPanel Margin="10">
                                <TextBlock Margin="3">This is TextBlock</TextBlock>
                                <Button Click="Button_Click">Click Me</Button>
                                <TextBlock>[Enter your text here]</TextBlock>
                            </StackPanel>
                            </Border>
                    </Viewport2DVisual3D.Visual>
 
                        <Viewport2DVisual3D.Transform>
                            <Transform3DGroup>
                                <TranslateTransform3D OffsetX="0" OffsetY="0" OffsetZ="0"/>
                                <ScaleTransform3D ScaleX="1" ScaleY="1" ScaleZ="1" />
                                <RotateTransform3D>
                                    <RotateTransform3D.Rotation>
                                        <AxisAngleRotation3D x:Name="RotateAngle" Axis="0 1 0"></AxisAngleRotation3D>
                                    </RotateTransform3D.Rotation>
                                </RotateTransform3D>
                                <TranslateTransform3D OffsetX="0" OffsetY="0" OffsetZ="0"/>
                            </Transform3DGroup>
                        </Viewport2DVisual3D.Transform>
                    </Viewport2DVisual3D>
                
            </ModelVisual3D>
 
        </Viewport3D>
        <Slider Minimum="0" Maximum="360" Orientation="Horizontal" Value="{Binding ElementName=RotateAngle, Path=Angle}"/>
        
            
    </Grid>
</Window>
создаешь проект WPF и в код разметки заменяешь этим кодом, запускаешь, дальше двигаешь ползенок и куб вращается. Куб немного доработан.
(Для GDI+ у меня есть код только на шарпе, но там, как я говорил, около 400 строк кода, да и куб не совсем получился, хотя код был точь в точь как в источнике.)
0
8 / 8 / 0
Регистрация: 01.12.2009
Сообщений: 227
14.03.2011, 19:13  [ТС] 5
Цитата Сообщение от Eugene22 Посмотреть сообщение
На WPF -
XML
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
<Window x:Class="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>
        <Viewport3D MouseDown="Viewport3D_MouseDown">
            <Viewport3D.Camera>
                <PerspectiveCamera x:Name="camera" Position="-2,2,2" LookDirection="3,-2,-2" UpDirection="0,1,0"/>
            </Viewport3D.Camera>
            <ModelVisual3D>
 
                <ModelVisual3D.Content>
                    <DirectionalLight Color="White" Direction="-1,-1,-1" />
 
                </ModelVisual3D.Content>
            </ModelVisual3D>
            <ModelVisual3D>
 
                    <Viewport2DVisual3D>
                        
                        <Viewport2DVisual3D.Geometry>
                            <MeshGeometry3D Positions=  "0,0,0, 1,0,0, 0,1,0, 1,1,0
                                                        0,0,1, 1,0,1, 0,1,1, 1,1,1" 
                                            TriangleIndices="0,2,1, 1,2,3, 0,4,2, 2,4,6
                                                            0,1,4, 1,5,4, 1,7,5, 1,3,5
                                                            4,5,6, 7,6,5, 2,6,3, 3,6,7"
                                            TextureCoordinates="0,0, 0,0, 1,0, 0,0
                                                                0,1, 0,0, 1,1, 1,0" />
 
                        </Viewport2DVisual3D.Geometry>
                        <Viewport2DVisual3D.Material>
                            <MaterialGroup>
                                <DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="True">
                                    
                                </DiffuseMaterial>
                                <SpecularMaterial SpecularPower="24">
                                    <SpecularMaterial.Brush>
                                        <SolidColorBrush Color="LightBlue" />
                                    </SpecularMaterial.Brush>
                                </SpecularMaterial>
                            </MaterialGroup>
                        </Viewport2DVisual3D.Material>
                    <Viewport2DVisual3D.Visual>
                        <Border BorderBrush="Yellow" BorderThickness="1">
                            <StackPanel Margin="10">
                                <TextBlock Margin="3">This is TextBlock</TextBlock>
                                <Button Click="Button_Click">Click Me</Button>
                                <TextBlock>[Enter your text here]</TextBlock>
                            </StackPanel>
                            </Border>
                    </Viewport2DVisual3D.Visual>
 
                        <Viewport2DVisual3D.Transform>
                            <Transform3DGroup>
                                <TranslateTransform3D OffsetX="0" OffsetY="0" OffsetZ="0"/>
                                <ScaleTransform3D ScaleX="1" ScaleY="1" ScaleZ="1" />
                                <RotateTransform3D>
                                    <RotateTransform3D.Rotation>
                                        <AxisAngleRotation3D x:Name="RotateAngle" Axis="0 1 0"></AxisAngleRotation3D>
                                    </RotateTransform3D.Rotation>
                                </RotateTransform3D>
                                <TranslateTransform3D OffsetX="0" OffsetY="0" OffsetZ="0"/>
                            </Transform3DGroup>
                        </Viewport2DVisual3D.Transform>
                    </Viewport2DVisual3D>
                
            </ModelVisual3D>
 
        </Viewport3D>
        <Slider Minimum="0" Maximum="360" Orientation="Horizontal" Value="{Binding ElementName=RotateAngle, Path=Angle}"/>
        
            
    </Grid>
</Window>
создаешь проект WPF и в код разметки заменяешь этим кодом, запускаешь, дальше двигаешь ползенок и куб вращается. Куб немного доработан.
(Для GDI+ у меня есть код только на шарпе, но там, как я говорил, около 400 строк кода, да и куб не совсем получился, хотя код был точь в точь как в источнике.)

Я код вставил, и при запуске там выходят 2 ошибки:

1) Ошибка 1 "Button_Click" не является членом "_1111.MainWindow". C:\Users\skorpion\Documents\Visual Studio 2010\Projects\1111\1111\obj\x86\Debug\MainWindow.g.vb 100 124 1111

2)Ошибка 2 "Viewport3D_MouseDown" не является членом "_1111.MainWindow". C:\Users\skorpion\Documents\Visual Studio 2010\Projects\1111\1111\obj\x86\Debug\MainWindow.g.vb 88 144 1111
0
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
14.03.2011, 19:41 6
А немного не тот пример дал, ну там вместо
XML
1
<Viewport3D MouseDown="Viewport3D_MouseDown">
напиши
XML
1
<Viewport3D>
,
а вместо
XML
1
<Button Click="Button_Click">Click Me</Button>
напиши
XML
1
<Button>Click Me</Button>
или вот по-проще пример,
XML
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
<Window x:Class="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>
        <Viewport3D>
            <Viewport3D.Camera>
                <PerspectiveCamera Position="-2,2,2" LookDirection="3,-2,-2" UpDirection="0,1,0"/>
            </Viewport3D.Camera>
            <ModelVisual3D>
                <ModelVisual3D.Content>
                    <DirectionalLight Color="White" Direction="-1,-1,-1" />
                </ModelVisual3D.Content>
            </ModelVisual3D>
            <ModelVisual3D>
                <ModelVisual3D.Content>
                    <GeometryModel3D>
                        <GeometryModel3D.Geometry>
                            <MeshGeometry3D Positions=  "0,0,0, 1,0,0, 0,1,0, 1,1,0
                                                        0,0,1, 1,0,1, 0,1,1, 1,1,1" 
                                            TriangleIndices="0,2,1, 1,2,3, 0,4,2, 2,4,6
                                                            0,1,4, 1,5,4, 1,7,5, 1,3,5
                                                            4,5,6, 7,6,5, 2,6,3, 3,6,7"
                                            />
                        </GeometryModel3D.Geometry>
                        <GeometryModel3D.Material>
                            <MaterialGroup>
                                <DiffuseMaterial>
                                    <DiffuseMaterial.Brush>
                                        <SolidColorBrush Color="DarkBlue" />
                                    </DiffuseMaterial.Brush>
                                </DiffuseMaterial>
                                <SpecularMaterial SpecularPower="24">
                                    <SpecularMaterial.Brush>
                                        <SolidColorBrush Color="LightBlue" />
                                    </SpecularMaterial.Brush>
                                </SpecularMaterial>
                            </MaterialGroup>
                        </GeometryModel3D.Material>              
                        <GeometryModel3D.Transform>
                            <Transform3DGroup>
                                <TranslateTransform3D OffsetX="0" OffsetY="0" OffsetZ="0"/>
                                <ScaleTransform3D ScaleX="1" ScaleY="1" ScaleZ="1" />
                                <RotateTransform3D>
                                    <RotateTransform3D.Rotation>
                                        <AxisAngleRotation3D x:Name="RotateAngle" Axis="0 1 0"></AxisAngleRotation3D>
                                    </RotateTransform3D.Rotation>
                                </RotateTransform3D>
                                <TranslateTransform3D OffsetX="0" OffsetY="0" OffsetZ="0"/>
                            </Transform3DGroup>
                        </GeometryModel3D.Transform>
                    </GeometryModel3D>
                </ModelVisual3D.Content>
            </ModelVisual3D>
        </Viewport3D>
        <Slider Minimum="0" Maximum="360" Orientation="Horizontal" Value="{Binding ElementName=RotateAngle, Path=Angle}"/>
    </Grid>
</Window>
0
8 / 8 / 0
Регистрация: 01.12.2009
Сообщений: 227
14.03.2011, 20:33  [ТС] 7
теперь всё работает,и первый и второй,а есть какие нибудь учебники по созданию 3d обьектов по этой WPF или GDI+ на крайний случай,хотелось бы в этом досканально разобраться,какой код за что отвечает
0
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
14.03.2011, 20:50 8
555shiro, по GDI+ видел только один пример в одном старом учебнике по шарпу. По WPF есть книга Мэтью Макдональда - собственно этот пример из нее и взят. Плюс есть раздел на msdn, ну в интернете если поискать примеров куча. 3D в WPF вообще довольно популярная тема
0
8 / 8 / 0
Регистрация: 01.12.2009
Сообщений: 227
15.03.2011, 21:51  [ТС] 9
C кубом боле менее разобрался,куб вращается вокруг оси у,а как сделать чтобы также постепенно увеличивался масштаб при нажатии на какой нибудь элемент управления (например на кнопку) или на том же Slider ?
0
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
15.03.2011, 22:26 10
А конкретно вращение куба вроде связано с перещением камеры - попробуй поменять свойство Position в
XML
1
<PerspectiveCamera Position="-2,2,2" LookDirection="3,-2,-2" UpDirection="0,1,0"/>
хотя не уверен.
Лучше инете поискать, я сильно с 3D пока не работал. Вот на msdn куча примеров, может что полезное найдешь.
И вот еще один немец в своем блоге приводит пример трехмерного куба и его код, правда я там не разбирался
0
8 / 8 / 0
Регистрация: 01.12.2009
Сообщений: 227
16.03.2011, 23:17  [ТС] 11
я тут нарисовал 3d обьект-букву Г из двух отдельных 2 обьектов,как можно их совместить,чтобы это буква была одной целой и вращалась..... всё что знаю перепробовал,никак не получается


XML
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
<Window x:Class="MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="450" Width="625">
    <Grid>
        <Viewport3D>
            <Viewport3D.Camera>
                <PerspectiveCamera Position="-3,4,4" LookDirection="3.25,-3,-3.75"/>
 
            </Viewport3D.Camera>
            <ModelVisual3D>
                <ModelVisual3D.Content>
                    <DirectionalLight Color="White" Direction="3.25,-3,-3.75" />
                </ModelVisual3D.Content>
            </ModelVisual3D>
            <ModelVisual3D>
             
                <ModelVisual3D.Content>
                    <Model3DGroup>
                    <GeometryModel3D>
                       
                            <GeometryModel3D.Geometry>
                            
                            <MeshGeometry3D Positions="0 0 0  0.5 0 0  0.5 0 0.5  0 0 0.5  0 2 0  0.5 2 0  0.5 2 0.5  0 2 0.5"
TriangleIndices="3 2 1  3 1 0  6 1 2  6 5 1  7 5 6  7 4 5  7 3 4  3 0 4  3 6 2  3 7 6  0 1 5  0 5 4 "/>
 
                        </GeometryModel3D.Geometry>
                        <GeometryModel3D.Material>
                            <MaterialGroup>
 
 
                                <DiffuseMaterial>
                                    <DiffuseMaterial.Brush>
                                        <SolidColorBrush Color="DarkGreen" />
 
                                    </DiffuseMaterial.Brush>
                                </DiffuseMaterial>
                                <SpecularMaterial SpecularPower="24">
                                    <SpecularMaterial.Brush>
                                        <SolidColorBrush Color="LightGreen" />
                                    </SpecularMaterial.Brush>
                                </SpecularMaterial>
                            </MaterialGroup>
                        </GeometryModel3D.Material>
                        <GeometryModel3D.Transform>
                            <Transform3DGroup>
                                <TranslateTransform3D OffsetX="0" OffsetY="0" OffsetZ="0"/>
                                <ScaleTransform3D x:Name="ScaleTransform3D" ScaleX="1" ScaleY="1" ScaleZ="1" />
                                <RotateTransform3D>
                                    <RotateTransform3D.Rotation>
                                        <AxisAngleRotation3D x:Name="RotateAngle" Axis="0 1 0"></AxisAngleRotation3D>
                                    </RotateTransform3D.Rotation>
                                </RotateTransform3D>
                                <TranslateTransform3D OffsetX="0" OffsetY="0" OffsetZ="0"/>
                            </Transform3DGroup>
                        </GeometryModel3D.Transform>
                    </GeometryModel3D>
                        <GeometryModel3D>
                       
                            <GeometryModel3D.Geometry>
                            
                            <MeshGeometry3D Positions="0.5 1.5 0  2 1.5  0 2 1.5 0.5  0.5 1.5 0.5  0.5 2 0  2 2 0  2 2 0.5  0.5 2 0.5 "
TriangleIndices="3 2 1  3 1 0  6 1 2  6 5 1  7 5 6  7 4 5  7 3 4  3 0 4  3 6 2  3 7 6  0 1 5  0 5 4 "/>
 
                        </GeometryModel3D.Geometry>
                        <GeometryModel3D.Material>
                            <MaterialGroup>
 
 
                                <DiffuseMaterial>
                                    <DiffuseMaterial.Brush>
                                        <SolidColorBrush Color="DarkGreen" />
 
                                    </DiffuseMaterial.Brush>
                                </DiffuseMaterial>
                                <SpecularMaterial SpecularPower="24">
                                    <SpecularMaterial.Brush>
                                        <SolidColorBrush Color="LightGreen" />
                                    </SpecularMaterial.Brush>
                                </SpecularMaterial>
                            </MaterialGroup>
                        </GeometryModel3D.Material>
                        <GeometryModel3D.Transform>
                            <Transform3DGroup>
                                <TranslateTransform3D OffsetX="0" OffsetY="0" OffsetZ="0"/>
                                <ScaleTransform3D x:Name="ScaleTransform3" ScaleX="1" ScaleY="1" ScaleZ="1" />
                                <RotateTransform3D>
                                    <RotateTransform3D.Rotation>
                                        <AxisAngleRotation3D x:Name="RotateAngl" Axis="0 1 0"></AxisAngleRotation3D>
                                    </RotateTransform3D.Rotation>
                                </RotateTransform3D>
                                <TranslateTransform3D OffsetX="0" OffsetY="0" OffsetZ="0"/>
                            </Transform3DGroup>
                        </GeometryModel3D.Transform>
                    </GeometryModel3D>
                    </Model3DGroup>
                </ModelVisual3D.Content>
            </ModelVisual3D>
        </Viewport3D>
        <Slider Minimum="0" Maximum="360" Orientation="Horizontal" Value="{Binding ElementName=RotateAngle, Path=Angle}"/>
    </Grid>
</Window>
0
16.03.2011, 23:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.03.2011, 23:17
Помогаю со студенческими работами здесь

3d фигура
Необходимо построить фигуру, ограниченную плоскостями: x^2+y^2-z^2=0, x^2+y^2+z=3, z=0. Я построил...

3D Фигура в C#
Есть координаты трехмерной фигуры. Надо вывести эту фигуру на форму, чтобы получилось что-то типа...

Не рисуется фигура
В методе объекта obj есть функция, которая рисует прямоугольник, который содержится в этом объекте,...

Фигура из квадратов
Даны действительные числа а1,в1,с1,а2,в2,с2,...аn, вn,cn. Эта последовательность определяет на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru