C# Quaternionen an Objekt in XAML

OP #5454756
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?

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.