Forum: PC-Programmierung C# Quaternionen an Objekt in XAML


von Walt N. (belayason)


Lesenswert?

Guten Morgen,
ich habe mir in meiner Oberfläche einen Würfel erstellt den ich gerne 
mit den Quaternionen die ich von meinen Sensor bekomme, drehen lassen 
würde. Mein würfel sieht folgendermaßen aus.
1
<Viewport3D Margin="4,43,4,-17" MinHeight="200" MinWidth="200" Width="328">
2
        <Viewport3D.Children>
3
            <ModelVisual3D>
4
                <ModelVisual3D.Content>
5
6
                    <Model3DGroup x:Name="Cube">
7
                        <AmbientLight Color="Gray"/>
8
                        <DirectionalLight Color="Gray" Direction="1,-2,-3"/>
9
                        <DirectionalLight Color="Gray" Direction="-1,2,-3"/>
10
11
                        <GeometryModel3D x:Name="Vorne">
12
                            <GeometryModel3D.Material>
13
                                <DiffuseMaterial Brush="Blue"/>
14
                            </GeometryModel3D.Material>
15
                            <GeometryModel3D.Geometry>
16
                                <MeshGeometry3D Positions="1,1,1     -1,1,1  -1,-1,1     1,-1,1"
17
                                                            TriangleIndices="0 1 2 0 2 3"/>
18
                            </GeometryModel3D.Geometry>
19
                        </GeometryModel3D>
20
21
                        <GeometryModel3D x:Name="Hinten">
22
                            <GeometryModel3D.Material>
23
                                <DiffuseMaterial Brush="Cyan"/>
24
                            </GeometryModel3D.Material>
25
                            <GeometryModel3D.Geometry>
26
                                <MeshGeometry3D Positions="-1,-1,-1     -1,1,-1     1,1,-1      1,-1,-1 "
27
                                                            TriangleIndices="0 1 2 0 2 3"/>
28
                            </GeometryModel3D.Geometry>
29
                        </GeometryModel3D>
30
31
32
                        <GeometryModel3D x:Name="Oben">
33
                            <GeometryModel3D.Material>
34
                                <DiffuseMaterial Brush="Red"/>
35
                            </GeometryModel3D.Material>
36
                            <GeometryModel3D.Geometry>
37
                                <MeshGeometry3D Positions="1,1,-1    -1,1,-1     -1,1,1  1,1,1"
38
                                                           TriangleIndices="0 1 2 0 2 3"/>
39
                            </GeometryModel3D.Geometry>
40
                        </GeometryModel3D>
41
42
43
                        <GeometryModel3D x:Name="Unten">
44
                            <GeometryModel3D.Material>
45
                                <DiffuseMaterial Brush="Magenta"/>
46
                            </GeometryModel3D.Material>
47
                            <GeometryModel3D.Geometry>
48
                                <MeshGeometry3D Positions="-1,-1,1  1,-1,1      1,-1,-1     -1,-1,-1"
49
                                                           TriangleIndices="3 2 0 2 1 0"/>
50
                            </GeometryModel3D.Geometry>
51
                        </GeometryModel3D>
52
53
54
                        <GeometryModel3D x:Name="Rechts">
55
                            <GeometryModel3D.Material>
56
                                <DiffuseMaterial Brush="Green"/>
57
                            </GeometryModel3D.Material>
58
                            <GeometryModel3D.Geometry>
59
                                <MeshGeometry3D Positions="1,-1,1    1,-1,-1     1,1,-1  1,1,1"
60
                                                            TriangleIndices="0 1 2 0 2 3 "/>
61
                            </GeometryModel3D.Geometry>
62
                        </GeometryModel3D>
63
64
65
                        <GeometryModel3D x:Name="Links">
66
                            <GeometryModel3D.Material>
67
                                <DiffuseMaterial Brush="Yellow"/>
68
                            </GeometryModel3D.Material>
69
                            <GeometryModel3D.Geometry>
70
                                <MeshGeometry3D Positions="-1,-1,1      -1,1,1      -1,1,-1     -1,-1,-1"
71
                                                            TriangleIndices="0 1 2 0 2 3"/>
72
                            </GeometryModel3D.Geometry>
73
                        </GeometryModel3D>
74
75
                        <Model3DGroup.Transform>
76
                            <Transform3DGroup>
77
78
                                <RotateTransform3D>
79
                                    <RotateTransform3D.Rotation>
80
                                        <QuaternionRotation3D x:Name="myQuaternionRotation3D" Quaternion="{Binding Path=Quaternionen,Mode=OneWay,UpdateSourceTrigger=PropertyChanged}"  />
81
                                    </RotateTransform3D.Rotation>
82
                               </RotateTransform3D>
83
84
                            </Transform3DGroup>
85
                        </Model3DGroup.Transform>
86
                    </Model3DGroup>
87
88
                </ModelVisual3D.Content>
89
    </ModelVisual3D>
90
91
    <ModelVisual3D>
92
        <ModelVisual3D.Content>
93
            <DirectionalLight x:Name="dirLghtMain" Direction="-1,-0,-2" Color="Gray"></DirectionalLight>
94
        </ModelVisual3D.Content>
95
    </ModelVisual3D>
96
    </Viewport3D.Children>
97
    <Viewport3D.Camera>
98
        <PerspectiveCamera Position="2,4,6" LookDirection="-1,-2,-3" UpDirection="0,1,0" FieldOfView="60"></PerspectiveCamera>
99
    </Viewport3D.Camera>
100
    </Viewport3D>

Ich habe versucht in meinem code die Quaternionen auf diesen Würfel zu 
verbinden, leider ohne Erfolg.

1
 private void Quats (string[] text)
2
        {
3
            try
4
            {
5
                double r = Convert.ToDouble(text[0]);
6
                double x = Convert.ToDouble(text[1]);
7
                double y = Convert.ToDouble(text[2]);
8
                double z = Convert.ToDouble(text[3]);
9
10
                Quaternion endQuaternion = new Quaternion(r, x, y, z);
11
                myQuaternionRotation3D = new QuaternionRotation3D(endQuaternion);
12
            }
13
            catch(Exception)
14
            {
15
16
            } 
17
        }

Könnte mir jemand weiterhelfen?

: Verschoben durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.