첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
유용한 소스 코드가 있으면 icodebroker@naver.com으로 보내주시면 감사합니다.
블로그 자료는 자유롭게 사용하세요.

■ 3차원 사면체 회전하기

------------------------------------------------------------------------------------------------------------------------


TestProject.zip


MainWindow.xaml

 

 

<Window x:Class="TestProject.MainWindow"

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    Width="800"

    Height="600"

    Title="3차원 사면체 회전하기">

    <Grid>

        <Grid.ColumnDefinitions>

            <ColumnDefinition Width="*" />

            <ColumnDefinition Width="20" />

        </Grid.ColumnDefinitions>

        <Grid.RowDefinitions>

            <RowDefinition Height="*" />

            <RowDefinition Height="25" />

        </Grid.RowDefinitions>

        <ScrollBar Name="verticalScrollBar" Grid.Row="0" Grid.Column="1"

            Orientation="Vertical"  

            Minimum="-180"

            Maximum="180"

            SmallChange="1"

            LargeChange="10"

            Value="0" />

        <ScrollBar Name="horizontalScrollBar" Grid.Row="1" Grid.Column="0"

            Orientation="Horizontal"

            Minimum="-180"

            Maximum="180"

            SmallChange="1"

            LargeChange="10"

            Value="0" />

        <Viewport3D Grid.Row="0" Grid.Column="0"

            Margin="4 4 4 4">

            <ModelVisual3D>

                <ModelVisual3D.Content>

                    <Model3DGroup>

                        <AmbientLight Color="Gray" />

                        <DirectionalLight Color="LightGray" Direction="-1 -2 -3" />

                        <GeometryModel3D>

                            <GeometryModel3D.Geometry>

                                <MeshGeometry3D

                                    Positions=" 0, 0                 , 1.15470053837925150

                                               -1, 0                 , -0.57735026918962584

                                                1, 0                 , -0.57735026918962584

                                                0, 1.6329931618554521, 0"

                                    TriangleIndices="3 1 0, 3 2 1, 3 0 2, 0 1 2" />

                            </GeometryModel3D.Geometry>

                            <GeometryModel3D.Transform>

                                <ScaleTransform3D

                                    ScaleX="2"

                                    ScaleY="2"

                                    ScaleZ="2" />

                            </GeometryModel3D.Transform>

                            <GeometryModel3D.Material>

                                <DiffuseMaterial Brush="Red" />

                            </GeometryModel3D.Material>

                        </GeometryModel3D>

                    </Model3DGroup>

                </ModelVisual3D.Content>

            </ModelVisual3D>

            <Viewport3D.Camera>

                <PerspectiveCamera

                    Position="1 2 6"

                    LookDirection="-0.5 -0.5 -3"

                    UpDirection="0 1 0"

                    FieldOfView="60">

                    <PerspectiveCamera.Transform>

                        <Transform3DGroup>

                            <RotateTransform3D>

                                <RotateTransform3D.Rotation>

                                    <AxisAngleRotation3D

                                        Axis="0 1 0"

                                        Angle="{Binding ElementName=horizontalScrollBar, Path=Value}" />

                                </RotateTransform3D.Rotation>

                            </RotateTransform3D>

                            <RotateTransform3D>

                                <RotateTransform3D.Rotation>

                                    <AxisAngleRotation3D

                                        Axis="1 0 0"

                                        Angle="{Binding ElementName=verticalScrollBar, Path=Value}" />

                                </RotateTransform3D.Rotation>

                            </RotateTransform3D>

                        </Transform3DGroup>

                    </PerspectiveCamera.Transform>

                </PerspectiveCamera>

            </Viewport3D.Camera>

        </Viewport3D>

    </Grid>

</Window>

 

 

MainWindow.xaml.cs

 

 

using System.Windows;

 

namespace TestProject

{

    /// <summary>

    /// 메인 윈도우

    /// </summary>

    public partial class MainWindow : Window

    {

        //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor

        ////////////////////////////////////////////////////////////////////////////////////////// Public

 

        #region 생성자 - MainWindow()

 

        /// <summary>

        /// 생성자

        /// </summary>

        public MainWindow()

        {

            InitializeComponent();

        }

 

        #endregion

    }

}

 

------------------------------------------------------------------------------------------------------------------------

Posted by 사용자 icodebroker

댓글을 달아 주세요