如何动态修改AxisAngleRotation里的角度值?

luminos 2011-12-09 07:41:17
我想做一个能从串口里面读取传感器传入的现实单摆的角度,然后能在WPF上模拟的3D动画,目前已经做出了3D模型和简单动画,但是没法动态修改AxisAngleRotation3D里的Angle值,它只能简单地从From到To……求高人帮忙改改。程序如下~

假定我在C#里,传入的角度值是nowangle,目的就是想,让AxisAngleRotation3D的Angle值一直和nowangle保持一致,该怎么写呢?

C#代码:

public partial class MainWindow : Window
{
public double nowangle;
public Storyboard sb1 = new Storyboard();
public DoubleAnimation da1 = new DoubleAnimation();
public MainWindow()
{
this.InitializeComponent();
getanimation();
sb1.Begin();

}
private void getanimation() {
#region
da1.SetValue(Storyboard.TargetNameProperty, "rotation");
da1.SetValue(Storyboard.TargetPropertyProperty, new PropertyPath(AxisAngleRotation3D.AngleProperty));
da1.From = rotation.Angle;
da1.To += nowangle;
//da1.Duration = TimeSpan.FromSeconds(0.5);
//da1.AutoReverse = true;
//da1.RepeatBehavior = RepeatBehavior.Forever;
sb1.Children.Add(da1);
this.Resources.Add("Storyboard", sb1);
#endregion
}
}


XAML:

<Grid>
<Viewport3D ClipToBounds="False" Margin="56,0,62,13">
<Viewport3D.Camera>
<PerspectiveCamera FieldOfView="60" LookDirection="0,0,-230" Position="0,-80,230" UpDirection="0,1,0"/>
</Viewport3D.Camera>

<ModelVisual3D x:Name="World">

<ModelVisual3D.Transform>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D
x:Name="rotation"
Axis="0,0,1"
Angle="0"
/>
</RotateTransform3D.Rotation>
</RotateTransform3D>
</ModelVisual3D.Transform>

<ModelVisual3D x:Name="DirectionalLightContainer">
<ModelVisual3D.Content>
<DirectionalLight x:Name="DirectionalLight" Color="White" Direction="-120,-150,-230">
</DirectionalLight>
</ModelVisual3D.Content>
</ModelVisual3D>

<ModelVisual3D x:Name="RootGeometryContainer">

<ModelVisual3D x:Name="Sphere01">
<ModelVisual3D.Content>
<GeometryModel3D x:Name="DefaultMaterial" d:Bounds="-10,-110,-10,20,20,20">
<GeometryModel3D.Geometry>
<MeshGeometry3D Normals="..." TriangleIndices="..."/>
</GeometryModel3D.Geometry>
<GeometryModel3D.Material>
<DiffuseMaterial Brush="Red"/>
</GeometryModel3D.Material>
</GeometryModel3D>
</ModelVisual3D.Content>
</ModelVisual3D>

<ModelVisual3D x:Name="Cylinder01">
<ModelVisual3D.Content>
<GeometryModel3D x:Name="DefaultMaterial1" d:Bounds="-0.5,-100,-0.49210000038147,1,100,0.984800010919571">
<GeometryModel3D.Geometry>
<MeshGeometry3D Normals="..." TriangleIndices="..."/>
</GeometryModel3D.Geometry>
<GeometryModel3D.Material>
<DiffuseMaterial Brush="Brown"/>
</GeometryModel3D.Material>
</GeometryModel3D>
</ModelVisual3D.Content>
</ModelVisual3D>

</ModelVisual3D>
</ModelVisual3D>

</Viewport3D>
</Grid>
...全文
172 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
luminos 2011-12-09
  • 打赏
  • 举报
回复
求救!
内容概要:本文详细介绍了基于无刷直流电机的电子机械制动执行器的MATLAB/Simulink仿真模型,重点构建并深入分析了其非线性动力学特性。该模型深度融合了无刷直流电机的电磁动力学与制动执行机构的机械传动动力学,通过引入高精度的Stribeck摩擦模型,有效提升了对系统在启动、停止及低速运行等工况下复杂动静态摩擦行为的模拟能力,从而实现了对整个执行器系统动态响应特性、控制性能及瞬态过程的高保真仿真,为下一代线控刹车(Brake-by-Wire)系统的研发、控制算法验证与优化提供了强大的数字化设计与验证平台。; 适合人群:具备一定电机控制理论、汽车电子工程、自动化或机电一体化背景的研究生、高校科研人员及从事电驱动系统、汽车底盘控制系统开发的工程师。; 使用场景及目标:①用于电子机械制动(EMB)系统总体方案的设计、可行性验证与动态性能评估;②作为开发与在环测试(HIL/SIL)先进控制器(如高鲁棒性PID、滑模变结构控制、模型预测控制MPC等)的核心仿真平台;③深入研究电机与精密丝杠等机械部件之间的强耦合效应,以及非线性摩擦对系统控制精度、响应延迟和稳态误差的影响机制。; 阅读建议:学习者应熟练掌握MATLAB/Simulink软件操作,并具备电机学、经典与现代控制理论、机械动力学等相关基础知识,建议在理解模型架构的基础上,通过调整关键参数(如摩擦系数、转动惯量、传动比)和施加不同的指令信号与负载扰动,系统性地探究系统各环节的动态响应规律,进而进行模型的二次开发与优化。

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