亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mmaths.bas

?? 游戲常見三為場景
?? BAS
字號:
Attribute VB_Name = "mMaths"
Option Explicit

' Declare local variables ...

    Private P_dCalculatorMatrix As D3DMATRIX    ' Matrix used for calculations

' MIDENTITY: Resets a Matrix to Identity
Public Sub MIdentity(dMatrix As D3DMATRIX)
    dMatrix.v_11 = 1
    dMatrix.v_12 = 0
    dMatrix.v_13 = 0
    dMatrix.v_14 = 0
    dMatrix.v_21 = 0
    dMatrix.v_22 = 1
    dMatrix.v_23 = 0
    dMatrix.v_24 = 0
    dMatrix.v_31 = 0
    dMatrix.v_32 = 0
    dMatrix.v_33 = 1
    dMatrix.v_34 = 0
    dMatrix.v_41 = 0
    dMatrix.v_42 = 0
    dMatrix.v_43 = 0
    dMatrix.v_44 = 1
End Sub

' MTRANSLATE: Translates a matrix along the axis
Public Function MTranslate(dSource As D3DMATRIX, ByVal nValueX As Single, ByVal nValueY As Single, ByVal nValueZ As Single) As D3DMATRIX

    ' Reset to identity matrix
    MIdentity P_dCalculatorMatrix
    
    ' Add calculations
    With P_dCalculatorMatrix
        .v_41 = nValueX
        .v_42 = nValueY
        .v_43 = nValueZ
    End With

    ' Apply transformations
    dSource = MMultiply(P_dCalculatorMatrix, dSource)

    ' Return result
    MTranslate = dSource
    
End Function

' MSCALE: Scales a matrix along the axis
Public Function MScale(dSource As D3DMATRIX, ByVal nValueX As Single, ByVal nValueY As Single, ByVal nValueZ As Single) As D3DMATRIX

    ' Reset to identity matrix
    MIdentity P_dCalculatorMatrix
    
    ' Add calculations
    With P_dCalculatorMatrix
        .v_11 = nValueX
        .v_22 = nValueY
        .v_33 = nValueZ
    End With
    
    ' Apply transformations
    dSource = MMultiply(P_dCalculatorMatrix, dSource)
    
    ' Return result
    MScale = dSource
    
End Function

' MROTATE: Rotates a matrix around the axis
Public Function MRotate(dSource As D3DMATRIX, ByVal nValueX As Single, ByVal nValueY As Single, ByVal nValueZ As Single) As D3DMATRIX

    ' Setup local variables ...
        
        Dim L_nCos As Single        ' Holds cosine value of angle
        Dim L_nSin As Single        ' Holds sine value of angle
        
    ' Do rotation around X-Axis ...
        If nValueX <> 0 Then
        
            ' Reset caluculator to identity matrix
            MIdentity P_dCalculatorMatrix
                
            ' Get angle values
            L_nCos = Cos(nValueX * PIFactor)
            L_nSin = Sin(nValueX * PIFactor)
            
            ' Add transformations
            With P_dCalculatorMatrix
                .v_22 = L_nCos
                .v_33 = L_nCos
                .v_23 = -L_nSin
                .v_32 = L_nSin
            End With
            
            ' Apply transformations
            dSource = MMultiply(P_dCalculatorMatrix, dSource)
            
        End If
    
    ' Do rotation around Y-Axis ...
        If nValueY <> 0 Then
        
            ' Reset caluculator to identity matrix
            MIdentity P_dCalculatorMatrix
            
            ' Get angle values
            L_nCos = Cos(nValueY * PIFactor)
            L_nSin = Sin(nValueY * PIFactor)
            
            ' Add transformations
            With P_dCalculatorMatrix
                .v_11 = L_nCos
                .v_33 = L_nCos
                .v_13 = L_nSin
                .v_31 = -L_nSin
            End With
            
            ' Apply transformations
            dSource = MMultiply(P_dCalculatorMatrix, dSource)
            
        End If
        
    ' Do rotation around Z-Axis ...
        If nValueZ <> 0 Then
        
            ' Reset caluculator to identity matrix
            MIdentity P_dCalculatorMatrix
            
            ' Get angle values
            L_nCos = Cos(nValueZ * PIFactor)
            L_nSin = Sin(nValueZ * PIFactor)
            
            ' Add transformations
            With P_dCalculatorMatrix
                .v_11 = L_nCos
                .v_22 = L_nCos
                .v_12 = -L_nSin
                .v_21 = L_nSin
            End With
            
            ' Apply transformations
            dSource = MMultiply(P_dCalculatorMatrix, dSource)
            
        End If
        
    ' Return result ...
        MRotate = dSource
    
