Predicting Rotated Points Around the Origin
Loading the math board and drawing, please wait…
This example demonstrates predicting the positions of points rotated around the origin on a coordinate plane. Key math concepts include rotation transformations and coordinate geometry. GeoGebra commands used include Rotate, Point, Angle, Circle, and Polygon. Suitable for 6-8 grade students to practice rotation transformations.
GeoGebra Commands & Parameters
RandomUniform(0, 0.99, 200) → allRandoms, {0.39094281528865005, 0.5549921012151496, 0.771112890541311, 0.2671017582754997, 0.7131870347172697, 0.5478020752872846, 0.6472263125150983, 0.2641934108984837, 0.07123985014542239, 0.9898405607553976, 0.9478270529143664, 0.3459808086281608, 0.493035115511714, 0.9785435354123563, 0.979433907888293, 0.22273105504025328, 0.5496665523878602, 0.3877786357832911, 0.562484846357275, 0.9321447700666438, 0.9064936268837036, 0.6752953755039968, 0.8014399728204271, 0.6246671015839705, 0.9422988680179671, 0.6577792415547986, 0.09999734264603975, 0.4739800056925356, 0.48722779899618535, 0.5513480091349353, 0.9692370626853505, 0.3819351412632958, 0.03402157832975711, 0.2971540081201353, 0.963257994527265, 0.12073029230700935, 0.5742693475963996, 0.444520034351519, 0.12205610487712326, 0.6346159832041259, 0.9020615520442803, 0.5077378440202316, 0.7950173966299368, 0.6188381071302652, 0.5615174637270759, 0.1472965368656586, 0.6704579827189864, 0.25487976478070185, 0.0021889240483203664, 0.18188490723270037, 0.1171428470309382, 0.6783610202252699, 0.39731004304805123, 0.04402463138717166, 0.16264955831204597, 0.6191869908809102, 0.41426569121489015, 0.7996431955886801, 0.15081695377593216, 0.0927052398074998, 0.654494669218681, 0.740283728076683, 0.4863287861534352, 0.28574033770033236, 0.09132163253187997, 0.9459748250484687, 0.6387305817478992, 0.25241873011416305, 0.6389293267960882, 0.3270478082571881, 0.29086389758904646, 0.06167945818066528, 0.2538370071366111, 0.004389362954897454, 0.7978242587916904, 0.8812858236213365, 0.2018421294413007, 0.04975653989378448, 0.6121109022464827, 0.5820111184090815, 0.1184121808931156, 0.14085724777198394, 0.8386330930764162, 0.9804658431714633, 0.27898035605954025, 0.6899128193987425, 0.46967455616303894, 0.509766702940134, 0.8275029491349395, 0.8893706550517405, 0.7447897557924434, 0.33391753040637556, 0.396977704486898, 0.9243236071517951, 0.043916946865393956, 0.7443792634591989, 0.11440251020244437, 0.698018686239107, 0.1837402197371566, 0.15585184770081323, 0.5448701069821831, 0.2646015769081429, 0.5775191032784379, 0.47277245116813243, 0.07514852547403757, 0.2419445572290974, 0.6972269332795267, 0.7184550606327227, 0.20618954083748917, 0.5170442620821876, 0.2938995078051504, 0.8451534114231601, 0.17653590334908978, 0.5770513461149159, 0.677594201394467, 0.9756244247748409, 0.46456544813486295, 0.940508551002853, 0.7222948078138317, 0.6250017523473572, 0.3469144141047768, 0.3458241909472996, 0.6134703573680476, 0.4959585977500161, 0.49326357414243194, 0.3473971182395349, 0.44680724559310936, 0.09024702737540338, 0.6339511313660974, 0.4541354453113205, 0.6958814009755717, 0.3057451224629943, 0.7765918457534505, 0.8303743269233245, 0.07422325576242246, 0.01012661479464968, 0.0010372275475672077, 0.13540052764333316, 0.8433509596483596, 0.4801868295363576, 0.9086030035726508, 0.12492862435095761, 0.8829082581475632, 0.5897164563684093, 0.05151890509967061, 0.2459513187698154, 0.5820409902686206, 0.4886098367867084, 0.8520237934552247, 0.45539879614641493, 0.6525821909979556, 0.5716265012251338, 0.9074320130467967, 0.1829943346416283, 0.42448832151872556, 0.6268947651104648, 0.9278400401708631, 0.5795809906265033, 0.32228040687113124, 0.8918536047663014, 0.4769203445559089, 0.8040211114553516, 0.6979910929966022, 0.14787395925648655, 0.013467829434437289, 0.364534018790765, 0.7213047047194069, 0.70428327883612, 0.6720168330993088, 0.2340376687075552, 0.9512004786904767, 0.817936295974521, 0.5849399218217333, 0.9436999227188676, 0.5454691426324434, 0.5658333748292368, 0.6259678126004649, 0.3844803029717938, 0.34497189117010646, 0.12558222787126763, 0.77603752892285, 0.5829569268638563, 0.06844539739461628, 0.1017310148427321, 0.7667796255109384, 0.6751851754062438, 0.6710305451385675, 0.19517116916435975, 0.4047969514314859, 0.49072222971713375, 0.4755122046697603, 0.48791569765102005, 0.2711676925748555, 0.2482786138584023, 0.029506070898753633, 0.2966031266825105, 0.6453207153257146, 0.40472150692308306, 0.8345137861176323, 0.5550603445504966}Flatten(Sequence[Sequence[(m, n), m, -8, 8], n, -8, 8]) → DomainPointsIf(countQuestion < 4, If[animationSlider < 2 / (countQuestion + 1), 0, animationSlider < 3 / (countQuestion + 1), ((animationSlider - 2 / (countQuestion + 1)) * (countQuestion + 1)), 1], If[animationSlider < 1 / 2, 0, animationSlider < 3 / 4, ((animationSlider - 1 / 2) * 4), 1]) → animationSlider3If(countQuestion < 4, If[animationSlider < 1 / (countQuestion + 1), 0, animationSlider < 2 / (countQuestion + 1), ((animationSlider - 1 / (countQuestion + 1)) * (countQuestion + 1)), 1], If[animationSlider < 1 / 4, 0, animationSlider < 1 / 2, ((animationSlider - 1 / 4) * 4), 1]) → animationSlider2If(countQuestion < 4, If[animationSlider < 1 / (countQuestion + 1), (animationSlider * (countQuestion + 1)), 1], If[animationSlider < 1 / 4, (animationSlider * 4), 1]) → animationSlider1If(countQuestion < 3, 0, animationSlider < 3 / 4, 0, ((animationSlider - 3 / 4) * 4)) → animationSlider4If(countQuestion < 4, countQuestion + 1, 4) → numPointsFirst(inputSaved, numPoints) → inputSavedUseTake(allRandoms, randIndex, randIndex + numRandoms - 1) → currentRandomSeedsElement({-1, 1}, 1 + floor((currentRandomSeeds(3) * 2))) → randomDirectionIf(animationSlider4 ≤ 1, ballSpin(animationSlider4), abs(randomAngle / °)) → animationSolution4If(animationSlider3 ≤ 1, ballSpin(animationSlider3), abs(randomAngle / °)) → animationSolution3If(animationSlider2 ≤ 1, ballSpin(animationSlider2), abs(randomAngle / °)) → animationSolution2If(animationSlider1 ≤ 1, ballSpin(animationSlider1), abs(randomAngle / °)) → animationSolution1If(randomAngle < 0, 360° + randomAngle, randomAngle) → randomAngleMeasureIf(countQuestion ≟ 0, 1, 1 + floor((currentRandomSeeds(11) * 4))) → quadrantIf(countQuestion < 8 ∧ (quadrant ≟ 1 ∨ quadrant ≟ 4), 0, -8) → xMinIf(countQuestion < 8 ∧ (quadrant ≟ 1 ∨ quadrant ≟ 2), 0, -8) → yMinIf(countQuestion < 8 ∧ (quadrant ≟ 3 ∨ quadrant ≟ 4), 0, 8) → yMaxIf(countQuestion < 8 ∧ (quadrant ≟ 2 ∨ quadrant ≟ 3), 0, 8) → xMaxLength(PointRandomChoices1) → lenChoices1If(countQuestion ≟ 0, PointRandomChoices1(30), Element[PointRandomChoices1, 1 + floor((currentRandomSeeds(5) * lenChoices1))]) → PointRandom1Rotate(PointRandom1, (If[randomAngle < 0, -1, 1] * animationSolution1°)) → PointAnimation1Length(PointRandomChoices2) → lenChoices2Element(PointRandomChoices2, If[countQuestion ≟ 0, 1, 1 + floor((currentRandomSeeds(8) * lenChoices2))]) → PointRandom2Rotate(PointRandom2, (If[randomAngle < 0, -1, 1] * animationSolution2°)) → PointAnimation2Length(PointRandomChoices3) → lenChoices3Element(PointRandomChoices3, If[countQuestion ≟ 0, 1, 1 + floor((currentRandomSeeds(9) * lenChoices3))]) → PointRandom3Rotate(PointRandom3, (If[randomAngle < 0, -1, 1] * animationSolution3°)) → PointAnimation3Length(PointRandomChoices4) → lenChoices4Element(PointRandomChoices4, If[countQuestion ≟ 0, 1, 1 + floor((currentRandomSeeds(10) * lenChoices4))]) → PointRandom4Rotate(PointRandom4, (If[randomAngle < 0, -1, 1] * animationSolution4°)) → PointAnimation4Rotate({PointRandom1, PointRandom2, PointRandom3, PointRandom4}, randomAngle) → PointSolutionsFirst(PointSolutions, numPoints) → PointSolutionsUseZip(n ∈ PointSolutionsUse ∧ n ∈ inputSavedUse, n, First[PointsAnimation, numPoints]) → correctAnimatePoint(DomainPoints) → inputPoint4Point(DomainPoints) → inputPoint3Point(DomainPoints) → inputPoint2Point(DomainPoints) → inputPoint1First(inputCurrent, numPoints) → inputCurrentUseIf(countQuestion < 4, ceil((animationSlider * (countQuestion + 1))), ceil((animationSlider * 4))) → angleIndexIf(randomAngle < 0, Angle[PointsAnimation(angleIndex), (0, 0), PointRandoms(angleIndex)], Angle[PointRandoms(angleIndex), (0, 0), PointsAnimation(angleIndex)]) → solutionAngle1If(randomAngle > 0, "counterclockwise", "clockwise") → textDirectionIf(countQuestion < 5, 8, 16) → yAddIf(countQuestion < 5, 0, 8) → xAddAngle(PointRandom1, (0, 0), inputPoint1) → angleRotationCircle((0, 0), PointRandom1) → circleRotationPolygon(Zip[PixelsToPoint[Corner[1], Corner[3], Corner[5], A], A, {(pixelsLeft, pixelsTop), (pixelsLeft, y(Corner[5]) - pixelsBottom), Corner[5] - (pixelsRight, pixelsBottom), (x(Corner[5]) - pixelsRight, pixelsTop)}]) → borderBoxCorner(5) → layoutAppSizePolygon({((-graphNum), (-graphNum)), ((-graphNum), graphNum), (graphNum, graphNum), (graphNum, (-graphNum))}) → problemAreaRotate(PointRandom1, randomAngle) → PointStartAnimation2Point((0, 0), Vector[UnitVector[Rotate[PointRandom1, randomAngle / 2]]]) → PointStartArcIf(randomAngleMeasure ≟ 90°, "-y", randomAngleMeasure ≟ 180°, "-x", randomAngleMeasure ≟ 270°, "y", "x") → xSignIf(randomAngleMeasure ≟ 90°, "x", randomAngleMeasure ≟ 180°, "-y", randomAngleMeasure ≟ 270°, "-x", "y") → ySignIf(x(PointLbl2) < -8, (-8, y(PointLbl2) - numP2Height), numP2Width + x(PointLbl2) > 8, (8 - numP2Width, y(PointLbl2) - numP2Height), y(PointLbl2) > 8, (x(PointLbl2), 8), PointLbl2) → PointLbl2AdjIf(x(PointLbl1) < -8, (-8, y(PointLbl1) - numP1Height), numP1Width + x(PointLbl1) > 8, (8 - numP1Width, y(PointLbl1) - numP1Height), y(PointLbl1) > 8, (x(PointLbl1), 8), PointLbl1) → PointLbl1AdjSegment(((-graphNum), 0), (graphNum, 0)) → axisXSegment((0, (-graphNum)), (0, graphNum)) → axisYElement(Sequence[-8, 8] \ {0}, 1 + floor((currentRandomSeeds(2) * 16))) → randomNumYPixelsToPoint(Corner[1], Corner[3], Corner[5], (493, 0)) → PointXIf(countQuestion < 4, 4 / (countQuestion + 1), 1) → speedZip(n ∈ PointSolutionsUse, n, inputSavedUse) → correctIndZip(n ∈ First[PointsAnimation, numPoints], n, inputCurrentUse) → colorIndZip(n ≟ k ∧ n ≠ p, n, inputCurrent, k, inputSaved, p, PointRandoms) → validateByPointTravelingSalesman(PointSolutionsUse) → polyATravelingSalesman(First[PointRandoms, numPoints]) → polyQSegment(PointSolutionsUse(1), PointSolutionsUse(2)) → segASegment(PointRandoms(1), PointRandoms(2)) → segQIf(quadrant ≟ 1 ∨ quadrant ≟ 4, 2, 1) → onboardingCaseonboardingTextOffset(Corner[onboardingText, 1], Corner[onboardingText, 3], onboardingCase, Corner[1], Corner[3], Corner[5]) → OnboardingTextOffsetSum(Sequence[(((If[n ≟ numPoints, If[n > 2, ", and ", n > 1, " and ", ""], n > 1, ", "] * "\(") * PointRandoms(n)) * "\)"), n, 1, numPoints]) → altTextPointsZip(If[n ∧ tries ≤ 1, 1, 0], n, correctAnimate) → addFirstTryIf(angleIndex > 0, addFirstTry(angleIndex), 0) → addValIf(0 < angleIndex ∧ animationSlider < 1, angleIndex - 1, angleIndex) → indexPluscirclePixels(inputPoint1, 10 + (7 * pulsing), Corner[1], Corner[3], Corner[5]) → pulsingObject
AI Drawing Prompt Reference
Draw a coordinate plane with a grid from -8 to 8, four random points that are rotated by a random angle and direction to form a rotated figure. Include a bounding box to enclose these points. The overall graphic illustrates rotation transformations and coordinate geometry.
The prompt above was compiled from the original drawing commands and is for reference only.