sign

rate denominator

rate numerator

\text{Click to start}

#4D4D4D

$\text{Check}$

$\text{NEW PROBLEM}$

Fix position and allow selection for all text objects

Empty all input boxes

\text{This is the answer.}

$\textsf{Rate of change }=\vphantom{b}$

$b=$

Reset app

\textsf{Rate of change is the ratio of differences}\\textsf{in }y\textsf{-values to }x\textsf{-values.}

#006758

#B00020

#252525

#757575

#949494

#E44461

#DA2570

#E66B9E

#3A6ED6

#5991FF

#008475

#0F8538

#00a83c

#5145A8

#6557D2

#8575FF

#903D14

#BD6C43

#C75000

#E07415

\textsf{Drag the points to visualize the}\\textsf{differences between }x\textsf{-values and }\
y\textsf{-values.}

#eeeeee

#2E006758

#2EB00020

step

start input

\text{What is the rate of change for the relation in the table?} 

input1 = NaN
countQuestion = 0
allRandomSeeds = Sequence(Random[0, 99] / 100, A, 1, 200)
numRandoms = 6
randIndex: (Mod[countQuestion, floor(Length[allRandomSeeds] / numRandoms)] * numRandoms) + 1
currentRandomSeeds = Take(allRandomSeeds, randIndex, randIndex + numRandoms - 1)
randomSign = If(currentRandomSeeds(4) ≤ 0.7, 1, -1)
randomb: 1 + floor((currentRandomSeeds(2) * 10))
randoma: 1 + floor((currentRandomSeeds(1) * 10))
rate1: (randomSign * randoma / randomb)
onboarding = false
inputSaved: {NaN}
input2 = NaN
inputCurrent: {input1}
B = (5.000341064524864, 5.69392166828734)
correct1: input1 ≟ randoma
validate = false
showanswer = false
showsolution = false
tries = 0
countCorrect = 0
showhint = false
InputBox1 = Textfield(input1)
InputBox2 = Textfield(input2)
correct2: input2 ≟ randomb
correct: input1 ≟ rate1
showbuttons = true
typicalError1: 0
typicalError2: 0
showhinttypicalerror = false
textCountCorrect: "\text{Number correct: " + (LaTeX[countCorrect]) + " }"
labelBtnValidate: "\text{CHECK (" + (LaTeX[3 - tries]) + ")}"
enableBtnValidate: inputCurrent ≠ inputSaved ∧ inputCurrent ≟ RemoveUndefined[inputCurrent] ∧ (¬onboarding)
pixelsRight: 16
pixelsLeft: 16
pixelsBottom: 16
pixelsTop: 24
layoutY: 178
enableInput: tries < 3 ∧ (¬(validate ∧ correct))
layoutX: 16
layoutAppSize = Corner(5)
textFeedback: "" + (LaTeX[If[correct, "$\text{✓ Correct}$", "$\text{✕ " + (If[tries < 3, "Try again", "Maybe next time"]) + "}$"]]) + ""
pulsingSpeed: 8
pulsing = 0.9 (slider from 0 to 1, step 0.1)
haloPixels: (pulsing * 7)
onboardingDisplayText: "" + (LaTeX[onboardingText]) + ""
A = (4.591072725036432, 5.892161020227049)
C = (4.917208433066277, 6.084005554362252)
pulsingObject = sectorPixels(A, B, C, haloPixels + 40, Corner[1], Corner[3], Corner[5])
displayAngle = sectorPixels(A, B, C, 40, Corner[1], Corner[3], Corner[5])
layoutOnboarding = PointToPixels(Corner[onboardingDisplayText, 2], Corner[1], Corner[3], Corner[5])
onboardingX: 400
onboardingY: 148
onboardingCase: 2
OnboardingTextOffset = onboardingTextOffset(Corner[onboardingText, 1], Corner[onboardingText, 3], onboardingCase, Corner[1], Corner[3], Corner[5])
randomstep: 1 + floor((currentRandomSeeds(3) * 3))
randomStartInput: floor((currentRandomSeeds(5) * 5))
inputs = Sequence(((randomStartInput + (randomstep * kk)) * randomb), kk, 0, 4)
randomStartOutput: floor((currentRandomSeeds(6) * 5))
outputs = Zip(randomStartOutput + (rate1 * kk), kk, inputs)
isTypicalError: ¬correct
textHint: "\textsf{\color{" + (LaTeX[colorOrange]) + "}\bold{Hint}}\\" + (LaTeX[If[showhinttypicalerror, helpTextHintTypicalError]]) + "" + (LaTeX[If[showhint ∧ showhinttypicalerror, "\\"]]) + "" + (LaTeX[If[showhint, helpTextHint]]) + ""
canbesimplified: outputs(2) - outputs(1) ≠ Numerator[randoma / randomb] ∨ randomb ≟ 1
simplifiedRate: "=" + (LaTeX[If[randomSign ≟ -1, "-", ""]]) + "" + (LaTeX[FractionText[abs(rate1)]]) + ""
textSolution: "\textsf{\bold{Possible Solution}}\\
\textsf{Rate of change }=\frac{" + (LaTeX[outputs(2) - outputs(1)]) + "}{" + (LaTeX[inputs(2) - inputs(1)]) + "}" + (LaTeX[If[canbesimplified, simplifiedRate, ""]]) + ""
text1 = TableText(Append["\bold{x}", inputs], Append["\bold{y}", outputs], "vc|_", 100, 50)
D = (4.64167, 5.66)
PointsLeft = Sequence(Translate[D, Vector[(Vector[Corner[4], Corner[1]] / 10 * kk)]], kk, 0, 4)
PointsLeft' = Translate(PointsLeft, Vector[(Vector[Corner[1], Corner[2]] / 800 * 226)])
arcsLeft = Zip(Arc[Circle[Midpoint[PP, QQ], Distance[PP, QQ] / 2], PP, QQ], PP, PointsLeft, QQ, Take[PointsLeft, 2])
arcsRight = Zip(Arc[Circle[Midpoint[QQ, PP], Distance[PP, QQ] / 2], QQ, PP], PP, PointsLeft', QQ, Take[PointsLeft', 2])
ArrowsLeft = Take(PointsLeft, 2)
Arrowsright = Take(PointsLeft', 2)
labelsLeftP = Zip(Translate[Midpoint[PP, QQ], ((-Distance[PP, QQ]), 0)], PP, PointsLeft, QQ, Take[PointsLeft, 2])
labelsRightP = Zip(Translate[Midpoint[PP, QQ], (Distance[PP, QQ], 0)], PP, PointsLeft', QQ, Take[PointsLeft', 2])
labelsLeft = Zip(Text[(If[inputs(2) - inputs(1) ≥ 0, "+", ""] * (inputs(2) - inputs(1))), PP, true, true, 0, 0], PP, labelsLeftP)
labelsRight = Zip(Text[(If[outputs(2) - outputs(1) ≥ 0, "+", ""] * (outputs(2) - outputs(1))), PP, true, true, 0, 0], PP, labelsRightP)
tabOrder: {InputBox1, btnValidate, btnNew}
ArcLeft1 = Point(PointsLeft)
ArcLeft2 = Point(PointsLeft)
ArcRight1 = Point(PointsLeft')
ArcRight2 = Point(PointsLeft')
arc1 = CurveCartesian(Midpoint[ArcLeft1, ArcLeft2] + ((0.2 * cos(t)), (Distance[ArcLeft1, ArcLeft2] / 2 * sin(t))), t, pi / 2, (3 / 2 * pi))
labelHint = Translate(Midpoint[ArcLeft1, ArcLeft2], (-0.35, 0))
Cor1 = (1.7965373444669714, 3.564447339386582)
Cor3 = (6.925181223681358, 6.774645877248979)
text2 = Text(((inputs(2) - inputs(1)) * abs(IndexOf[ArcLeft1, PointsLeft] - IndexOf[ArcLeft2, PointsLeft])))
text3 = Text(("+" * ((inputs(2) - inputs(1)) * abs(IndexOf[ArcLeft1, PointsLeft] - IndexOf[ArcLeft2, PointsLeft]))), labelHint, true, true, 0, 0)
a = CurveCartesian(Midpoint[ArcRight1, ArcRight2] + ((0.2 * cos(t)), (Distance[ArcRight2, ArcRight1] / 2 * sin(t))), t, ((-pi)) / 2, (1 / 2 * pi))
labelHint2 = Translate(Midpoint[ArcRight1, ArcRight2], (0.35, 0))
text4 = Text((If[outputs(2) - outputs(1) ≥ 0, "+", ""] * ((outputs(2) - outputs(1)) * abs(IndexOf[ArcRight2, PointsLeft'] - IndexOf[ArcRight1, PointsLeft']))), labelHint2, true, true, 0, 0)

Tool: PointToPixels
PointToPixels(InputPoint,Corner1,Corner3,Corner5)
Input: InputPoint, Corner1, Corner3, Corner5
Output: OutputPixels

xLeft: x(Corner1)
xRight: x(Corner3)
yTop: y(Corner3)
yBottom: y(Corner1)
yPixels: (y(Corner5) * (yTop - y(InputPoint)) / (yTop - yBottom))
xPixels: (x(Corner5) * (x(InputPoint) - xLeft) / (xRight - xLeft))
OutputPixels: (xPixels, yPixels)

Tool: sectorPixels
sectorPixels(Midpoint,B,C,pixelRadius,Corner1,Corner3,Corner5
Input: A, B, C, pixelRadius, Corner1, Corner3, Corner5
Output: newSector

pointRadius: (pixelRadius / x(Corner5) * (x(Corner3) - x(Corner1)))
BPrime: A + (pointRadius * UnitVector[B - A])
newSector = CircleSector(A, BPrime, C)

Tool: onboardingTextOffset
onboardingTextOffset(textCorner1,textCorner3,case,corner1,corner3,corner5)
Input: CornerText1, CornerText3, case, Corner1, Corner3, Corner5
Output: TextOffset

xPixels: ((x(CornerText3) - x(CornerText1)) * x(Corner5) / (x(Corner3) - x(Corner1)))
yPixels: ((y(CornerText3) - y(CornerText1)) * y(Corner5) / (y(Corner3) - y(Corner1)))
xOffset = Element({27, (-xPixels) + 2, 16 - xPixels / 2, 16 - xPixels / 2}, case)
yOffset = Element({-23, -23, yPixels - 27, -49}, case)
TextOffset: (xOffset, yOffset)