Come eseguire lo spostamento del poligono verso l'esterno in JMPCiao a tutti,
Vorrei chiedervi se è possibile eseguire l'offset dei poligoni verso l'esterno in JMP. In caso affermativo, potreste spiegarmi come fare?
Supponiamo di avere le coordinate di un esagono e di voler disegnare una zona cuscinetto con distanza = 10 attorno all'esagono. Come potrei farlo?
Grazie mille
Automazione e scriptingRe: Come eseguire lo spostamento del poligono verso l'esterno in JMPDa dove viene l'esagono originale?
Lo stai producendo utilizzando una JMP Graph Box?
Dettagli più specifici saranno molto utili
Re: Come eseguire lo spostamento del poligono verso l'esterno in JMPCiao @txnelson ,
Il poligono viene ricavato dal grafico del contorno salvando il contorno

Dopo aver salvato i contorni, ho tracciato il grafico X e Y. Come posso disegnare l'offset lungo il contorno del poligono? Grazie mille.

Re: Come eseguire lo spostamento del poligono verso l'esterno in JMPJMP offre la possibilità di aggiungere elementi grafici aggiuntivi a qualsiasi output grafico utilizzando lo script "Aggiungi elementi grafici". L'indice degli script fornisce documentazione ed esempi su come aggiungere oggetti aggiuntivi.
Aiuto=>Indice di scripting
Un set completo di primitive grafiche è disponibile in JSL.
Ecco un semplice esempio tratto direttamente dalla Guida allo scripting che illustra questa capacità
Names Default To Here( 1 );
Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = Bivariate(
Y( :weight ),
X( :height ),
FitLine
);
rbiv = biv << report;
framebox = rbiv[frame box( 1 )];
framebox <<
Add Graphics Script(
Transparency( 0.5 );
Fill Color( {1.0, 0.5, 0.0} );
Polygon( [60, 72, 57], [75, 120, 120] );
);

Re: Come eseguire lo spostamento del poligono verso l'esterno in JMPCiao @txnelson
Come nel tuo grafico, inseriamo manualmente i numeri nel grafico per disegnare un poligono. C'è un modo per farlo tramite script? Per esempio,
Abbiamo un elenco di coordinate in X e Y e una distanza. Come posso eseguire il calcolo tramite script?
Inoltre, vorrei porre una domanda. Quando traccio un grafico di contorno e salvo il contorno, JMP genera una tabella con le coordinate X e Y.
Ho riscontrato un problema: quando uso una sintassi come "In Polygon (a, b, matrice x, matrice y)", il risultato restituito è errato. Anche alcuni punti sono all'interno del poligono, ma JMP li restituisce fuori dal poligono.
Devo eseguire l'ordinamento o elaborare i dati prima di utilizzare In Polygon?
Grazie
Re: Come eseguire lo spostamento del poligono verso l'esterno in JMPHai provato a tracciare il poligono ottenuto? Somiglia a quello che ti aspettavi?
Re: Come eseguire lo spostamento del poligono verso l'esterno in JMPPenso che quando dici "inseriamo manualmente un numero nel grafico", tu stia indicando che il JSL è "hard-coded" per un poligono specifico. Sì, è vero, ma non significa che debba essere hard-coded. JSL è un linguaggio di scripting completo. I valori numerici che definiscono il poligono che si desidera generare possono essere calcolati usando JSL e poi utilizzati all'interno della funzione Polygon() per disegnare il poligono che si desidera visualizzare. Immagino che se si vuole disegnare un poligono con un'ampiezza di 10 unità attorno ai punti che si stanno visualizzando, probabilmente si dovrà scorrere tutti i valori, calcolando la distanza dalla media di tutti i valori x,y al punto specifico, e poi aggiungere 10 unità alla distanza, e poi calcolare il punto x,y di quel valore. O qualcosa del genere. Ma tutto questo è possibile in JSL. Di seguito è riportato un semplice esempio di disegno di un poligono che includa i punti x e y massimi.
Names Default To Here( 1 );
dt=Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = Bivariate(
Y( :weight ),
X( :height ),
FitLine
);
rbiv = biv << report;
framebox = rbiv[frame box( 1 )];
framebox <<
Add Graphics Script(
Transparency( 0.5 );
Fill Color( {1.0, 0.5, 0.0} );
// Find the max X point and it's y value
maxX = col max(:height);
maxXyvalue = :weight[(dt << get rows where(:height==maxX))[1]];
minX = col min(:height);
minXyvalue = :weight[(dt << get rows where(:height==minX))[1]];
maxY = col max(:weight);
maxYxvalue = :Height[(dt << get rows where(:weight==maxY))[1]];
minY = col min(:weight);
minYxvalue = :Height[(dt << get rows where(:weight==minY))[1]];
polygon((maxX||minX||minYxvalue||maxYxvalue)`, (maxXyvalue || minXyvalue || minY ||maxY)` );
);