End Function

' MMULTIPLY: Multiplies two matrices
Public Function MMultiply(dM1 As D3DMATRIX, dM2 As D3DMATRIX) As D3DMATRIX

    ' Calculate multiply ...
        With MMultiply
            
            .v_11 = dM1.v_11 * dM2.v_11 + dM1.v_21 * dM2.v_12 + dM1.v_31 * dM2.v_13 + dM1.v_41 * dM2.v_14
            .v_21 = dM1.v_11 * dM2.v_21 + dM1.v_21 * dM2.v_22 + dM1.v_31 * dM2.v_23 + dM1.v_41 * dM2.v_24
            .v_31 = dM1.v_11 * dM2.v_31 + dM1.v_21 * dM2.v_32 + dM1.v_31 * dM2.v_33 + dM1.v_41 * dM2.v_34
            .v_41 = dM1.v_11 * dM2.v_41 + dM1.v_21 * dM2.v_42 + dM1.v_31 * dM2.v_43 + dM1.v_41 * dM2.v_44
    
            .v_12 = dM1.v_12 * dM2.v_11 + dM1.v_22 * dM2.v_12 + dM1.v_32 * dM2.v_13 + dM1.v_42 * dM2.v_14
            .v_22 = dM1.v_12 * dM2.v_21 + dM1.v_22 * dM2.v_22 + dM1.v_32 * dM2.v_23 + dM1.v_42 * dM2.v_24
            .v_32 = dM1.v_12 * dM2.v_31 + dM1.v_22 * dM2.v_32 + dM1.v_32 * dM2.v_33 + dM1.v_42 * dM2.v_34
            .v_42 = dM1.v_12 * dM2.v_41 + dM1.v_22 * dM2.v_42 + dM1.v_32 * dM2.v_43 + dM1.v_42 * dM2.v_44
    
            .v_13 = dM1.v_13 * dM2.v_11 + dM1.v_23 * dM2.v_12 + dM1.v_33 * dM2.v_13 + dM1.v_43 * dM2.v_14
            .v_23 = dM1.v_13 * dM2.v_21 + dM1.v_23 * dM2.v_22 + dM1.v_33 * dM2.v_23 + dM1.v_43 * dM2.v_24
            .v_33 = dM1.v_13 * dM2.v_31 + dM1.v_23 * dM2.v_32 + dM1.v_33 * dM2.v_33 + dM1.v_43 * dM2.v_34
            .v_43 = dM1.v_13 * dM2.v_41 + dM1.v_23 * dM2.v_42 + dM1.v_33 * dM2.v_43 + dM1.v_43 * dM2.v_44
    
            .v_14 = dM1.v_14 * dM2.v_11 + dM1.v_24 * dM2.v_12 + dM1.v_34 * dM2.v_13 + dM1.v_44 * dM2.v_14
            .v_24 = dM1.v_14 * dM2.v_21 + dM1.v_24 * dM2.v_22 + dM1.v_34 * dM2.v_23 + dM1.v_44 * dM2.v_24
            .v_34 = dM1.v_14 * dM2.v_31 + dM1.v_24 * dM2.v_32 + dM1.v_34 * dM2.v_33 + dM1.v_44 * dM2.v_34
            .v_44 = dM1.v_14 * dM2.v_41 + dM1.v_24 * dM2.v_42 + dM1.v_34 * dM2.v_43 + dM1.v_44 * dM2.v_44
    
        End With
            
    
End Function

