Script para movimiento aleatorio (dispersión)

He encontrado (y uso) scripts para opacidad aleatoria, cambio de tamaño aleatorio, rotación aleatoria, etc. pero parece que no puedo encontrar uno que haga un "desplazamiento/movimiento aleatorio"

Con los otros scripts mencionados anteriormente, simplemente selecciona las rutas, ejecuta el script e ingresa un valor mínimo y un valor máximo y la computadora lo aleatoriza por ti. (Diga min 20% de opacidad, max 80% de opacidad - todos estarán entre 20-80% de opacidad)

¿Es este script difícil de crear?

¿ No podría ser simplemente entrar min -Xy min -Ymoverse ? Luego, la computadora simplemente elegiría un valor aleatorio como lo hace en los otros scripts.max Xmax Y

¿Quieres que funcione con una selección de artículos?
@Silly-V si...
Bueno, también podría usar el cuadro de diálogo Transformar y usar la casilla de verificación aleatoria, así como la configuración de movimiento para crear el rango de variación.
No, no es difícil de construir toma alrededor de 3 minutos (pero no tengo una computadora para ejecutar Illustrator hasta mañana). pero esto está integrado en el comando transform each.
Usando el efecto de transformación, solo puedo hacer que se mueva en una dirección, no en ambas (no puedo hacer entre -10 y 10, solo 0 y 10)
hazlo dos veces una a la izquierda y otra a la derecha. También obtendrá una mejor distribución de esta manera.
@joojaa aaaay es por eso que quería un script para hacerlo todo de una vez, solo ingrese los valores y boom :D
Sí, pero no se puede usar un script como efecto. Pero sí, escribiré un guión tan pronto como tenga una computadora.
@joojaa aquí hay un enlace para el RandomResize, que probablemente solo requiera algunos cambios para que se mueva en lugar de cambiar el tamaño.
Sí, pero el cambio de tamaño es una variación de 1D, mientras que el movimiento es 2D, distribuciones mucho más posibles en 2D. De todos modos, aleatorio es relativamente simple, a menos que desee seguridad criptográfica.

Respuestas (1)

ingrese la descripción de la imagen aquí

Aquí hay una implementación de dispersión de caja uniforme

scatter_box(activeDocument.selection, 100, 100);

function scatter_box(items, xoffset, yoffset){
    for(var i=0;i<items.length;i++){
       var oldpos = items[i].position;
       items[i].position= [oldpos[0]+Math.random()*xoffset-xoffset/2,
                           oldpos[1]+Math.random()*yoffset-yoffset/2];    
    }    
}

Aquí para dispersión de disco uniforme.

scatter_disk(activeDocument.selection, 50);


function scatter_disk(items, rad){
    for(var i=0;i<items.length;i++){
       var oldpos = items[i].position;
       var r = Math.sqrt(Math.random()*rad*rad);
       var theta = Math.random()*2*Math.PI;
       items[i].position= [oldpos[0]+r*Math.sin(theta),
                           oldpos[1]+r*Math.cos(theta)];    
    }    
}

Obviamente, también podría usar otras distribuciones aleatorias.


versión de interfaz gráfica de usuario

#target illustrator

buildGUI();

function buildGUI(){
    var resource =
    "dialog { text:'jooScatter',\
        properties:{ closeButton:true, maximizeButton:false,\
            minimizeButton:false, resizeable:false },\
        orientation:'row', spacing:2, margins:5,\
        alignChildren:['left','fill'],\
        g: Group {\
                alignChildren:['left','fill'],\
                orientation:'column', spacing:20,margins:5,\
            p1: Panel {\
                text: 'Scatter Offsets:',\
                g1: Group {\
                    orientation:'column',\
                    x: Group {\
                        st: StaticText { text:'x width:'},\
                        f: EditText {text:'100', characters:20}\
                    },\
                    y: Group {st2 : StaticText{ text:'y width:'},\
                        f: EditText { text:'100' , characters:20 },\
                    },\
                },\
            },\
           g2: Group { alignment: 'right', orientation:'row',\
           apply: Button { text: 'Apply'},\
           cancel: Button { text:'Cancel'},\
       }\
       }\
    }"
    var win = new Window (resource);

    var cancel = function() {
         win.close(0);
    }
    var apply = function() {
         scatter_box(activeDocument.selection,
            eval(win.g.p1.g1.x.f.text),
            eval(win.g.p1.g1.y.f.text)
         );
         redraw();
    }

    win.g.g2.apply.onClick = apply;
    win.g.g2.cancel.onClick = cancel;

    win.show();



}

function scatter_box(items, xoffset, yoffset){
    for(var i=0;i<items.length;i++){
       var oldpos = items[i].position;
       items[i].position= [oldpos[0]+Math.random()*xoffset-xoffset/2,
                           oldpos[1]+Math.random()*yoffset-yoffset/2];    
    }    
}    

GIF de él en acción aquí

Estas secuencias de comandos son secuencias de comandos de dispersión, pero el valor ya está codificado en la secuencia de comandos, ¿hay alguna manera de hacer que aparezca una ventana emergente para que ingrese en un rango en el que debería dispersarse? (algo así como los otros scripts que mencioné en mi pregunta)
@WELZ Seguro que es solo más trabajo sin una recompensa en particular
¿Hay alguna manera de hacerlo donde solo se mueven los caminos al azar entre (-X y X) y (-Y e Y)? Donde X e Y se ingresan manualmente
la recompensa es que no todos los documentos/grupos de rutas tienen el mismo tamaño, por lo que constantemente tengo que ir y editar el script para que se ajuste a ese proyecto.
@WELZ seguro, pero también podría tener el script extendido abierto y escribir scatter_box (activeDocument.selection, 100, 100) Dado que el texto está allí, simplemente cámbielo después y presione enter.
La capa de interfaz gráfica de usuario es horrible, así que preferiría no hacer esto. No es como si fuera una diferencia para su flujo de trabajo si simplemente mantiene abierta la ventana del script.
Marca la diferencia en mi flujo de trabajo, porque no suelo dejar los guiones abiertos. ¡Aprecio lo que has hecho hasta ahora! :-)
@WELZ agregó interfaz gráfica de usuario. No sé por qué uno querría un cuadro alineado con la pantalla, cuando podría girarse arbitrariamente, pero supongo que es su veneno.
Funciona perfectamente para lo que necesito, muchas gracias!