quddusaliquddus
Active member
- Joined
- Nov 20, 2007
- Messages
- 25
- Programming Experience
- Beginner
Hi . I am trying to modify the following code such that it continuously dispalys the distance between two ModelVisual3D's in the same Viewport while one of the 3D object is moving towards the other.
ANY help/tips etc ... is appreciated.
ANY help/tips etc ... is appreciated.
VB.NET:
Imports System
Imports System.IO
Imports System.Net
Imports System.Windows
Imports System.Windows.Controls
Imports System.Windows.Data
Imports System.Windows.Media
Imports System.Windows.Media.Animation
Imports System.Windows.Navigation
Imports System.Windows.Media.Media3D
Imports System.Windows.Markup
Imports System.Windows.Resources
Imports System.Timers
Partial Public Class Window1
Dim Distance As Double
Public Sub New()
MyBase.New()
Me.InitializeComponent()
' Insert code required on object creation below this point.
End Sub
Private Sub V_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Input.MouseButtonEventArgs) Handles V.MouseDown
Dim viewPort As Viewport3D = TryCast(sender, Viewport3D)
Dim mousePosition As Point = e.GetPosition(viewPort)
Dim result As HitTestResult = VisualTreeHelper.HitTest(viewPort, mousePosition)
Dim extraCube As New ModelVisual3D()
'MessageBox.Show(result.VisualHit.ToString)
Dim rayResult As RayHitTestResult = TryCast(result, RayHitTestResult)
Dim intIndice As Integer
Dim rayMeshResult As RayMeshGeometry3DHitTestResult
If rayResult IsNot Nothing Then
rayMeshResult = TryCast(rayResult, RayMeshGeometry3DHitTestResult)
If rayMeshResult IsNot Nothing Then
extraCube = TryCast(rayMeshResult.VisualHit, ModelVisual3D)
intIndice = V.Children.IndexOf(extraCube)
End If
End If
'MessageBox.Show(intIndice)
Dim Px As Double = rayResult.PointHit.X
Dim Py As Double = rayResult.PointHit.Y
Dim Pz As Double = rayResult.PointHit.Z
Dim X As Double = DefaultGroup.Transform.Value.OffsetX
Dim Y As Double = DefaultGroup.Transform.Value.OffsetY
Dim Z As Double = DefaultGroup.Transform.Value.OffsetZ
Dim TT3DVector = New Vector3D(X, Y, Z)
Dim TT3D As New TranslateTransform3D(TT3DVector)
Dim daX As New DoubleAnimation(extraCube.Transform.Value.OffsetX + Px / 2, New Duration(TimeSpan.FromSeconds(0.5 * rayResult.DistanceToRayOrigin)))
TT3D.BeginAnimation(TranslateTransform3D.OffsetXProperty, daX)
Dim daY As New DoubleAnimation(extraCube.Transform.Value.OffsetY + Py / 2, New Duration(TimeSpan.FromSeconds(0.5 * rayResult.DistanceToRayOrigin)))
TT3D.BeginAnimation(TranslateTransform3D.OffsetYProperty, daY)
Dim daZ As New DoubleAnimation(extraCube.Transform.Value.OffsetZ + Pz / 2, New Duration(TimeSpan.FromSeconds(0.5 * rayResult.DistanceToRayOrigin)))
TT3D.BeginAnimation(TranslateTransform3D.OffsetZProperty, daZ)
Dim tgroup As New Transform3DGroup()
tgroup.Children.Add(TT3D)
DefaultGroup.Transform = tgroup
End Sub
End Class