' MDEBUG: Print a given matrix in the debug window
Public Sub MDebug(dMatrix As D3DMATRIX)

    With dMatrix
        Debug.Print Format(.v_11, "0.00000") + " " + Format(.v_12, "0.00000") + " " + Format(.v_13, "0.00000") + " " + Format(.v_14, "0.00000")
        Debug.Print Format(.v_21, "0.00000") + " " + Format(.v_22, "0.00000") + " " + Format(.v_23, "0.00000") + " " + Format(.v_24, "0.00000")
        Debug.Print Format(.v_31, "0.00000") + " " + Format(.v_32, "0.00000") + " " + Format(.v_33, "0.00000") + " " + Format(.v_34, "0.00000")
        Debug.Print Format(.v_41, "0.00000") + " " + Format(.v_42, "0.00000") + " " + Format(.v_43, "0.00000") + " " + Format(.v_44, "0.00000")
    End With
    
End Sub

' MLOOKAT: Calculates a transformation matrix for the view
Public Function MLookAt(dCamPosition As D3DVECTOR, dCamLookAt As D3DVECTOR) As D3DMATRIX

    ' Setup local variables ...
    
        Dim L_dVU As D3DVECTOR
        Dim L_dVR As D3DVECTOR
        Dim L_dVView As D3DVECTOR
        Dim L_dVDefaultUp As D3DVECTOR
        
        ' Set world up vector (y-Axis is up)
        L_dVDefaultUp.Y = -1
        
    ' Calculate camera transform ...
    
        ' Load result with identity matrix
        MIdentity MLookAt
        
        ' Calculate vector from position to look-at-point
        L_dVView = VNormalize(VSubtract(dCamLookAt, dCamPosition))
        
        ' Calculate right component of view vector
        L_dVR = VCrossProduct(L_dVDefaultUp, L_dVView)
        
        ' Calculate up component of view vector
        L_dVU = VCrossProduct(L_dVView, L_dVR)
        
        ' Normalize right and up
        L_dVR = VNormalize(L_dVR)
        L_dVU = VNormalize(L_dVU)
        
        ' Compose camera matrix
        With MLookAt
            .v_11 = L_dVR.X
            .v_21 = L_dVR.Y
            .v_31 = L_dVR.z
            .v_12 = L_dVU.X
            .v_22 = L_dVU.Y
            .v_32 = L_dVU.z
            .v_13 = L_dVView.X
            .v_23 = L_dVView.Y
            .v_33 = L_dVView.z
            .v_41 = -VDotProduct(L_dVR, dCamPosition)
            .v_42 = -VDotProduct(L_dVU, dCamPosition)
            .v_43 = -VDotProduct(L_dVView, dCamPosition)
        End With
    
End Function

' MPROJECT: Calculates a transformation matrix for the projection
Public Function MProject(nNear As Single, nFar As Single, nAngleFOV As Single) As D3DMATRIX

    ' Setup local variables ...
        Dim nC As Single
        Dim nS As Single
        Dim nQ As Single
        
    ' Calculate matrix ...
    
        nC = Cos(nAngleFOV * 0.5 * PIFactor)
        nS = Sin(nAngleFOV * 0.5 * PIFactor)
        nQ = nS / (1 - nNear / nFar)

        MIdentity MProject
        
        With MProject
            .v_11 = nC
            .v_22 = nC
            .v_33 = nQ
            .v_43 = -nQ * nNear
            .v_34 = nS
            .v_44 = 0
        End With

End Function

' VNORMALIZE: Returns normalized vector
Public Function VNormalize(dVector As D3DVECTOR) As D3DVECTOR
    VNormalize = dVector
    D3DRMVectorNormalize VNormalize
End Function

' VREFLECT: Calculates reflection of a vector upon a normal
Public Function VReflect(dRay As D3DVECTOR, dReflector As D3DVECTOR) As D3DVECTOR
    D3DRMVectorReflect VReflect, dRay, dReflector
End Function

' VCROSSPRODUCT: Calculates the cross product of two vectors
Public Function VCrossProduct(dV1 As D3DVECTOR, dV2 As D3DVECTOR) As D3DVECTOR
    D3DRMVectorCrossProduct VCrossProduct, dV1, dV2
End Function

' VDOTPRODUCT: Calculates the dot product of two vectors
Public Function VDotProduct(dV1 As D3DVECTOR, dV2 As D3DVECTOR) As Single
     VDotProduct = D3DRMVectorDotProduct(dV1, dV2)
End Function

