$\textsf{REPLACE VARIABLE}$

$\textsf{CALCULATE}$

$\textsf{Click to replace into the formula}$

\text{Click to animate}

1 = arrow left, 2 = arrow right, 3 = arrow uo, 4 = arrow down

\textsf{Find the volume of the sphere in terms of }π

\frac{4}{3}\pi r^3

next step

prev step

$\textsf{NEW SPHERE}$

rads = Shuffle({1 / 4, 1 / 2, 3 / 4, 1, 3 / 2, 2, 3, 6, 9, 12, 15})
n = 1 (slider from 1 to 5, step 1)
radGraph: 1.5
l1 = Sequence(5)
example = 1
r = Element(rads, Mod[example, Length[rads]] + 1)
A = Corner(5)
ec1: x = x(Corner[1]) + (x(Corner[2] - Corner[1]) / 800 * 16)
ec2: x = x(Corner[2]) - (x(Corner[2] - Corner[1]) / 800 * 16)
Cor1 = (-1.723064246975386, -1.8043687374749497)
Cor3 = (4.236259908218607, 1.943927855711423)
stage = 1
h = Segment((0, 0), (radGraph, 0))
segColor: If[stage ≟ 0, {37, 37, 37}, {218, 37, 112}] / 255
mult: (4 / 3 * r^(3))
showcalc: stage ≟ 2
onboarding: stage ≟ 1
pulsingSpeed: 8
pulsing = 0.4 (slider from 0 to 1, step 0.1)
onboarding_{1}: onboarding
onboardingX_{1}: 446
onboardingY_{1} = 271
onboardingCase_{1} = 1
OnboardingTextOffset_{1} = onboardingTextOffset(Corner[onboardingText_{1}, 1], Corner[onboardingText_{1}, 3], onboardingCase_{1}, Corner[1], Corner[3], Corner[5])
onboardingDisplayText_{1}: "" + (LaTeX[text3]) + ""
pulsingObject = expandSegment(Vertex[h, 1], Vertex[h, 2], (7 * pulsing), Corner[1], Corner[3], Corner[5])
c = Circle((0, 0), radGraph)
d = Circle((0, 0), radGraph)
ec3: x^(2) + (9 * y^(2)) = radGraph^(2)
f(x) = sqrt(radGraph^(2) - x^(2)) / 3
g(x) = ((-sqrt(radGraph^(2) - x^(2)))) / 3
row2: "\frac{4}{3}\pi\times" + (LaTeX[If[stage ≤ 1, "\textcolor{#DA2570}{▉}^3", ((((If[IsInteger[r], "", "\left("] * "\textcolor{#DA2570}{") * FractionText[r]) * "}") * If[IsInteger[r], "^3", "\right)^3"])]]) + ""
row3: "\frac{4}{3}\pi\times" + (LaTeX[FractionText[r^(3)]]) + ""
isMult3: Mod[rad, 3] ≟ 0
ifNumIsMult3: Mod[Numerator[r], 3] ≟ 0
isDenMult4: Mod[Denominator[r^(3)], 4] ≟ 0
row4: "\frac{" + (LaTeX[If[isDenMult4 ∧ stage ≥ 5, "\overset{\\1}\cancel", ""]]) + "{4}}{" + (LaTeX[If[ifNumIsMult3 ∧ stage ≥ 5, "\underset{\\1}\cancel", ""]]) + "{3}}\times\frac{" + (LaTeX[If[ifNumIsMult3 ∧ stage ≥ 5, (("\overset{" * Numerator[r^(3) / 3]) * "\\}\cancel"), ""]]) + "{" + (LaTeX[Numerator[r^(3)]]) + "}}{" + (LaTeX[If[isDenMult4 ∧ stage ≥ 5, (("\underset{\\" * Denominator[r^(3)] / 4) * "}\cancel"), ""]]) + "{" + (LaTeX[Denominator[r^(3)]]) + "}}\times\pi"
row5: "" + (LaTeX[FractionText[(4 * r^(3) / 3)]]) + "\times\pi"
row6: "" + (LaTeX[FractionText[(4 / 3 * r^(3))]]) + "\pi\text{ cubic units}"
equat = TableText(First[{{"V", "=", row1}, {"", "=", row2}, {"", "=", row3}, {"", "=", row4}, {"", "=", row5}, {"", "=", row6}}, Max[stage, 2]], "l", 10, 50)
text1 = Text(("r=" * FractionText[r]), Midpoint[h], true, true, 0, 1)
tabOrder: {text4, h, equat, btnPrev, btnNext, btnNew}

Tool: expandSegment
expandSegment(A,B,pixelGap,Corner1,Corner3,Corner5)
Input: A, B, pixelGap, Corner1, Corner3, Corner5
Output: newPoly

distanceX: (pixelGap / x(Corner5) * (x(Corner3) - x(Corner1)))
distanceY: (pixelGap / y(Corner5) * (y(Corner3) - y(Corner1)))
pointGap: distanceX
xyScale: distanceY / distanceX
A: (0, 0)
vecAB: B - A
pVec: (20 * UnitVector[(((-y(vecAB))) / xyScale, (x(vecAB) * xyScale))])
pVecAngle = Angle(xAxis, Line[(0, 0), pVec])
realAngle = If(pVecAngle ≟ pi / 2 ∨ pVecAngle ≟ (3 * pi / 2), pVecAngle, atand(tan(pVecAngle) / xyScale))
curveFunction = CurveCartesian((pointGap * cos(u)), ((pointGap * xyScale) * sin(u)), u, 0, (2 * pi))
K: curveFunction(realAngle)
vSpace = Vector(K)
allPoints: {A + vSpace, A - vSpace, B - vSpace, B + vSpace}
newPoly = Polygon(allPoints)

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)

Tool: onboardingTextOffset (command onboardingTextOffset1)
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)