Creando cuadrícula de rectángulos usando un bucle ForHola,
Estoy tratando de crear una matriz de rectángulos 24x2 en una nueva ventana. Puedo crearlos manualmente usando los comandos JSL para el cuadro de gráficos, pero sé que se puede hacer usando un bucle for que sería mucho más rápido. Por ahora solo necesito que los rectángulos sean dos dimensiones, y aquí está el siguiente código que intenté implementar:
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;
);Pero no parece estar funcionando ni tirándome ningún error. Gracias por cualquier ayuda.
Re: Creando una cuadrícula de rectángulos usando un bucle ForEn mi ejemplo, pretendía que la cantidad de puntos siempre fuera la misma, pero los errores de redondeo de punto flotante hacen que este código
for(y=y0,y<=y1,y+=(y1-y0)/16
A veces se generan 16 vs 17 pasos. Una mejor manera de escribir esto sería algo así:
nsteps = 16;
for( iy = 0, iy <= nsteps, iy += 1,
y = y0 + iy * (y1 - y0) / nsteps;
usted podría modificar fácilmente ese bucle para dejar de lado los puntos de la esquina en lugar de duplicarlos (¿triplicarlos?) para ... (iy = 1, iy Re: Creando una cuadrícula de rectángulos usando un bucle For
Guay
Re: Creando una cuadrícula de rectángulos usando un bucle ForEsta es una forma de hacer cubos 3D, sin aprender OpenGL, si no necesitas demasiados. Realmente es trazar los contornos con puntos, por lo que la cantidad de puntos puede salirse de control bastante rápido y hacerlo demasiado lento. Este ejemplo usa 12K puntos y aún se desempeña bien.
Matriz 3D de cubos
// 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: Creando una cuadrícula de rectángulos usando un bucle ForNo tengo práctica con el acceso OpenGL de JMP, por lo que no puedo responder a tu pregunta sobre cuánto del entorno gráfico está disponible para él.
Con respecto a su otro problema, le señalaré los scripts de muestra distribuidos con JMP, que le mostrarán cómo el uso de una escena 3D abre todo un mundo de capacidades 3D. En particular, le indicaré los scripts MatrixRotation y PatchEditor, en los que el código tiene bucles de retroalimentación para detectar lo que se ha dibujado y permitir la manipulación de esos objetos.
Para acceder a las muestras, simplemente vaya a
Ayuda ==> Datos de muestra
y luego desde la ventana que se abre, luego seleccione "Abrir el directorio de secuencias de comandos de muestra"
Re: Creando una cuadrícula de rectángulos usando un bucle For¡Gracias! funciona perfectamente. ¿Hay alguna forma de recuperar los puntos utilizados para crear los rectángulos como una matriz? ¿Existe una forma sencilla de ampliar esta idea a 3 dimensiones utilizando la implementación OpenGL de JSL?
Re: Creando una cuadrícula de rectángulos usando un bucle ForEl cuadro de gráficos () es dinámico y cuando se combina con su código, cada vez que intenta actualizar la pantalla, sus valores de y están aumentando de tamaño. Vea el código a continuación para una solución para el problema
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: Creando una cuadrícula de rectángulos usando un bucle For¡Gracias! Hasta ahora tengo esto, que funciona un poco, pero está colocando los rectángulos en la posición y ~ 125 en lugar de y = 5 y y = 0. ¿Alguna idea de por qué esto puede ser?
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: Creando una cuadrícula de rectángulos usando un bucle ForHay un par de problemas.
1. Los "rect" en su código están fuera de la caja de gráficos () y, por lo tanto, no saben dónde aplicar el rectángulo.
2. Las especificaciones de sus ejes X e Y están fuera del rango de la Caja de gráficos ().
Aquí hay un código de inicio que debería ayudarte a ponerte en marcha.
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;
);
)
);