begin process at 2013 05 25 04:10:26
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > SCROLL DE CAMERA DANS LE VIEWPORT

SCROLL DE CAMERA DANS LE VIEWPORT


 Description

Cliquez pour voir la capture en taille normale
La position de la caméra est calculée autour d'un MeshCube Quand on change un des trois scrollbars liés au Viewport.

Source

  • Imports System.Windows.Media.Media3D
  • Module Main '....... Affiche un MeshGeometry sur un plateau.(Viewport et scrollbars......)
  • Dim Projection As New Plateau3D(MeshCube(New Point3D(-0.5, -0.5, -0.5), 1, 1, 1))
  • Dim WithEvents Cadre As New Window With {.Height = 300, .Width = 300}
  • Dim WithEvents Appli As New Application() 'Systeme
  • Sub Main()
  • Cadre.Content = Projection.Pupitre.Panneau
  • Appli.Run(Cadre)
  • End Sub '............................................................. END Main
  • 'Mise en place...............
  • ''' <summary>
  • ''' retourne un cube de garniture.. a essais.
  • ''' </summary>
  • ''' <param name="Pos"></param>
  • ''' <param name="Prof"></param>
  • ''' <param name="Haut"></param>
  • ''' <param name="Larg"></param>
  • ''' <returns></returns>
  • ''' <remarks></remarks>
  • Function MeshCube(ByVal Pos As Point3D, _
  • ByVal Prof As Integer, _
  • ByVal Haut As Integer, _
  • ByVal Larg As Integer) As MeshGeometry3D 'Resille_Cube_Test
  • Dim Demi_Profondeur As Integer = Prof
  • Dim Demi_Largeur As Integer = Larg
  • Dim Demi_Hauteur As Integer = Haut
  • 'Face inférieure
  • Dim Pos_1 As New Point3D(Pos.X, Pos.Y, Pos.Z + Demi_Largeur)
  • Dim Pos_2 As New Point3D(Pos.X + Demi_Profondeur, Pos.Y, Pos.Z)
  • Dim Pos_3 As New Point3D(Pos.X + Demi_Profondeur, Pos.Y, Pos.Z + Demi_Largeur)
  • 'Face supérieure
  • Dim Pos_4 As New Point3D(Pos.X, Pos.Y + Demi_Hauteur, Pos.Z)
  • Dim Pos_5 As New Point3D(Pos.X + Demi_Profondeur, Pos.Y + Demi_Hauteur, Pos.Z)
  • Dim Pos_6 As New Point3D(Pos.X, Pos.Y + Demi_Hauteur, Pos.Z + Demi_Largeur)
  • Dim Pos_7 As New Point3D(Pos.X + Demi_Profondeur, Pos.Y + Demi_Hauteur, Pos.Z + Demi_Largeur)
  • 'et les 4 dernières faces
  • Dim Triangles() As Integer = {4, 5, 6, 5, 6, 7, 0, 1, 2, 1, 2, _
  • 3, 0, 2, 4, 2, 4, 5, 1, 3, 6, 3, 6, 7, 0, 1, 4, 1, 4, 6, 2, 3, 5, 3, 5, 7}
  • Dim M As New MeshGeometry3D
  • M.Positions.Add(Pos)
  • M.Positions.Add(Pos_1)
  • M.Positions.Add(Pos_2)
  • M.Positions.Add(Pos_3)
  • M.Positions.Add(Pos_4)
  • M.Positions.Add(Pos_5)
  • M.Positions.Add(Pos_6)
  • M.Positions.Add(Pos_7)
  • For i = 0 To 35
  • M.TriangleIndices.Add(Triangles(i))
  • Next i
  • Return M
  • End Function
  • ''' <summary>
  • ''' Génére un Viewport .. à garnir.
  • ''' </summary>
  • ''' <param name="Resille"></param>
  • ''' <returns></returns>
  • ''' <remarks></remarks>
  • Function Maille_Test(ByVal Resille As MeshGeometry3D) _
  • As Viewport3D
  • Dim Essai As New Viewport3D
  • Dim Lumiere As New AmbientLight(Colors.White)
  • Dim Eclairage As New ModelVisual3D
  • Eclairage.Content = Lumiere
  • Essai.Children.Add(Eclairage)
  • Dim Cam As New PerspectiveCamera
  • With Cam
  • .Position = New Point3D(0, 0, 10)
  • .LookDirection = New Vector3D(0, 0, -1)
  • .UpDirection = New Vector3D(0, 1, 0)
  • .FieldOfView = 45
  • End With
  • Essai.Camera = Cam
  • Dim Volume As New ModelVisual3D
  • Dim Rectangle As New GeometryModel3D
  • Dim Color As New DiffuseMaterial(Brushes.Cyan)
  • Dim Colorback As New DiffuseMaterial(Brushes.Red)
  • Rectangle.Geometry = Resille '_Cube _
  • '(New Point3D(-0.5, -0.5, -0.5), 1, 1, 1)
  • Rectangle.Material = Color
  • Rectangle.BackMaterial = Colorback
  • Volume.Content = Rectangle
  • Essai.Children.Add(Volume)
  • Return Essai
  • End Function
  • ''' <summary>
  • ''' lie trois curseurs (Scroll3D) et un Viewport.
  • ''' </summary>
  • ''' <remarks></remarks>
  • Public Class Plateau3D
  • Friend Vision As Viewport3D
  • Friend WithEvents Pupitre As New Scroll3D
  • Dim Origine As New Point3D(0, 0, 0)
  • Dim Eloignement As Integer = 1
  • Dim Latitude As Integer = 0
  • Dim Longitude As Integer = 0
  • Friend Sub ValueChanged() Handles Pupitre.ValueChanged '(ByVal NewValue As Point3D)
  • Dim Cam As PerspectiveCamera = Vision.Camera
  • REM ' Position de la caméra.
  • Dim Position_Camera As Point3D = Euclide(Pupitre.Hbar.Value, Pupitre.Vbar.Value, Pupitre.Zbar.Value)
  • Cam.Position = New Point3D(Position_Camera.X, Position_Camera.Y, Position_Camera.Z)
  • Cam.LookDirection = New Vector3D(Origine.X - Position_Camera.X, _
  • Origine.Y - Position_Camera.Y, _
  • Origine.Z - Position_Camera.Z)
  • End Sub
  • Friend Sub New(ByVal Filet As MeshGeometry3D)
  • Vision = Maille_Test(Filet)
  • Pupitre.Panneau.Children.Add(Vision)
  • Dim Matrice As Matrix3D = Vision.Camera.Transform.Value
  • ValueChanged()
  • End Sub
  • End Class
  • ''' <summary>
  • ''' Scrolls circulaires et éloignement.
  • ''' </summary>
  • ''' <remarks>User control composé de trois scrollBars</remarks>
  • Public Class Scroll3D
  • Friend Panneau As New Grid
  • Event ValueChanged() '(ByVal NewValue As Media3D.Point3D)
  • 'Rotation Horizontale
  • Friend WithEvents Hbar As New Primitives.ScrollBar With { _
  • .ToolTip = "Latitude", _
  • .Orientation = Orientation.Horizontal, _
  • .Margin = New Thickness(0, 180, 0, 0), _
  • .Minimum = -90, _
  • .Maximum = 90, _
  • .LargeChange = 10, _
  • .Value = 0}
  • 'Rotation Verticale
  • Friend WithEvents Vbar As New Primitives.ScrollBar With { _
  • .ToolTip = "Longitude", _
  • .Orientation = Orientation.Horizontal, _
  • .Margin = New Thickness(0, 210, 0, 0), _
  • .Minimum = 0, _
  • .Maximum = 24, _
  • .LargeChange = 3, _
  • .Value = 12}
  • Friend WithEvents Zbar As New Primitives.ScrollBar With { _
  • .ToolTip = "Eloignement", _
  • .Orientation = Orientation.Horizontal, _
  • .Margin = New Thickness(0, 240, 0, 0), _
  • .Minimum = 5, _
  • .Maximum = 10, _
  • .LargeChange = 1, _
  • .Value = 5} 'Min
  • Friend Sub New()
  • Panneau.Children.Add(Hbar)
  • Panneau.Children.Add(Vbar)
  • Panneau.Children.Add(Zbar)
  • End Sub
  • Friend Sub HBar_VC(ByVal sender As Object, _
  • ByVal e As RoutedPropertyChangedEventArgs(Of Double)) _
  • Handles Hbar.ValueChanged
  • RaiseEvent ValueChanged() '(New Media3D.Point3D(e.NewValue, 0, 0))
  • End Sub
  • Friend Sub VBar_VC(ByVal sender As Object, _
  • ByVal e As RoutedPropertyChangedEventArgs(Of Double)) _
  • Handles Vbar.ValueChanged
  • RaiseEvent ValueChanged() '(New Media3D.Point3D(0, e.NewValue, 0))
  • End Sub
  • Friend Sub ZBar_VC(ByVal sender As Object, _
  • ByVal e As RoutedPropertyChangedEventArgs(Of Double)) _
  • Handles Zbar.ValueChanged
  • RaiseEvent ValueChanged() '(New Media3D.Point3D(0, 0, e.NewValue))
  • End Sub
  • End Class
  • Function Euclide(ByVal Longitude As Integer, _
  • ByVal Latitude As Integer, _
  • ByVal Eloignement As Integer, _
  • Optional ByVal OrigineX As Integer = 0, _
  • Optional ByVal OrigineY As Integer = 0, _
  • Optional ByVal OrigineZ As Integer = 0)
  • Dim P As New Point3D(Eloignement * (Math.Cos(Longitude) * Math.Cos(Latitude) + OrigineX), _
  • Eloignement * (Math.Sin(Longitude) + OrigineY), _
  • Eloignement * (Math.Cos(Longitude) * Math.Sin(Latitude) + OrigineZ))
  • Return P
  • End Function
  • End Module
Imports System.Windows.Media.Media3D

Module Main '....... Affiche un MeshGeometry sur un plateau.(Viewport et scrollbars......)

    Dim Projection As New Plateau3D(MeshCube(New Point3D(-0.5, -0.5, -0.5), 1, 1, 1))

    Dim WithEvents Cadre As New Window With {.Height = 300, .Width = 300}
    Dim WithEvents Appli As New Application() 'Systeme

    Sub Main()
        Cadre.Content = Projection.Pupitre.Panneau
        Appli.Run(Cadre)
    End Sub      '.............................................................    END Main


    'Mise en place...............

    ''' <summary>
    ''' retourne un cube de garniture.. a essais.
    ''' </summary>
    ''' <param name="Pos"></param>
    ''' <param name="Prof"></param>
    ''' <param name="Haut"></param>
    ''' <param name="Larg"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Function MeshCube(ByVal Pos As Point3D, _
                  ByVal Prof As Integer, _
                  ByVal Haut As Integer, _
                  ByVal Larg As Integer) As MeshGeometry3D 'Resille_Cube_Test

        Dim Demi_Profondeur As Integer = Prof
        Dim Demi_Largeur As Integer = Larg
        Dim Demi_Hauteur As Integer = Haut

        'Face inférieure
        Dim Pos_1 As New Point3D(Pos.X, Pos.Y, Pos.Z + Demi_Largeur)
        Dim Pos_2 As New Point3D(Pos.X + Demi_Profondeur, Pos.Y, Pos.Z)
        Dim Pos_3 As New Point3D(Pos.X + Demi_Profondeur, Pos.Y, Pos.Z + Demi_Largeur)

        'Face supérieure
        Dim Pos_4 As New Point3D(Pos.X, Pos.Y + Demi_Hauteur, Pos.Z)
        Dim Pos_5 As New Point3D(Pos.X + Demi_Profondeur, Pos.Y + Demi_Hauteur, Pos.Z)
        Dim Pos_6 As New Point3D(Pos.X, Pos.Y + Demi_Hauteur, Pos.Z + Demi_Largeur)
        Dim Pos_7 As New Point3D(Pos.X + Demi_Profondeur, Pos.Y + Demi_Hauteur, Pos.Z + Demi_Largeur)
        'et les 4 dernières faces
        Dim Triangles() As Integer = {4, 5, 6, 5, 6, 7, 0, 1, 2, 1, 2, _
        3, 0, 2, 4, 2, 4, 5, 1, 3, 6, 3, 6, 7, 0, 1, 4, 1, 4, 6, 2, 3, 5, 3, 5, 7}
        Dim M As New MeshGeometry3D
        M.Positions.Add(Pos)
        M.Positions.Add(Pos_1)
        M.Positions.Add(Pos_2)
        M.Positions.Add(Pos_3)
        M.Positions.Add(Pos_4)
        M.Positions.Add(Pos_5)
        M.Positions.Add(Pos_6)
        M.Positions.Add(Pos_7)
        For i = 0 To 35
            M.TriangleIndices.Add(Triangles(i))
        Next i
        Return M
    End Function


    ''' <summary>
    ''' Génére un Viewport .. à garnir.
    ''' </summary>
    ''' <param name="Resille"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Function Maille_Test(ByVal Resille As MeshGeometry3D) _
           As Viewport3D
        Dim Essai As New Viewport3D

        Dim Lumiere As New AmbientLight(Colors.White)
        Dim Eclairage As New ModelVisual3D
        Eclairage.Content = Lumiere
        Essai.Children.Add(Eclairage)

        Dim Cam As New PerspectiveCamera
        With Cam
            .Position = New Point3D(0, 0, 10)
            .LookDirection = New Vector3D(0, 0, -1)
            .UpDirection = New Vector3D(0, 1, 0)
            .FieldOfView = 45
        End With
        Essai.Camera = Cam

        Dim Volume As New ModelVisual3D
        Dim Rectangle As New GeometryModel3D
        Dim Color As New DiffuseMaterial(Brushes.Cyan)
        Dim Colorback As New DiffuseMaterial(Brushes.Red)

        Rectangle.Geometry = Resille '_Cube _
        '(New Point3D(-0.5, -0.5, -0.5), 1, 1, 1)
        Rectangle.Material = Color
        Rectangle.BackMaterial = Colorback
        Volume.Content = Rectangle
        Essai.Children.Add(Volume)

        Return Essai
    End Function


    ''' <summary>
    ''' lie trois curseurs (Scroll3D) et un Viewport.
    ''' </summary>
    ''' <remarks></remarks>
    Public Class Plateau3D
        Friend Vision As Viewport3D
        Friend WithEvents Pupitre As New Scroll3D

        Dim Origine As New Point3D(0, 0, 0)
        Dim Eloignement As Integer = 1
        Dim Latitude As Integer = 0
        Dim Longitude As Integer = 0


        Friend Sub ValueChanged() Handles Pupitre.ValueChanged '(ByVal NewValue As Point3D)
            Dim Cam As PerspectiveCamera = Vision.Camera
            REM ' Position de la caméra.
            Dim Position_Camera As Point3D = Euclide(Pupitre.Hbar.Value, Pupitre.Vbar.Value, Pupitre.Zbar.Value)
            Cam.Position = New Point3D(Position_Camera.X, Position_Camera.Y, Position_Camera.Z)
            Cam.LookDirection = New Vector3D(Origine.X - Position_Camera.X, _
                                             Origine.Y - Position_Camera.Y, _
                                             Origine.Z - Position_Camera.Z)
        End Sub

        Friend Sub New(ByVal Filet As MeshGeometry3D)
            Vision = Maille_Test(Filet)
            Pupitre.Panneau.Children.Add(Vision)
            Dim Matrice As Matrix3D = Vision.Camera.Transform.Value
            ValueChanged()
        End Sub
    End Class


    ''' <summary>
    ''' Scrolls circulaires et éloignement.
    ''' </summary>
    ''' <remarks>User control composé de trois scrollBars</remarks>
    Public Class Scroll3D

        Friend Panneau As New Grid
        Event ValueChanged() '(ByVal NewValue As Media3D.Point3D)

        'Rotation Horizontale
        Friend WithEvents Hbar As New Primitives.ScrollBar With { _
        .ToolTip = "Latitude", _
           .Orientation = Orientation.Horizontal, _
        .Margin = New Thickness(0, 180, 0, 0), _
            .Minimum = -90, _
            .Maximum = 90, _
            .LargeChange = 10, _
            .Value = 0}

        'Rotation Verticale
        Friend WithEvents Vbar As New Primitives.ScrollBar With { _
         .ToolTip = "Longitude", _
            .Orientation = Orientation.Horizontal, _
          .Margin = New Thickness(0, 210, 0, 0), _
             .Minimum = 0, _
             .Maximum = 24, _
          .LargeChange = 3, _
             .Value = 12}

        Friend WithEvents Zbar As New Primitives.ScrollBar With { _
         .ToolTip = "Eloignement", _
            .Orientation = Orientation.Horizontal, _
          .Margin = New Thickness(0, 240, 0, 0), _
            .Minimum = 5, _
             .Maximum = 10, _
             .LargeChange = 1, _
             .Value = 5} 'Min

        Friend Sub New()
            Panneau.Children.Add(Hbar)
            Panneau.Children.Add(Vbar)
            Panneau.Children.Add(Zbar)
        End Sub

        Friend Sub HBar_VC(ByVal sender As Object, _
                ByVal e As RoutedPropertyChangedEventArgs(Of Double)) _
                Handles Hbar.ValueChanged
            RaiseEvent ValueChanged() '(New Media3D.Point3D(e.NewValue, 0, 0))
        End Sub
        Friend Sub VBar_VC(ByVal sender As Object, _
                ByVal e As RoutedPropertyChangedEventArgs(Of Double)) _
                Handles Vbar.ValueChanged
            RaiseEvent ValueChanged() '(New Media3D.Point3D(0, e.NewValue, 0))
        End Sub
        Friend Sub ZBar_VC(ByVal sender As Object, _
                 ByVal e As RoutedPropertyChangedEventArgs(Of Double)) _
                 Handles Zbar.ValueChanged
            RaiseEvent ValueChanged() '(New Media3D.Point3D(0, 0, e.NewValue))
        End Sub

    End Class

    Function Euclide(ByVal Longitude As Integer, _
                  ByVal Latitude As Integer, _
                  ByVal Eloignement As Integer, _
                     Optional ByVal OrigineX As Integer = 0, _
                     Optional ByVal OrigineY As Integer = 0, _
                     Optional ByVal OrigineZ As Integer = 0)

        Dim P As New Point3D(Eloignement * (Math.Cos(Longitude) * Math.Cos(Latitude) + OrigineX), _
                             Eloignement * (Math.Sin(Longitude) + OrigineY), _
                             Eloignement * (Math.Cos(Longitude) * Math.Sin(Latitude) + OrigineZ))
        Return P
    End Function


