使用For循环创建矩形网格嗨,
我想在新窗口中创建一个24x2矩形的数组。我可以使用图框的JSL命令手动创建这些,但我知道可以使用for循环来完成它,这会更快。我现在只需要将矩形作为两个维度,以下是我试图实现的以下代码:
y1 = 5;
y2 = 10;
win = New Window("Spine",
gb = Graph Box(
Frame Size(1000,1000),
)
);
For(i = 0, i<24, i++,
Rect(5,y1,10,y2);
y1 = y2+1;
y2 = y1+5;
gb<<reshow;
);但它似乎没有工作,也没有给我任何错误。谢谢你的帮助。
Re:使用For循环创建矩形网格在我的例子中,我打算让点数始终相同,但是浮点舍入错误会产生这个代码
for(y=y0,y<=y1,y+=(y1-y0)/16
有时产生16对17步。写这个的更好方法看起来像这样:
nsteps = 16;
for( iy = 0, iy <= nsteps, iy += 1,
y = y0 + iy * (y1 - y0) / nsteps;
您可以轻松地修改该循环以省略角点而不是重复(三次重复?)它们... for(iy = 1,iy Re:使用For循环创建矩形网格
凉
Re:使用For循环创建矩形网格如果您不需要太多,可以在不学习OpenGL的情况下制作3D立方体。它实际上用点数绘制轮廓线,因此点数可以很快失控并且速度太慢。此示例使用12K点并仍然表现良好。
立方体3D矩阵
// make cube outlines using scatter plot points
dt = New Table( "cubes", New Column( "xx" ), New Column( "yy" ), New Column( "zz" ) );
make cube = function({dt,x0,x1,y0,y1,z0,z1},{x,y,z},
if(x1<X0></X0>Re:使用For循环创建矩形网格我没有练习使用JMP的OpenGL访问,所以我无法回答你有关它有多少图形环境的问题。
关于您的其他问题,我将向您介绍随JMP一起发布的示例脚本,它将向您展示如何使用3D场景打开整个3D功能世界。 特别是,我将指出MatrixRotation和PatchEditor脚本,其中代码具有用于检测已绘制内容的反馈循环,并允许操纵这些对象。
要访问样本,只需转到
帮助==>示例数据
然后从打开的窗口中选择“打开示例脚本目录”
Re:使用For循环创建矩形网格谢谢!工作得很好。有没有办法检索用于创建矩形作为矩阵的点?有没有一种简单的方法可以使用JSL的OpenGL实现将这个想法扩展到3维?
Re:使用For循环创建矩形网格Graph Box()是动态的,当与代码结合使用时,每次尝试刷新屏幕时,y值都会增加。 请参阅下面的代码以获取该问题的修复程序
Names Default To Here( 1 );
win = New Window( "Spine",
gb = Graph Box(
Frame Size( 1000, 1000 ),
Y Scale( 0, 500 ),
X Scale( 0, 500 ),
For( i = 1, i < 25, i++,
If( i == 1,
y1 = 5;
y2 = 0;
);
Rect( 45, y1, 50, y2 );
Rect( 50, y1, 55, y2 );
y2 = y1 + 1;
y1 = y1 + 6;
)
)
);Re:使用For循环创建矩形网格谢谢!到目前为止,我有这个,它有点工作,但是将矩形放在y~125的位置而不是y = 5和y = 0。关于为什么会这样的任何想法?
Names Default to Here(1);
y1 = 5;
y2 = 0;
win = New Window("Spine",
gb = Graph Box(
Frame Size(1000,1000),
Y Scale(0,500),
X Scale(0,500),
For(i=1,i<25,i++,
Rect(45,y1,50,y2);
Rect(50,y1,55,y2);
y2 = y1+1;
y1 = y1+6;
);
)
);Re:使用For循环创建矩形网格有几个问题。
1。代码中的“rect”位于Graph Box()之外,因此他们不知道应用矩形的位置。
2。您的X和Y轴规格超出了Graph Box()的范围。
以下是一些可以帮助您开始使用的入门代码
Names Default To Here( 1 );
y1 = 5;
y2 = 10;
win = New Window( "Spine",
gb = Graph Box(
Frame Size( 1000, 1000 ),
For( i = 0, i < 5, i++,
Rect( 5,y1, 10,y2);
y1 = y2 + 1;
y2 = y1 + 5;
);
)
);