Cubasic, base de programation de la tri-d.

Description

Ce programme affiche des cubes applatis sur l'écran. Je l'aurais mis volontier dans les didacticiels pour débuter avec la tri-D, mais je préfère me consacrer à remplir l'espace autrement.

Source / Exemple :


Imports System.Windows.Media.Media3D

Module Main
    Dim Toile As New Window
    Dim Dock As New DockPanel
    Dim test As New EssaiRectangle
    Dim Appli As New Application()
    Sub Main()
        Toile.Content = Dock
        Dock.Children.Add(test.Essai)
        Appli.Run(Toile)
    End Sub

    Public Class EssaiRectangle

        Public Essai As New Viewport3D
        Public Cam As New PerspectiveCamera
        Public Lumiere As New AmbientLight(Colors.White)
        Public Eclairage As New ModelVisual3D
        Public Volume As New ModelVisual3D

        Public Rectangle As New GeometryModel3D
        Public Color As New DiffuseMaterial(Brushes.Cyan)
        Public Colorback As New DiffuseMaterial(Brushes.Red)

        'Public Mailles As New MeshGeometry3D

        Dim A As New Point3D(0, 1, -4)
        Dim B As New Point3D(0, 0, -4)
        Dim C As New Point3D(0, 1, 0)
        Dim D As New Point3D(0, 0, 0)

        Friend Sub New()

            Eclairage.Content = Lumiere
            With Cam
                .Position = New Point3D(-1, 1, 6)
                .LookDirection = New Vector3D(0, 0, -4)
                .UpDirection = New Vector3D(0, 1, 0)
                .FieldOfView = 45
            End With
          
            Dim Jeton As New Brique(Auquart)
            Rectangle.Geometry = Jeton.Resille

            Rectangle.Material = Color
            Rectangle.BackMaterial = Colorback
            Volume.Content = Rectangle

            Essai.Camera = Cam
            Essai.Children.Add(Eclairage)
            Essai.Children.Add(Volume)
        End Sub
    End Class

    Friend Auquart As New Point3D(-0.5, -0.5, -0.5)
    ''' <summary>Construction Orthogonale</summary>
    Friend Class Brique
        Friend Pos As Point3D
        Friend Logr As Integer
        Friend Haut As Integer
        Friend Larg As Integer

        Friend Sub New(ByVal Position As Point3D, _
                       Optional ByVal Longueur As Integer = 1, _
                       Optional ByVal Largeur As Integer = 1, _
                       Optional ByVal Hauteur As Integer = 1)
            Pos = Auquart : Logr = Longueur : Larg = Largeur : Haut = Hauteur
        End Sub

        Friend Function Resille() As MeshGeometry3D
            'Face inférieure
            Dim Pos_1 As New Point3D(Pos.X, Pos.Y, Pos.Z + Larg)
            Dim Pos_2 As New Point3D(Pos.X + Logr, Pos.Y, Pos.Z)
            Dim Pos_3 As New Point3D(Pos.X + Logr, Pos.Y, Pos.Z + Larg)

            'Face supérieure
            Dim Pos_4 As New Point3D(Pos.X, Pos.Y + Haut, Pos.Z)
            Dim Pos_5 As New Point3D(Pos.X + Logr, Pos.Y + Haut, Pos.Z)
            Dim Pos_6 As New Point3D(Pos.X, Pos.Y + Haut, Pos.Z + Larg)
            Dim Pos_7 As New Point3D(Pos.X + Logr, Pos.Y + Haut, Pos.Z + Larg)
            '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

    End Class

End Module

Conclusion :


Après le rectangle, c'était trop tentant de passer tout de suite au cube. Je m'engage à amputer toutes les erreurs grotesques de ce programme si ça l'empêche pas d'afficher quelque chose et vous invite à m'envoyer les commentaires. je réléchis à la façon qu'on pourrait imbriquer des volumes à quatre faces triangulaires pour remplir l'espace avec autre chose que des ellipses. C'est comme raisonner en Booléen à trois état.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.