End Module






 Sources du même auteur

Source avec Zip Source avec une capture Source .NET (Dotnet) SCROLL CONTROL USER POUR DÉROULER LES CONTROLES ET ENREGISTR...
Source avec Zip Source avec une capture Source .NET (Dotnet) CUBASIC, BASE DE PROGRAMATION DE LA TRI-D.
Source avec Zip Source avec une capture Source .NET (Dotnet) RETANGLE DE PETZOL
Source avec Zip Source avec une capture Source .NET (Dotnet) VIEWDOC VEILLE SUR LES ARTICLES

 Sources de la même categorie

Source avec Zip Source avec une capture PROGRESSE BAR STYLE FACEBOOK par radicalc3d
Source avec Zip Source avec une capture Source .NET (Dotnet) DESSINER UNE FORME SUR UNE IMAGE par Le Pivert
Source avec Zip Source avec une capture CALCUL DE LA DISTANCE ENTRE UN POINT ET LES ÉLÉMENTS D'UNE M... par daniekatual
Source avec Zip Source avec une capture Source .NET (Dotnet) TEXTURE D'IMAGE SUR UNE IMAGE par Le Pivert
Source avec Zip Source avec une capture Source .NET (Dotnet) COMPOSITAGE D'IMAGES (PETITE APPLI DE DÉMO) par Blodox

 Sources en rapport avec celle ci

