I’m wondering if there’s any way to change whether a point on a graph is draggable from within a script. For example, to “lock in” a draggable point when a student presses a button or chooses a certain answer in a checklist.
It would also be nice to be able to toggle whether something in the expression list is shown or hidden, or turn on/off the animations that you set in the expression list.
I don’t see sinks listed for this in the documentation so maybe it’s not currently implemented. If anyone has an idea for a workaround that would be cool.
Expressions are easy to toggle. Just have a variable that will change based on your button press. Then, use that as a restriction, just as you would restrict domain for a function.
For example, in graph CL:
p=button.pressCount
number("p"): numericValue("\mod(${p},2)")
In graph, this function would start displayed, then toggle on/off with the button press.
f(x)=3x+5 {p=0}
Ok thank you, that’s very helpful!
Do you have any suggestions for the dragging thing? You can make a point draggable using 2 numbers with sliders, and then set those numbers in the script as well to prevent the dragging. But a “when” always needs an “otherwise” so is there a way to only set a value for a number when a certain condition is met, and otherwise let it be defined by the slider (that the students can’t see)?
Just did a quick search. The work around for points is to use sliders for the coordinates (say (x_P,y_P) ), as well as for the bounds of the slider (e.g. (x_1<=x_P<=x_2)). Then, capture the coordinates when the button press and set the upper and lower bounds of the slider to those values.
In button CL, for :
capture("x_P"): graph.number("x_P")
capture("y_P): graph.number("_P")
In graph CL (similar for y):
number("x_1"): when button.pressCount>0 button.lastValue("x_P")
otherwise -10 #or whatever you want
number("x_2"): when button.pressCount>0 button.lastValue("x_P")
otherwise 10
You could reenable draggability with more conditions.
You can also put restrictions next to a coordinate as you would with a function, but it will lock that number (unless it’s a function linked to the other coordinate’s slider).
A=(x_1,y_1 {p=0})
can be dragged left to right and toggled as with the function, but y_1
would be locked.
This is great, thanks! I didn’t know you could set slider bounds to variables but that’s good to know in general too.
I just tried what you said in your other reply and ran into the same thing. I wish that we just had sinks for these things, it would be a lot easier.