' VSUBTRACT: Calculates the subtraction of V1 and V2
Public Function VSubtract(dV1 As D3DVECTOR, dV2 As D3DVECTOR) As D3DVECTOR
    VSubtract.X = dV1.X - dV2.X
    VSubtract.Y = dV1.Y - dV2.Y
    VSubtract.z = dV1.z - dV2.z
End Function

' VADD: Calculates the addition of V1 and V2
Public Function VAdd(dV1 As D3DVECTOR, dV2 As D3DVECTOR) As D3DVECTOR
    VAdd.X = dV1.X + dV2.X
    VAdd.Y = dV1.Y + dV2.Y
    VAdd.z = dV1.z + dV2.z
End Function

' VROTATE: Rotates a vector
Public Function VRotate(dV As D3DVECTOR, ByVal nValueX As Single, ByVal nValueY As Single, ByVal nValueZ As Single) As D3DVECTOR
    
    ' Setup local variables...
        Dim dVDir As D3DVECTOR  ' Holds axis for rotation
    
    ' Do rotations ...
        
        ' Rotate aroun X axis
        If nValueX <> 0 Then
            dVDir.X = 1
            dVDir.Y = 0
            dVDir.z = 0
            D3DRMVectorRotate VRotate, dV, dVDir, nValueX * PIFactor
        End If
    
        ' Rotate aroun Y axis
        If nValueY <> 0 Then
            dVDir.X = 0
            dVDir.Y = 1
            dVDir.z = 0
            D3DRMVectorRotate VRotate, dV, dVDir, nValueY * PIFactor
        End If
    
        ' Rotate aroun Z axis
        If nValueZ <> 0 Then
            dVDir.X = 0
            dVDir.Y = 0
            dVDir.z = 1
            D3DRMVectorRotate VRotate, dV, dVDir, nValueZ * PIFactor
        End If
    
