Raster mit Rechtecken mit einer For-Schleife erstellenHallo,
Ich versuche, ein Array von 24x2-Rechtecken in einem neuen Fenster zu erstellen. Ich kann diese manuell mit den JSL-Befehlen für die Graphbox erstellen, aber ich weiß, dass dies mit einer for-Schleife erfolgen kann, die viel schneller wäre. Ich brauche jetzt nur die Rechtecke, um zwei Dimensionen zu haben, und hier ist der folgende Code, den ich implementieren wollte:
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;
);aber es scheint nicht zu funktionieren und wirft mir keine Fehler. Danke für jede Hilfe.
Betreff: Raster mit Rechtecken mit einer For-Schleife erstellenIn meinem Beispiel wollte ich, dass die Anzahl der Punkte immer gleich ist, aber Rundungsfehler durch Gleitkommazahlen ergeben diesen Code
for(y=y0,y<=y1,y+=(y1-y0)/16
manchmal 16 oder 17 Schritte erzeugen. Eine bessere Art, dies zu schreiben, würde ungefähr so aussehen:
nsteps = 16;
for( iy = 0, iy <= nsteps, iy += 1,
y = y0 + iy * (y1 - y0) / nsteps;
Sie können diese Schleife leicht modifizieren, um die Eckpunkte wegzulassen, anstatt sie zu duplizieren (zu verdreifachen?) ... für (iy = 1, iy Betreff: Raster mit Rechtecken mit einer For-Schleife erstellen
Cool
Betreff: Raster mit Rechtecken mit einer For-Schleife erstellenSo erstellen Sie 3D-Würfel, ohne OpenGL zu lernen, wenn Sie nicht zu viele benötigen. Es werden die Umrisse wirklich mit Punkten geplottet, so dass die Anzahl der Punkte schnell aus dem Ruder laufen kann und zu langsam wird. Dieses Beispiel verwendet 12.000 Punkte und ist dennoch gut.
3D-Matrix von Würfeln
// 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>Betreff: Raster mit Rechtecken mit einer For-Schleife erstellenIch werde nicht mit dem OpenGL-Zugriff auf JMP geübt, daher kann ich Ihre Frage nicht beantworten, wie viel der grafischen Umgebung dafür zur Verfügung steht.
In Bezug auf Ihr anderes Problem möchte ich Sie auf die mit JMP verteilten Beispielskripts hinweisen, die Ihnen zeigen, wie Sie mit einer 3D-Szene eine ganze Welt von 3D-Funktionen eröffnen können. Insbesondere werde ich Sie auf die MatrixRotation- und PatchEditor-Skripts hinweisen, in denen der Code Rückkopplungsschleifen zur Erkennung der gezeichneten Elemente enthält und die Bearbeitung dieser Objekte zulässt.
Um auf die Beispiele zuzugreifen, gehen Sie einfach zu
Hilfe ==> Beispieldaten
und dann aus dem Fenster, das geöffnet wird, wählen Sie "Öffnen Sie das Beispielskriptverzeichnis".
Betreff: Raster mit Rechtecken mit einer For-Schleife erstellenVielen Dank! funktioniert perfekt. Gibt es eine Möglichkeit, die Punkte abzurufen, die zum Erstellen der Rechtecke als Matrix verwendet werden? Gibt es eine einfache Möglichkeit, diese Idee mithilfe der OpenGL-Implementierung von JSL auf drei Dimensionen zu erweitern?
Betreff: Raster mit Rechtecken mit einer For-Schleife erstellenDas Graph-Feld () ist dynamisch und wenn es mit Ihrem Code gekoppelt wird, werden die y-Werte jedes Mal größer, wenn der Bildschirm aktualisiert werden soll. In dem nachstehenden Code finden Sie eine Lösung für das Problem
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;
)
)
);Betreff: Raster mit Rechtecken mit einer For-Schleife erstellenVielen Dank! Bisher habe ich dies, was etwas funktioniert, aber die Rechtecke an Position y ~ 125 anstatt y = 5 und y = 0 platziert. Irgendwelche Ideen, warum dies sein kann?
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;
);
)
);Betreff: Raster mit Rechtecken mit einer For-Schleife erstellenEs gibt ein paar Probleme.
1 Die "Rect" in Ihrem Code befinden sich außerhalb des Diagrammfelds () und wissen daher nicht, wo das Rechteck angewendet werden soll.
2 Ihre X- und Y-Achsenspezifikationen liegen außerhalb des Bereichs der Grafikbox ().
Hier ist ein Starter-Code, der Ihnen helfen soll, loszulegen
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;
);
)
);