Engee 文档
Notebook

极坐标系图形输出

在本例中,我们将演示如何输出 Engee 动力模型的极坐标系图形。

交互式脚本中的极坐标图

Graphs in the polar coordinate system allow you to see interrelationships that are not visible on graphs in the rectangular (Cartesian) coordinate system: to get an idea of the expression of some process in certain directions in space, or to trace the recurring dynamics within some cyclic process...

如果工作是在交互式脚本 Engee 中完成,则使用参数proj 将图形转换为极坐标系。其值:polar 允许我们以极坐标绘制图表:

In [ ]:
Θ = range( 0, stop = 1.5π, length = 100 )
r = abs.( 0.1 * randn(100) + sin.(3Θ) )
plot( Θ, r, proj = :polar, m = 2 )
Out[0]:

而参数ortho 则以矩形坐标系绘制图表

In [ ]:
plot( Θ, r, proj = :ortho, m = 2 )
Out[0]:

让我们尝试只使用画布和动态模型图形输出工具,在极坐标系中绘制图形().

动态模型极坐标图

要在不使用交互式脚本工具的情况下为动态模型绘制极坐标图,我们需要将向量从矩形坐标系转换为极坐标系。

请考虑以下模型 (draw_polar_engee_logo.engee):

image.png

如果使用 , 它将绘制下图:

engee_logo_plot.png

让我们使用 软件模拟管理 工具来分析这个模型。

In [ ]:
modelName = "draw_polar_engee_logo";
model = modelName in [m.name for m in engee.get_all_models()] ? engee.open( modelName ) : engee.load( "$(@__DIR__)/$(modelName).engee");

我们可以在不运行仿真的情况下,只需参考每个区块的属性,就可以检查每个区块LUT 中定义了哪些片断线性关系。

In [ ]:
# Анализируем первую таблицу подстановок
x1 = engee.get_param( modelName*"/LUT1", "BreakpointsForDimension1" );
y1 = engee.get_param( modelName*"/LUT1", "Table" );

# Анализируем вторую таблицу подстановок
x2 = engee.get_param( modelName*"/LUT2", "BreakpointsForDimension1" );
y2 = engee.get_param( modelName*"/LUT2", "Table" );

# Построим график
plot(
    plot( x1, y1, legend=false ),
    plot( x2, y2, legend=false )
)
Out[0]:

因此,模型在矩形坐标系中绘制,但经过转换后输出,将输入信号解释为极坐标系中的数据。

输出图形是极坐标系中两个图形的总和。第一个部分设定了构成徽标的两条曲线(曲线LUT2 ,其半径1.0 )各自的中心线位置。第二个部分(曲线LUT1 ,显示半径为0.25 )模拟了与中心线的偏差。

坐标变换有两种不同的方式。两种方法都可以互换。在第一种情况下,我们使用基础调色板中的简单图块进行坐标变换:

image.png

在第二种情况下,我们使用Engee Function 块,用以下代码执行相同的操作:

``朱莉娅 struct Block <: AbstractCausalComponent # 无参数 结束

函数 (c::Block)(t::Real, α, r) x = r * sin( α ) y = r * cos( α ) 返回 (x,y) 结束


让我们显示模型绘制的图形:

In [ ]:
gr()
s = engee.run( modelName, verbose=false );
plot( s["y"].value, s["x"].value, aspect_ratio=:equal )
Out[0]:

结论

Engee中,您可以逐渐使用越来越复杂的绘图工具,而无需编程。

在本演示中,我们展示了如何在无需编程的情况下绘制极坐标图(或者,如何使用Engee Function 块进行绘制)。

<br

交互式脚本中的图形不同,动态模型中的图形可以在仿真过程中直接更新,这为交互式模型仿真创造了有趣的可能性。