how to create a sequence of objects from 2 sequence of numbers?

Cecilia Lucía Gigena shared this question 2 years ago
Answered

Hi,

I have these 2 sequences:

Sequence(z * 360 / b, z, 0, b, 1)


Sequence(Angle((x(A1) + floor(q / b) - n floor(q / b / n)+0.5, y(A1) + floor(q / b / n)),(x(A1) + floor(q / b) - n floor(q / b / n), y(A1) + floor(q / b / n)), 360 / b), q, 0, a, 1, z, 0, b, 1)


This has worked well so far... BUT... I need to combine them this way:

Sequence(Angle((x(A1) + floor(q / b) - n floor(q / b / n)+0.5, y(A1) + floor(q / b / n)),(x(A1) + floor(q / b) - n floor(q / b / n), y(A1) + floor(q / b / n)), z*360 / b), q, 0, a, 1, z, 0, b, 1)


And I don't know how to make it understand both what z is and what q is at the same time. Apparently, I can make z OR q work. I don't get how to join.

This is what I expect:

1) From certain q value (which shows where the center of a circle is), I want GeoGebra to make multiple central angles within that circle, starting at an initial point in the circle named A1 and going all round till it reaches A1 again. For that purpose, I am creating the variable "z".


2) Once it has finished with that circle, I want to swich to another q value (which is the center of another circle) and making again multiple angles all the way round.


So basically I need multiple angles for EACH circle. I get how to make 1 angle in each circle OR multiple angles in 1 circle, but I need both (multiple angles in multiple circles). So I need the angle function to understand both where the center of each circle is, and so many values for so many angles.

Best Answer
photo

Cuando yo creé el archivo puse J4 = Sequence(Length(J3(k2)), k2, 1, Length(J3)) y luego ordeno J3 según J4 y creo J5

eso hace que el orden de rellenado dependa de cuál sea el punto central más cercano al punto B

si por ejemplo usases J4 = Sequence(max(x(J3(k2)),y(J3(k2))), k2, 1, Length(J3)) , espero que no falten paréntesis, el orden de aparición dependería de la métrica máximo de x,y que es más cuadrada que la métrica euclidiana, también podrías probar abs(x)+abs(y) que también es muy cuadrada pero sesgada 45º

como dicen por aquí: poco a poco

Files: foro.ggb

Comments (18)

photo
1

Please post your file.

Also, please note that `z` is a reserved name for GeoGebra. See https://wiki.geogebra.org/e...

photo
1

Here is the file. You can see there are several angles graphed, which are listed in I3. But I need more angles in every circle, using all values listed in α.

photo
photo
1

I have these 2 sequences:

Sequence(z * 360 / b, z, 0, b, 1)

Sequence(Angle((x(A1) + floor(q / b) - n floor(q / b / n)+0.5, y(A1) + floor(q / b / n)),(x(A1) + floor(q / b) - n floor(q / b / n), y(A1) + floor(q / b / n)), 360 / b), q, 0, a, 1, z, 0, b, 1) 


lo dudo porque no se pueden poner dos contadores en un comando secuencia y lo anterior tiene q y z de contador

quizás lo que quieres es

Sequence(Sequence(Angle((x(A1) + floor(q / b) - n floor(q / b / n)+0.5, y(A1) + floor(q / b / n)),(x(A1) + floor(q / b) - n floor(q / b / n), y(A1) + floor(q / b / n)), z*360 / b), q, 0, a, 1), z, 0, b, 1)

naturalmente cambiando z por otra letra que no sea reservada

pero eso no lo sabremos hasta que veamos el archivo

photo
1

Μuchas gracias por tu respuesta.

Este es el archivo. Logré que me acepte una secuencia con tu sugerencia, reemplazando z por γ, pero no me grafica nada (me da una lista llamada Ι3, pero me grafica ninguno de esos ángulos). ¿Alguna otra corrección?

photo
2

no consigo comprender la logica de cada paso dado en el archivo pero yo haría dos cambios sustanciales a lo poco que he podido vislumbrar en él

primero no usaría angulos. los ángulos hay circunstancias en que no se visualizan si son resultados de calculos; es decir si yo creo un angulo con tres puntos se visualiza pero si uso luego el doble de ese angulo, al no tener un apoyo de posicion grafico, no se visualiza. creo que es mejor usar sectores circulares

y segundo yo crearía el grafico de cada circulo y luego simplemente lo trasladaria

algo así como lo que adjunto y si necesitas más con crear otra lista de posiciones a las que trasladar es suficiente

Files: foro.ggb
photo
1

¡Genial! Si, esto me re sirve, ¡gracias!


Me quedó una duda: yo quería que exista un punto ubicado en el centro de alguno de los círculos (cualquiera de ellos), tal que pueda hacer click y con eso transportar a todos los círculos juntos. Por eso estaba tratando de definir todo a partir de un punto de inicio. No sé si con la función Translate se podrá hacer eso...

