Difference between revisions of "DynamicCoordinates Command"

From GeoGebra Manual
Jump to: navigation, search
m (Text replace - "<div class="box info"> 48px|left This page is part of the official manual for print and pdf. For structural reasons normal users can't edit this page. If you found any errors on this page please contact )
Line 2: Line 2:
 
{{command|geogebra}}
 
{{command|geogebra}}
 
;DynamicCoordinates[ <Point A>, <Number X>, <Number Y> ]
 
;DynamicCoordinates[ <Point A>, <Number X>, <Number Y> ]
:Creates a point with coords (X, Y). This point is dependent, but can be moved. Whenever you try to move the new point to coordinates (x,y),  point ''A'' is moved there and coordinates for the new point are calculated. Works best if point ''A'' is not [[Object Properties#Visibility|visible]] and dragging is done with the mouse. At least one of ''X'' and ''Y'' should depend on ''A''.
+
:Creates a point with coords (X, Y). This point is dependent, but can be moved. Whenever you try to move the new point to coordinates (x, y),  point ''A'' is moved there and coordinates for the new point are calculated. Works best if point ''A'' is not [[Object Properties#Visibility|visible]] and dragging is done with the mouse. At least one of ''X'' and ''Y'' should depend on ''A''.
  
 
{{Example|1=<div>
 
{{Example|1=<div>
*<code>B = DynamicCoordinates[A, round(x(A)), round(y(A))]</code>.When you try to move ''B'' to  (1.3, 2.1) using the [[Image:Tool Move.gif]] [[Move Tool]], point ''A'' becomes (1.3, 2.1) and ''B'' appears at (1,2).  
+
*Let ''A'' be a point and <code>B = DynamicCoordinates[A, round(x(A)), round(y(A))]</code>. When you try to move ''B'' to  (1.3, 2.1) using the [[Image:Tool Move.gif]] [[Move Tool]], point ''A'' becomes (1.3, 2.1) and ''B'' appears at (1,2).  
*<code>B = DynamicCoordinates[A, x(A), min(y(A), sin(x(A))) ]</code> creates a point under sin(x).  
+
*<code>B = DynamicCoordinates[A, x(A), min(y(A), sin(x(A)))]</code> creates a point under sin(x).  
:{{note|1=PointIn[y<sin(x)] is the easier solution in this case.}}
+
:{{note|1=<code>PointIn[y < sin(x)]</code> is the easier solution in this case.}}
*The following examples show other ways to restrain the positions of a point C:  let A = Point[xAxis] and B = Point[xAxis]. Now type in the [[Input Bar]]:<br><code>DynamicCoordinates[B, Min[x(B), x(A)], 0]</code>, and press {{KeyCode|Enter}}<br>
+
The following examples show other ways to restrain the positions of a point ''C'':   
:<code>SetVisibleInView[B, 1, false]</code>, and press {{KeyCode|Enter}}<br>
+
*Let <code>A = Point[xAxis]</code> and <code>B = Point[xAxis]</code>.  
:<code>SetLayer[C,  1]</code>and press {{KeyCode|Enter}}<br>Now, C cannot be moved to the right of A.
+
:Now type in the [[Input Bar]]:  
*Define A=(1,2). Now, type in the [[Input Bar]]:<br> <code>SetVisibleInView[A, 1, false</code> and press {{KeyCode|Enter}}<br><code> B = DynamicCoordinates[A, If[x(A) > 3, 3, If[x(A) < -(3), -3, If[x(A)< 0, round(x(A)), x(A)]]], If[x(A) < 0, 0.5, If[y(A) > 2, 2, If[y(A) <0, 0, y(A)]]]]</code>, and press {{KeyCode|Enter}},
+
:<code>DynamicCoordinates[B, Min[x(B), x(A)], 0]</code> and press {{KeyCode|Enter}}  
*This example makes A a sticky point when a point C is dragged near it.<br>Define A = (1,2) and B = (2,3). Now, type in the [[Input Bar]]:<br><code>SetVisibleInView[B, 1, false]</code> and press {{KeyCode|Enter}}<br><code>C = DynamicCoordinates[B, If[Distance[A, B] < 1, x(A), x(B)], If[Distance[A, B] < 1, y(A), y(B)]]</code>.</div>}}
+
:<code>SetVisibleInView[B, 1, false]</code> and press {{KeyCode|Enter}}  
 +
:<code>SetLayer[C,  1]</code> and press {{KeyCode|Enter}}
 +
:Now, ''C'' cannot be moved to the right of ''A''.
 +
*Define <code>A=(1, 2)</code>.  
 +
:Now, type in the [[Input Bar]]:
 +
:<code>SetVisibleInView[A, 1, false]</code> and press {{KeyCode|Enter}}
 +
:<code>B = DynamicCoordinates[A, If[x(A) > 3, 3, If[x(A) < -3, -3, If[x(A) < 0, round(x(A)), x(A)]]], If[x(A) < 0, 0.5, If[y(A) > 2, 2, If[y(A) < 0, 0, y(A)]]]]</code> and press {{KeyCode|Enter}}
 +
*This example makes ''A'' a sticky point when a point ''C'' is dragged near it. Define <code>A = (1, 2)</code> and <code>B = (2, 3)</code>.  
 +
:Now, type in the [[Input Bar]]:
 +
:<code>SetVisibleInView[B, 1, false]</code> and press {{KeyCode|Enter}}
 +
:<code>C = DynamicCoordinates[B, If[Distance[A, B] < 1, x(A), x(B)], If[Distance[A, B] < 1, y(A), y(B)]]</code>.</div>}}

Revision as of 10:54, 27 August 2013



DynamicCoordinates[ <Point A>, <Number X>, <Number Y> ]
Creates a point with coords (X, Y). This point is dependent, but can be moved. Whenever you try to move the new point to coordinates (x, y), point A is moved there and coordinates for the new point are calculated. Works best if point A is not visible and dragging is done with the mouse. At least one of X and Y should depend on A.
Example:
  • Let A be a point and B = DynamicCoordinates[A, round(x(A)), round(y(A))]. When you try to move B to (1.3, 2.1) using the Tool Move.gif Move Tool, point A becomes (1.3, 2.1) and B appears at (1,2).
  • B = DynamicCoordinates[A, x(A), min(y(A), sin(x(A)))] creates a point under sin(x).
Note: PointIn[y < sin(x)] is the easier solution in this case.

The following examples show other ways to restrain the positions of a point C:

  • Let A = Point[xAxis] and B = Point[xAxis].
Now type in the Input Bar:
DynamicCoordinates[B, Min[x(B), x(A)], 0] and press Enter
SetVisibleInView[B, 1, false] and press Enter
SetLayer[C, 1] and press Enter
Now, C cannot be moved to the right of A.
  • Define A=(1, 2).
Now, type in the Input Bar:
SetVisibleInView[A, 1, false] and press Enter
B = DynamicCoordinates[A, If[x(A) > 3, 3, If[x(A) < -3, -3, If[x(A) < 0, round(x(A)), x(A)]]], If[x(A) < 0, 0.5, If[y(A) > 2, 2, If[y(A) < 0, 0, y(A)]]]] and press Enter
  • This example makes A a sticky point when a point C is dragged near it. Define A = (1, 2) and B = (2, 3).
Now, type in the Input Bar:
SetVisibleInView[B, 1, false] and press Enter
C = DynamicCoordinates[B, If[Distance[A, B] < 1, x(A), x(B)], If[Distance[A, B] < 1, y(A), y(B)]].
© 2024 International GeoGebra Institute