is there a way to move graphic view in units instead of pixels?

Cecilia Lucía Gigena shared this question 1 year ago
Needs Answer

Hi,

I am using this command:

DesplazaPíxeles(50,0)

Which is, for my current zoom, AROUND 1 unit (for example, if my corner is in x=-1, entering this I will get x=-2 visible).

I am putting this inside a more complex code, so using the mouse is not an option.

The thing is: For small numbers, it works to multiply 50 for the number (e.g. -50*3 will make me move around 3 units). BUT, this "around" thing, makes it fail with big numbers, such as 1000.

So... Is there any way to make it be defined by x or y VALUES instead of x or y PIXELS?

Comments (8)

photo
1

Have you tried using the values from Corner(5) for scaling?

photo
1

ya conoces los comandos necesarios


un ejemplo con 3 unidades hacia la izquierda

CentreView((corner(1)+corner(3))/2+(3,0))

photo
1

Gracias.

Funcionó de a una unidad, pero estoy tratando de meterla en el otro código:


Si( n>e, Valor(e, n))

Si(x(Esquina(2))<n, VistaCentrada((corner(1)+corner(3))/2+(||n|-|x(Esquina(2))||,0)))

Si( n<a, Valor(a, n))

Si(x(Esquina(4))>n, VistaCentrada((corner(1)+corner(3))/2-(||n|-|x(Esquina(4))||,0)))


Me dice que "algo no está bien", no especifica qué. Pretendo calcular la cantidad de unidades a desplazar en el eje x a partir del dato de la posición de una esquina y el valor actual del número n que voy a representar. Entonces quiero restar el valor de x de una esquina con el valor de n, aplicarle módulo y luego sumarlo o restarlo según para qué lado tenga que avanzar.

photo
1

si lo que quieres es ver el punto (n,0) en el centro pon centreview((n,0))

pero entonces no preguntes cómo mover en centímetros sino como centrar en un punto

photo
1

En realidad no lo quiero ver en el centro, sólo quiero que sea visible. Quería ponerlo un cachito antes que termine la vista gráfica. No justo justo en el borde porque no se verá el rótulo, pero cerca del borde. Por eso estaba buscando un método para desplazar. Por ejemplo si está representado el punto (-5,0) y aparece perfectamente visible cerca del borde izquierdo, y ahora quiero que se represente (-35,0), entonces que se mueva 30 unidades hacia la izquierda, para que el punto (-35,0) aparezca en donde ahora está el (-5,0).

photo
1

pues entonces CentreView((corner(1)+corner(3))/2+(-30,0)) como te dije al principio

photo
1

Probé eso y encontré 2 errores:


•Si yo parto de tener centrado (0,0), entonces me centra (-30,0). También funciona para centrar cualquier otro valor en lugar de -30. Pero decía que en realidad estoy buscando que el número quede en el borde del eje x.

• Una vez utilizado este comando para centrar el número (n,0), no puedo reutilizarlo. Si intento volver a centrar en (n,0) siendo n=0, no hay desplazamiento alguno ya que estaría desplazándome (0,0). Ergo necesito definir al valor de x del par ordenado a partir de alguna resta entre mi posición actual y mi posición futura. Por eso había puesto toda esa ecuación llena de módulos y con diferentes condiciones para avanzar que para retroceder, pero evidentemente me equivoqué en algo y no he logrado corregirlo.

photo
1

a partir de alguna resta 


debes aclarar cual es esa resta

es decir: tienes que saber adonde quieres mover o cuanto quieres mover. en el primer caso usa centreview a secas y en el segundo caso en combinacion con corner. yo no puedo saber ni cuanto ni adonde y hacerlo en tu lugar

photo
© 2022 International GeoGebra Institute