photo
1

facil, si el diseño es simple hacerle modificaciones es simple

crea un punto B y en l6 y l7 alfinal donde pone -A añades B escribiendo -A+B y ya está

photo
1

genial muchas gracias!

photo
1

hola, disculpá que te moleste, pero sigue habiendo un inconveniente: geogebra no distingue 0° de 360°, por lo cual cuando la fracción tiene denominador 1, no grafica nada (debería graficar un círculo completo). Para resolver esto creé un círculo, pero no entiendo cómo trasladarlo. Probé con esta secuencia, pero no funcionó:

If(d = 1, Sequence(Translate(L1, l5(k) - A + B), k, 1, a))


Quería reutilizar los traslados que vos hiciste, pero no estoy entendiendo cómo funciona.

photo
1

eso son dos cuestiones diferentes

para ir entrenandote busca los comandos en que usas 360º y cambialos por 359.99999º y se te quitan algunos problemas

photo
1

Entiendo que esa aproximación puede ser una opción cuando no estoy generando ángulos por medio de secuencias. Pero me parece medio complicado para este caso en el que el ángulo se genera a partir de 360°/denominador.

Yo quería usar otro método: generar círculos completos directamente y restringirlos en "mostrar objeto si: denominador = 1" (y que permanezcan ocultos para otros denominadores).


Lo que te preguntaba es cómo se hacen los traslados para generar muchos círculos a partir de uno. Vos me trasladaste los sectores circulares, estuve leyendo eso y quería repetir el mismo método para trasladar los círculos, pero no me salió. Yo puse esto:


L1 = Circle(B, 1)

If(d = 1, Sequence(Translate(L1, l5(k) - A + B), k, 1, a))

Esperaba que eso me traslade los círculos como copias de L1, pero no funcionó. ¿Qué estoy haciendo mal?

photo
1

d=1 es una ecuacion o una asignacion. las comparaciones se hacen con dos = o sea,


If(d == 1, Sequence(Translate(L1, l5(k) - A + B), k, 1, a)) será lo correcto

pero poniendo 359.9999º en lugar de 360º se conseguía una visualizacion buena; solo quería ahorrar objetos

photo
1

Lo que pasa es que el ángulo se obtiene a partir de un cálculo 360/n, por ende no sé cómo lograr que el ángulo dé eso, siendo que vale 30, 60, etc para otros casos.

Probé con esto: If(d ≟ 1, Sequence(Translate(L1, l5(k) - C + B), k, 1, a))

Y resulta que lo dibuja bien, pero el punto B deja de ser móvil. Verás que B es móvil para otros denominadores (distintos de 1).

photo
1

tienes actualmente B en la capa 0 y l11 en la capa 1 (los objetos se ponen en la ultima capa usada con antelacion a su creación, así que alguno pusiste en la capa 1 antes de crear l11 )


si pones l11 en la capa 0 o haces que l11 no se pueda seleccionr o pones B en la capa 2 u otra superior a l11 entonces podrás mover l11 sin problema

photo
1

¡Genial! No se me habría ocurrido. Ahora si, ¡muchas gracias!

Me queda una última duda: los traslados quedaron de una manera medio rara. Fijate que cuando son 15 enteros o alguna fracción equivalente a 15 enteros, se forma una "grid" de 16 "casilleros" (4 de ancho y 4 de alto), de los cuales están ocupados 15 (queda "1 lugar libre"). Pero si lo aumento a 16, en lugar de ocuparse ese "lugar libre" que quedaba en la grid de 4x4, se pone al lado, como iniciando una grid de 5x5 (25 casilleros). Esto me parece un desperdicio de espacio. Yo quería que no supere los 4 de anchox4 de alto hasta que haya 16 enteros.

photo
2

Cuando yo creé el archivo puse J4 = Sequence(Length(J3(k2)), k2, 1, Length(J3)) y luego ordeno J3 según J4 y creo J5

eso hace que el orden de rellenado dependa de cuál sea el punto central más cercano al punto B

si por ejemplo usases J4 = Sequence(max(x(J3(k2)),y(J3(k2))), k2, 1, Length(J3)) , espero que no falten paréntesis, el orden de aparición dependería de la métrica máximo de x,y que es más cuadrada que la métrica euclidiana, también podrías probar abs(x)+abs(y) que también es muy cuadrada pero sesgada 45º

como dicen por aquí: poco a poco

Files: foro.ggb
photo
1

¡Genial! Ahora sí quedó perfecto. Muchas gracias. Te voy a mencionar en los créditos =D

photo
photo
1

Here is my next try (attached file)...


I have managed to create points in the circle using trigonometry. BUT... Now I need segments. I need to create a segment from the center of the circle to each of the points of that same circumference. Still need to get how to join: center is certain list and the other point is in another list. AND I need GeoGebra to understand which points are in the same circle (I don't want to cross to another circle).

© 2023 International GeoGebra Institute