Applet 保存的Netlogo小程序的宽度和高度?

Applet 保存的Netlogo小程序的宽度和高度?,applet,netlogo,Applet,Netlogo,给定Netlogo源中的(x_top_left,y_top_left)和(x_low_right,y_low_right),保存的Netlogo小程序的宽度和高度应该是多少 背景 我有一大堆正宗的Netlogo文件,是为课程和演示准备的。使用Perl或Ruby,我想将它们批量导出为不同文件中的小程序,可能与左框中的目录相关。与“另存为小程序”非常相似,但在批处理中,会将其保存到不同的HTML文件 如果不是我陷入了寻找我应该在写作中使用哪些applet维度的困境,那么这一切都是微不足道的 <

给定Netlogo源中的(x_top_left,y_top_left)和(x_low_right,y_low_right),保存的Netlogo小程序的宽度和高度应该是多少

背景 我有一大堆正宗的Netlogo文件,是为课程和演示准备的。使用Perl或Ruby,我想将它们批量导出为不同文件中的小程序,可能与左框中的目录相关。与“另存为小程序”非常相似,但在批处理中,会将其保存到不同的HTML文件

如果不是我陷入了寻找我应该在写作中使用哪些applet维度的困境,那么这一切都是微不足道的

<applet code="org.nlogo.lite.Applet" archive="NetLogoLite.jar"
       width="???" height="???">
<param name="DefaultModel" value="netlogofile.nlogo">
</applet>
为了了解逻辑,我分析了几个保存的小程序,得到了以下结果:

(x_top_left, y_top_left) = (210, 10).
(x_low_right, y_low_right) = (649, 470).
Netlogo saves applet with width x height: 794 x 480.

(x_top_left, y_top_left) = (96, 10).
(x_low_right, y_low_right) = (535, 470).
Netlogo saves applet with width x height: 629 x 480.

(x_top_left, y_top_left) = (96, 10).
(x_low_right, y_low_right) = (483, 340).
Netlogo saves applet with width x height: 575 x 350.

(x_top_left, y_top_left) = (96, 10).
(x_low_right, y_low_right) = (396, 271).
Netlogo saves applet with width x height: 690 x 300.
从这些数据中,我试图发现这些数字的模式,但坦率地说,它们之间的关系我无法理解


我的问题是:给定Netlogo源中的(x_top_left,y_top_left)和(x_low_right,y_low_right),保存的Netlogo小程序的宽度和高度应该是多少?

您必须查看界面选项卡中所有小部件的尺寸,计算它们的边界框,然后添加一些坡度

我知道这个计算有两种实现,都很糟糕

一个是NetLogo本身的一个。在这里,分为两个文件:

另一个是NetLogo网站上提供模型库模型的小程序版本的Perl脚本(Perl?是的,那是2002年,从那以后几乎没有人接触过)。这些脚本在私人回购协议中,但我对相关部分做了一个要点:


我已经有好几年没看过这些东西了,但是如果你对它有疑问,我的记忆可能会被激活。

我自己写了一个脚本,部分原因是我不理解确切的边界框计算魔法。我所做的是:计算图形窗口按钮滑块开关选择器输入框监视器打印输出文本框选择小部件的所有x和y坐标的最小值和最大值,并从每个坐标的最小值中减去最大值。确实很简单。不过,我的答案与Netlogo在保存小程序时的计算结果不同。据我所知,由于浏览器特性的重叠,会增加一些空闲时间。但增加的松弛度也各不相同。我应该添加什么作为slack?Re:边界框,是的,这正是我链接到的代码所做的。至于slack,我不认为有任何明确的答案来回答多少的问题。我链接到的代码中增加的松弛量纯粹是多年来反复试验的结果:如果我们发现问题或有人抱怨,我们会再增加几个像素的松弛量,直到它消失。嗯。。。是的,但每次保存所增加的松弛度各不相同。很多如果我这边的计算是正确的,那么似乎魔术正在进行,而不是在每次扑救时增加持续的松弛。为了消除这种魔力,我偷看了一下您提到的代码片段,但是这些片段从小部件对象本身读取它们的维度。我再看一眼,充分利用它。正如你所说的,在研究乌龟的过程中,花时间在Netlogo小程序上确实值得怀疑。由于我想在春天发布我的程序,我或多或少被迫使用applet解决方案——这是可以的。我确信对象中的小部件维度和写入文件中的小部件维度是相同的,所以这是一个无关紧要的区别。
(x_top_left, y_top_left) = (210, 10).
(x_low_right, y_low_right) = (649, 470).
Netlogo saves applet with width x height: 794 x 480.

(x_top_left, y_top_left) = (96, 10).
(x_low_right, y_low_right) = (535, 470).
Netlogo saves applet with width x height: 629 x 480.

(x_top_left, y_top_left) = (96, 10).
(x_low_right, y_low_right) = (483, 340).
Netlogo saves applet with width x height: 575 x 350.

(x_top_left, y_top_left) = (96, 10).
(x_low_right, y_low_right) = (396, 271).
Netlogo saves applet with width x height: 690 x 300.