Función circle() en Processing 3

¡Hola!

Estoy usando Processing 3.5.3 y no me reconoce la función circle (), pero no quiero usar ellipse() porque necesito que el programa funcione en pantallas de muy diferentes formatos, sin que los círculos se deformen. ¿Cómo puedo hacerlo? Veo que tampoco funciona polygon() en esta versión.

Since when would ellipse deforme circles according to screen format? Ellipse draws the circle according to the given variables, so just don‘t use width/height to calculate these variables, or account for it and remap the values before drawing the ellipse…

la ellipse se deforma porque trabajo con valores relativos para su posición y tamaño. Si el formato es 18:9, width/ tiene que ser la mitad que height/, pero si el formato pasa a ser 4:3 la ellipse se deforma. Mi pregunta es si circle() y polygon() ya no funcionan en Processing 3 y cómo se pueden sustituir.

Ah ok, so you do use values relative to the screen… then the Solution is to remap the value to your screen width and height ratios

float widthHeightRatio = width/height;
float heightWidthRatio = height/width;
ellipse( x, y, w * widthHeightRatio, h * heightWidthRatio);
//or the inverse
ellipse(x, y, w * heightWidthRatio, h * widthHeightRatio);

You could also make this into a method and call it circle(). Then you have a exactly what you‘re looking for :wink:

1 Like

muchas gracias. Porque entonces, la función circle() ya no existe, ¿verdad?

There is a circle function, but it does not account for the screen ratio.

1 Like

Esto no está correcto.

circle() fue agregado en 3.5 y todo después. Si no tiene circle(), entonces está utilizando 3.4 o anterior.

Segunda confusión: solo use la misma variable dos veces en ellipse() para obtener exactamente el mismo resultado que circle().

Si tienes un boceto en 3.5:

circle(x, y, width/2);

Si tiene un boceto en 3.4, esto hace lo mismo * exacto *:

elipse(x, y, width/2, width/2);

2 Likes

perfecto, ¡muchas gracias!