REPOSITIONNER UNE SÉLECTION DANS UNE FENÊTRE WORD par pjouv
Source avec Zip UTILISATION DE LA MOLETTE DE LA SOURIS AVEC LE CONTRÔLE DBGR... par jacques13
Source avec Zip Source avec une capture UTILISER LA CAMERA POUR DIRECTX par zulrigh
Source avec Zip Source avec une capture ADAPTER UNE PICTURE BOX À DES COORDONNÉES par Flocreate
Source avec Zip Source avec une capture GESTION DE LA POSITION DE LA SOURIS par Dav76df

Commentaires et avis

Aucun commentaire pour le moment.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Détection Position X Y [ par alex2100 ] Bonjour à tous,Bon voici mon probleme, Mon patron ma demander de concevoir des cameras de surveillance. J'ai fait ma plaquette electronique connecter Garder la position du scroll d'un datagrid [ par diablot2 ] Bonjour je d&#233;veloppe une application web en asp.net vb.net et mon probl&#232;me est que j'ai un datagrid avec un scrollbar&nbsp;et que lors du cl Sauvegarder la position du scroll d'un datagrid [ par diablot2 ] Bonjour je d&#233;veloppe une application web en asp.net vb.net et mon probl&#232;me est que j'ai un datagrid avec un scrollbar&nbsp;et que lors du cl Sauvegarder la position du scroll d'un datagrid [ par diablot2 ] Bonjour je d&#233;veloppe une application web en asp.net vb.net et mon probl&#232;me est que j'ai un datagrid avec un scrollbar&nbsp;et que lors du cl FolderBrowserDialog1 (position scroll sur le dossier) [ par MiciM ] Salut ! J'utilise le FolderBrowserDialog1 pour rechercher un dossier afin d'afficher le contenu dans une listbox. Tout marche bien sauf que le FolderB VB.Net Panel AutoScroll D.finir une position [ par JeffC1977 ] Salut...J'utilise un Panel et j'ai mis un PictureBox à l'intérieur du Panel.J'ai mis AutoScroll à True car monPictureBox est plus gros que mon Panel.C Position d'affichage MessageBox [ par Marneus73 ] Bonjour à tousEst-il possible de changer la position d'affichage d'une MessageBox ? Par exemple au lieu de l'afficher au milieu de l'écran, la mettre Position de ScrollBars [ par Marneus73 ] Bonjour à tous,Est il possible d'empecher un utilisateur de cliquer sur un bouton tant qu'il n'a pas lu tout le texte contenu dans une RichtextBox ? A [Probleme] - Bouton renvoyant une donnée dans une case texte. [ par telodoo ] Bonjour,Je souhaite faire un programme d'apprentissage a la strategie du petit tapis au Poker Texas Hold'em. Voici comment se presente celui-ci :<br / Obtenir la position du curseur à l'écran ? [ par Arnal88 ] Bonjour,Je travaille sur un programme en VB2005 qui possède une NotifyIcon dans la barre des tâches.Lorsque je clique sur l'icône, je fais apparaître


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2013
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,718 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales