Creazione di una griglia di rettangoli usando un ciclo ForCiao,
Sto cercando di creare una matrice di rettangoli 24x2 in una nuova finestra. Posso creare manualmente questi usando i comandi JSL per il riquadro grafico ma so che può essere fatto usando un ciclo for che sarebbe molto più veloce. Ho solo bisogno che i rettangoli siano due dimensioni per ora, ed ecco il seguente codice che stavo tentando di implementare:
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;
);ma sembra che non funzioni né mi lanci degli errori. Grazie per qualsiasi aiuto.
Ri: Creazione di griglia di rettangoli utilizzando un ciclo ForNel mio esempio, ho inteso che il numero di punti sia sempre lo stesso, ma gli errori di arrotondamento in virgola mobile rendono questo codice
for(y=y0,y<=y1,y+=(y1-y0)/16
a volte generare 16 vs 17 passi. Un modo migliore per scrivere questo sarebbe qualcosa del genere:
nsteps = 16;
for( iy = 0, iy <= nsteps, iy += 1,
y = y0 + iy * (y1 - y0) / nsteps;
potresti facilmente modificare quel loop per tralasciare i punti d'angolo invece di duplicarli (triplicandoli?) ... per (iy = 1, iy Ri: Creazione di griglia di rettangoli utilizzando un ciclo For
Freddo
Ri: Creazione di griglia di rettangoli utilizzando un ciclo ForEcco un modo per creare cubi 3D, senza imparare OpenGL, se non ne hai bisogno di troppi. In realtà sta tracciando i contorni con dei punti, quindi il numero di punti può sfuggire di mano piuttosto rapidamente e renderlo troppo lento. Questo esempio usa 12K punti e continua a funzionare bene.
Matrice 3D di cubi
// 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>Ri: Creazione di griglia di rettangoli utilizzando un ciclo ForNon sono praticato con l'accesso OpenGL di JMP, quindi non posso rispondere alla tua domanda su quanta parte dell'ambiente grafico è disponibile.
Riguardo al tuo altro problema, ti indicherò gli script di esempio distribuiti con JMP, che ti mostreranno come utilizzare una scena 3D apre un intero mondo di funzionalità 3D. In particolare, ti indicherò gli script MatrixRotation e PatchEditor, in cui il codice ha loop di feedback per rilevare ciò che è stato disegnato e consentire la manipolazione di tali oggetti.
Per accedere ai campioni, basta andare su
Aiuto ==> Dati campione
e poi dalla finestra che viene aperta, quindi selezionare "Apri la directory degli script di esempio"
Ri: Creazione di griglia di rettangoli utilizzando un ciclo ForGrazie! funziona perfettamente c'è un modo per recuperare i punti utilizzati per creare i rettangoli come una matrice? e c'è un modo semplice per estendere questa idea a 3 dimensioni usando l'implementazione OpenGL di JSL?
Ri: Creazione di griglia di rettangoli utilizzando un ciclo ForGraph Box () è dinamico e quando è accoppiato con il tuo codice, ogni volta che tenta di aggiornare lo schermo, i tuoi valori y stanno aumentando di dimensioni. Vedere il codice qui sotto per una correzione per il 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;
)
)
);Ri: Creazione di griglia di rettangoli utilizzando un ciclo ForGrazie! Finora ho questo, che funziona un po ', ma sta posizionando i rettangoli in posizione y ~ 125 invece di y = 5 ey = 0. Qualche idea sul perché questo possa essere?
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;
);
)
);Ri: Creazione di griglia di rettangoli utilizzando un ciclo ForCi sono un paio di problemi.
1. I "rect" nel codice sono al di fuori del Graph Box () e quindi non sanno dove applicare il rettangolo.
2. Le specifiche dell'asse X e Y non rientrano nell'intervallo del riquadro grafico ().
Ecco alcuni codici di avviamento che dovrebbero aiutarti ad andare avanti
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;
);
)
);