c# - C# 在 WPF 中的 3D 立方体上使用四元数
问题描述
我正在使用将四元数发送到我的 PC 的传感器。现在我想旋转在我的应用程序上创建的立方体。
<Viewport3D Name="viewport3D1" Margin="568,-85,-104,176" RenderTransformOrigin="0.317,0.482">
<Viewport3D.Triggers>
<EventTrigger RoutedEvent="Viewport3D.Loaded">
<BeginStoryboard>
<Storyboard>
<QuaternionAnimation Storyboard.TargetName="myQuaternionRotation3D" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Viewport3D.Triggers>
<Viewport3D.Camera>
<PerspectiveCamera x:Name="camMain" Position="6 5 4" LookDirection="-6 -5 -4">
</PerspectiveCamera>
</Viewport3D.Camera>
<ModelVisual3D>
<ModelVisual3D.Content>
<DirectionalLight x:Name="dirLightMain" Direction="-1,-1,-1">
</DirectionalLight>
</ModelVisual3D.Content>
</ModelVisual3D>
<ModelVisual3D>
<ModelVisual3D.Content>
<GeometryModel3D>
<GeometryModel3D.Geometry>
<MeshGeometry3D x:Name="meshMain"
Positions="0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 1 0 1 0 1 1 1 1 1"
TriangleIndices="2 3 1 2 1 0 7 1 3 7 5 1 6 5 7 6 4 5 6 2 0 2 0 4 2 7 3 2 6 7 0 1 5 0 5 4">
</MeshGeometry3D>
</GeometryModel3D.Geometry>
<GeometryModel3D.Material>
<DiffuseMaterial x:Name="matDiffuseMain">
<DiffuseMaterial.Brush>
<SolidColorBrush Color="Red"/>
</DiffuseMaterial.Brush>
</DiffuseMaterial>
</GeometryModel3D.Material>
</GeometryModel3D>
</ModelVisual3D.Content>
</ModelVisual3D>
</Viewport3D>
我在互联网上找到了一些示例,但它们不起作用。我添加了这样的 QuaternionAnimation 函数。
private void cube_Rotation(string[] text) {
try
{
Double WValue = System.Convert.ToDouble(text[0]);
Double XValue = System.Convert.ToDouble(text[1]);
Double YValue = System.Convert.ToDouble(text[2]);
Double ZValue = System.Convert.ToDouble(text[3]);
endQuaternion = new Quaternion(XValue, YValue, ZValue, WValue);
}
catch
{
MessageBox.Show("Set non-null values for the quaternion.");
}
myQuaternionRotation3D = new QuaternionRotation3D(endQuaternion);
myRotateTransform3D.Rotation = myQuaternionRotation3D;
//update matrix display
qrotationMatrix3D = myRotateTransform3D.Value;
}
此外,初始化无法正常工作。有人对在 WPF 中的 3D 立方体上使用四元数有任何想法或示例吗?如果有人可以帮助我,我会很高兴。
解决方案
推荐阅读
- c - 这个指针是不是越界了?
- javascript - 在 FTL 中调用 java 类函数 - Apache
- icinga2 - Icinga2 导航问题
- arrays - 保存不断附加的自定义对象数组
- excel - Excel IRR:我可以使用它来引用单元格和固定数字的组合吗?内部收益率({-10,11+A2})
- java - Spring jpa @OneToMany one direction always null
- javascript - 返回函数不返回任何内容
- r - 从表中的多行中提取一个范围并合并为一个
- php - 数组函数产生错误
- javascript - 如何设置(2)js数据表的十进制值