End Function



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品一二三| 蜜臂av日日欢夜夜爽一区| 欧美日韩一区久久| 老司机精品视频在线| 国产欧美日本一区二区三区| 99久久精品国产麻豆演员表| 亚洲图片自拍偷拍| www一区二区| 色婷婷久久久综合中文字幕| 亚洲激情av在线| 精品久久久久99| 日本午夜一本久久久综合| 国产婷婷一区二区| 欧美区一区二区三区| 国产精品一区二区久久精品爱涩 | 丝袜亚洲另类欧美| 中文字幕欧美激情| 欧美日韩综合在线免费观看| 美女在线一区二区| 亚洲欧美视频在线观看视频| 日韩一级成人av| 99久久精品99国产精品| 午夜久久电影网| 国产精品久久久久影视| 日韩一级视频免费观看在线| av在线播放成人| 国产精品黄色在线观看 | 欧美成人一区二区三区在线观看| 成人av高清在线| 日韩一区欧美二区| 亚洲精品一卡二卡| 国产日韩欧美一区二区三区综合 | 欧美综合一区二区三区| 丰满亚洲少妇av| 蜜桃久久av一区| 亚洲一区二区精品3399| 国产视频一区二区三区在线观看| 欧美日本一道本| 在线亚洲一区二区| av影院午夜一区| 国产精品综合一区二区三区| 日本亚洲天堂网| 亚洲妇女屁股眼交7| 中文字幕一区在线| 国产欧美精品国产国产专区| 日韩一区二区在线观看视频 | 欧美a一区二区| 亚洲一区二区三区小说| 亚洲同性gay激情无套| 国产欧美1区2区3区| 337p粉嫩大胆噜噜噜噜噜91av| 91精品婷婷国产综合久久性色| 成人av资源站| 成人午夜看片网址| 国产精品一级在线| 国产一区二区不卡老阿姨| 久久精品噜噜噜成人av农村| 三级在线观看一区二区| 亚洲国产视频直播| 亚洲欧美另类久久久精品| 国产精品乱人伦一区二区| 国产精品热久久久久夜色精品三区| 欧美mv和日韩mv的网站| 91精品久久久久久久91蜜桃| 欧美三级乱人伦电影| 欧美日韩mp4| 91免费精品国自产拍在线不卡| 99久久精品情趣| 欧美在线观看18| 欧美日本国产一区| 日韩亚洲欧美成人一区| 欧美mv日韩mv国产网站app| 欧美精品免费视频| 91精品国产综合久久久久久漫画 | 亚洲精品视频免费看| 亚洲成人午夜影院| 久久99精品久久久久久| 懂色av一区二区三区免费观看| 91色porny| 欧美一区二区日韩| 中文字幕亚洲一区二区av在线| 亚洲高清免费在线| 国产夫妻精品视频| 精品视频免费在线| 久久精品一区二区三区av| 亚洲精品中文字幕乱码三区| 蜜臀av国产精品久久久久| 成人18视频日本| 欧美一个色资源| 亚洲人成网站影音先锋播放| 美腿丝袜亚洲三区| 色综合久久精品| 精品久久久久久久人人人人传媒 | 欧美一级日韩一级| 亚洲欧美在线aaa| 久草中文综合在线| 在线观看精品一区| 精品1区2区在线观看| 一区二区三区四区乱视频| 久久er99热精品一区二区| 色综合天天天天做夜夜夜夜做| 日韩欧美国产精品一区| 亚洲一区二区三区精品在线| 国产·精品毛片| 日韩写真欧美这视频| 亚洲人123区| 国产精品1区2区3区| 欧美绝品在线观看成人午夜影视| 国产欧美综合在线观看第十页| 丝袜亚洲另类丝袜在线| 91女神在线视频| 国产欧美精品一区二区三区四区| 日韩成人精品在线| 欧美日韩一级大片网址| 亚洲三级免费观看| 国产精品羞羞答答xxdd | 日本午夜精品一区二区三区电影| 成人亚洲精品久久久久软件| 日韩免费高清av| 亚洲午夜私人影院| 99re热这里只有精品免费视频| 欧美激情综合在线| 国产综合成人久久大片91| 91精品国产色综合久久| 一级做a爱片久久| 91小视频在线| 国产精品三级av在线播放| 国内精品伊人久久久久av影院| 欧美一区二区三区在线看| 亚洲综合色视频| 色综合久久中文综合久久牛| 国产精品久99| 91视频观看视频| 亚洲日本在线视频观看| 成人97人人超碰人人99| 国产精品视频在线看| 国产盗摄女厕一区二区三区 | 欧美一卡二卡三卡| 秋霞电影网一区二区| 91精品免费观看| 麻豆视频观看网址久久| 日韩视频在线一区二区| 久久福利视频一区二区| 久久综合一区二区| 国产精品中文有码| 国产精品网站导航| 91网站在线观看视频| 亚洲久草在线视频| 欧美体内she精视频| 午夜电影一区二区| 日韩欧美自拍偷拍| 国产激情精品久久久第一区二区 | 日本欧美在线观看| 日韩三级高清在线| 国产一区二区三区精品欧美日韩一区二区三区 | 国产婷婷色一区二区三区在线| 成人一区二区三区视频| 中文字幕一区不卡| 欧美日韩午夜影院| 免费的成人av| 国产亚洲欧美在线| 96av麻豆蜜桃一区二区| 亚洲一级电影视频| 欧美一区二区三区视频| 国产乱码精品一区二区三区av | 在线精品视频免费观看| 亚洲成a人片在线不卡一二三区| 欧美一个色资源| 国产成人av一区二区三区在线观看| 亚洲国产高清不卡| 在线精品视频一区二区| 麻豆极品一区二区三区| 国产精品丝袜在线| 欧美日韩免费观看一区二区三区| 蜜臀精品久久久久久蜜臀| 欧美国产欧美综合| 欧美亚洲国产一区二区三区| 激情五月播播久久久精品| 中文字幕中文字幕一区二区| 欧美日韩中文一区| 国模套图日韩精品一区二区| 国产精品电影院| 欧美一二三区精品| 不卡的av中国片| 免费观看91视频大全| 成人免费在线观看入口| 4438亚洲最大| 成a人片国产精品| 日韩激情一区二区| 国产精品热久久久久夜色精品三区 | 亚洲欧美综合色| 日韩精品一区二区三区在线| heyzo一本久久综合| 奇米影视在线99精品| 中文字幕一区二区在线观看| 欧美一级日韩不卡播放免费| 成人h动漫精品一区二| 久久成人免费网站| 亚洲国产精品天堂| **欧美大码日韩|