![]() |
1
9
如果你想要真正的动态运动(也就是说,当你“摇动”鼠标指针时,你可以产生沿着绳子传播的波),你需要使用有限元技术。但是,如果您对静态行为很满意,您可以简单地使用贝塞尔曲线。 首先,我将简要描述有限元方法,然后详细介绍静态方法。 动态方法 把你的“绳索”分成一个大的数字(大约1000个)元素,每个元素都有一个位置和速度矢量。使用compositionTarget.rendering事件计算每个元素的位置,如下所示:
静态方法 把你的绳索分成30段,每段都是三次贝塞尔近似于悬链线y=cosh(x/a)。末端控制点应位于接触网曲线上,平行线应与接触网相切,控制线长度应根据接触网的二阶导数设置。 在这种情况下,您可能还需要渲染流几何体,使用BeginFigure和PolyBezier来构建它。 我将把它实现为一个自定义的形状子类“悬链线”,类似于矩形和椭圆。在这种情况下,您只需覆盖DefiningGeometry属性。为了提高效率,我还将覆盖cacheDefiningGeometry、getDefiningGeometryBounds和getNaturalSize。 首先决定如何参数化悬链线,然后为所有参数添加DependencyProperties。确保在您的frameworkpropertiesmetadata中设置了affectsMeasure和affectsRender标志。 一个可能的参数化是xoffset、yoffset和length。另一个可能是xoffset、yoffset和sagrarelativeToWidth。这取决于什么是最容易绑定的。 定义DependencyProperties后,实现DefiningGeometry属性以计算立方体Bezier控制点,构造streamGeometry并返回它。 如果你这样做,你可以在任何地方放下一个接触网控制,得到一个接触网曲线。 |
![]() |
2
1
|
![]() |
3
1
imho“悬挂”(物理模拟)电缆是一种过度使用的情况-喜欢的外观胜过可用性。 你确定你不只是在混乱用户体验吗? 在基于节点/连接的用户界面中 清楚的 连接(如石英作曲: http://ellington.tvu.ac.uk/ma/wp-content/uploads/2006/05/images/Quartz%20Composer_screenshot_011.png )比像糖果一样的摇摆电缆更重要的是,这些电缆的走向(由于重力向下)与实际连接点所在的方向不同。(同时占用CPU周期进行模拟,这在其他地方更有用) 只要我0.02美元 |
![]() |
user1424739 · 如何获得子地块的绘图区域大小? 3 年前 |
![]() |
Nor-s · 如何使用ASIMP正确加载模型? 3 年前 |
![]() |
Makogan · 3D纹理大小影响程序输出,不会引发错误 6 年前 |
![]() |
Karsten W. · 底部R中的旋转箭头 6 年前 |
|
168grani · Matplotlib图形的线条平滑 6 年前 |