From c48c72536a22a144bf383dc13d287e4a8233878a Mon Sep 17 00:00:00 2001 From: brynnchernosky <56202540+brynnchernosky@users.noreply.github.com> Date: Sat, 6 May 2023 15:39:38 -0400 Subject: review questions appear --- .../nodes/PhysicsBox/PhysicsSimulationBox.tsx | 2493 ++++++++++---------- 1 file changed, 1250 insertions(+), 1243 deletions(-) (limited to 'src/client/views/nodes/PhysicsBox/PhysicsSimulationBox.tsx') diff --git a/src/client/views/nodes/PhysicsBox/PhysicsSimulationBox.tsx b/src/client/views/nodes/PhysicsBox/PhysicsSimulationBox.tsx index 340004cef..7bb5d0e98 100644 --- a/src/client/views/nodes/PhysicsBox/PhysicsSimulationBox.tsx +++ b/src/client/views/nodes/PhysicsBox/PhysicsSimulationBox.tsx @@ -120,7 +120,7 @@ export default class PhysicsSimulationBox extends ViewBoxAnnotatableComponent -
-
-
-
- {!this.dataDoc.simulationPaused && ( -
- -
- )} -
-
- +
+
+
+
+ {!this.dataDoc.simulationPaused && ( +
+ +
)} - displayXVelocity={this.dataDoc.velocityXDisplay} - displayYVelocity={this.dataDoc.velocityYDisplay} - elasticCollisions={this.dataDoc.elasticCollisions} - mass={this.dataDoc.mass} - mode={this.dataDoc.mode} - noMovement={this.dataDoc.noMovement} - paused={this.dataDoc.simulationPaused} - pendulumAngle={this.dataDoc.pendulumAngle} - pendulumLength={this.dataDoc.pendulumLength} - radius={(0.08*this.layoutDoc._height)} - reset={this.dataDoc.simulationReset} - simulationSpeed={this.dataDoc.simulationSpeed} - startPendulumAngle={this.dataDoc.startPendulumAngle} - showAcceleration={this.dataDoc.showAcceleration} - showForceMagnitudes={this.dataDoc.showForceMagnitudes} - showForces={this.dataDoc.showForces} - showVelocity={this.dataDoc.showVelocity} - simulationType={this.dataDoc.simulationType} - springConstant={this.dataDoc.springConstant} - springStartLength={this.dataDoc.springStartLength} - springRestLength={this.dataDoc.springRestLength} - startForces={this.dataDoc.startForces} - startPosX={this.dataDoc.startPosX} - startPosY={this.dataDoc.startPosY ?? 0} - startVelX={this.dataDoc.startVelX} - startVelY={this.dataDoc.startVelY} - timestepSize={0.05} - updateDisplay={this.dataDoc.displayChange} - updatedForces={this.dataDoc.updatedForces} - wedgeHeight={this.dataDoc.wedgeHeight} - wedgeWidth={this.dataDoc.wedgeWidth} - xMax={this.xMax} - xMin={this.xMin} - yMax={this.yMax} - yMin={this.yMin} - /> - {this.dataDoc.simulationType == "Pulley" && ( +
+
- )} -
-
- {(this.dataDoc.simulationType == "One Weight" || - this.dataDoc.simulationType == "Inclined Plane") && this.wallPositions && - this.wallPositions.map((element, index) => { - return ( - - ); - })} + {this.dataDoc.simulationType == "Pulley" && ( + + )} +
+
+ {(this.dataDoc.simulationType == "One Weight" || + this.dataDoc.simulationType == "Inclined Plane") && this.wallPositions && + this.wallPositions.map((element, index) => { + return ( + + ); + })} +
-
-
-
- - {this.dataDoc.simulationPaused && this.dataDoc.mode != "Tutorial" && ( - { - this.dataDoc.simulationPaused = (false); +
+
+ + {this.dataDoc.simulationPaused && this.dataDoc.mode != "Tutorial" && ( + { + this.dataDoc.simulationPaused = (false); + }} + > + + + )} + {!this.dataDoc.simulationPaused && this.dataDoc.mode != "Tutorial" && ( + { + this.dataDoc.simulationPaused = (true); + }} + > + + + )} + {this.dataDoc.simulationPaused && this.dataDoc.mode != "Tutorial" && ( + { + this.dataDoc.simulationReset = (!this.dataDoc.simulationReset); + }} + > + + + )} + +
+ +
+
+ +
+
+ {this.dataDoc.mode == "Review" && this.dataDoc.simulationType != "Inclined Plane" && ( +
+

{this.dataDoc.simulationType} review problems in progress!

+
+
+ )} + {this.dataDoc.mode == "Review" && this.dataDoc.simulationType == "Inclined Plane" && ( +
+ {!this.dataDoc.hintDialogueOpen && ( + { + this.dataDoc.hintDialogueOpen = (true); + }} + sx={{ + position: "fixed", + left: this.xMax - 50 + "px", + top: this.yMin + 14 + "px", + }} + > + + + )} + this.dataDoc.hintDialogueOpen = (false)} > - - - )} - {this.dataDoc.simulationPaused && this.dataDoc.mode != "Tutorial" && ( - { - this.dataDoc.simulationReset = (!this.dataDoc.simulationReset); + Hints + + {this.dataDoc.selectedQuestion.hints && (this.dataDoc.selectedQuestion.hints.map((hint, index) => { + return ( +
+ +
+ + + Hint {index + 1}: {hint.description} + + + {hint.content} +
+
+
+ ); + }))} +
+ + + +
+
+
+

{this.dataDoc.questionPartOne}

+

{this.dataDoc.questionPartTwo}

+
+
+ {this.dataDoc.selectedQuestion.answerParts.includes("force of gravity") && ( + Gravity magnitude

} + lowerBound={0} + dataDoc={this.dataDoc} + prop={'reviewGravityMagnitude'} + step={0.1} + unit={"N"} + upperBound={50} + value={this.dataDoc.reviewGravityMagnitude} + showIcon={this.dataDoc.showIcon} + correctValue={this.dataDoc.answers[this.dataDoc.selectedQuestion.answerParts.indexOf("force of gravity")]} + labelWidth={"7em"} + /> + )} + {this.dataDoc.selectedQuestion.answerParts.includes("angle of gravity") && ( + Gravity angle

} + lowerBound={0} + dataDoc={this.dataDoc} + prop={'reviewGravityAngle'} + step={1} + unit={"°"} + upperBound={360} + value={this.dataDoc.reviewGravityAngle} + radianEquivalent={true} + showIcon={this.dataDoc.showIcon} + correctValue={this.dataDoc.answers[this.dataDoc.selectedQuestion.answerParts.indexOf("angle of gravity")]} + labelWidth={"7em"} + /> + )} + {this.dataDoc.selectedQuestion.answerParts.includes("normal force") && ( + Normal force magnitude

} + lowerBound={0} + dataDoc={this.dataDoc} + prop={'reviewNormalMagnitude'} + step={0.1} + unit={"N"} + upperBound={50} + value={this.dataDoc.reviewNormalMagnitude} + showIcon={this.dataDoc.showIcon} + correctValue={this.dataDoc.answers[this.dataDoc.selectedQuestion.answerParts.indexOf("normal force")]} + labelWidth={"7em"} + /> + )} + {this.dataDoc.selectedQuestion.answerParts.includes("angle of normal force") && ( + Normal force angle

} + lowerBound={0} + dataDoc={this.dataDoc} + prop={'reviewNormalAngle'} + step={1} + unit={"°"} + upperBound={360} + value={this.dataDoc.reviewNormalAngle} + radianEquivalent={true} + showIcon={this.dataDoc.showIcon} + correctValue={this.dataDoc.answers[this.dataDoc.selectedQuestion.answerParts.indexOf("angle of normal force")]} + labelWidth={"7em"} + /> + )} + {this.dataDoc.selectedQuestion.answerParts.includes("force of static friction") && ( + Static friction magnitude

} + lowerBound={0} + dataDoc={this.dataDoc} + prop={'reviewStaticMagnitude'} + step={0.1} + unit={"N"} + upperBound={50} + value={this.dataDoc.reviewStaticMagnitude} + showIcon={this.dataDoc.showIcon} + correctValue={this.dataDoc.answers[this.dataDoc.selectedQuestion.answerParts.indexOf("force of static friction")]} + labelWidth={"7em"} + /> + )} + {this.dataDoc.selectedQuestion.answerParts.includes("angle of static friction") && ( + Static friction angle

} + lowerBound={0} + dataDoc={this.dataDoc} + prop={'reviewStaticAngle'} + step={1} + unit={"°"} + upperBound={360} + value={this.dataDoc.reviewStaticAngle} + radianEquivalent={true} + showIcon={this.dataDoc.showIcon} + correctValue={this.dataDoc.answers[this.dataDoc.selectedQuestion.answerParts.indexOf("angle of static friction")]} + labelWidth={"7em"} + /> + )} + {this.dataDoc.selectedQuestion.answerParts.includes("coefficient of static friction") && ( + + μs + + } + lowerBound={0} + dataDoc={this.dataDoc} + prop={'coefficientOfStaticFriction'} + step={0.1} + unit={""} + upperBound={1} + value={this.dataDoc.coefficientOfStaticFriction} + effect={this.updateReviewForcesBasedOnCoefficient} + showIcon={this.dataDoc.showIcon} + correctValue={this.dataDoc.answers[this.dataDoc.selectedQuestion.answerParts.indexOf("coefficient of static friction")]} + /> + )} + {this.dataDoc.selectedQuestion.answerParts.includes("wedge angle") && ( + θ} + lowerBound={0} + dataDoc={this.dataDoc} + prop={'wedgeAngle'} + step={1} + unit={"°"} + upperBound={49} + value={this.dataDoc.wedgeAngle ?? 26} + effect={(val: number) => { + this.changeWedgeBasedOnNewAngle(val); + this.updateReviewForcesBasedOnAngle(val); + }} + radianEquivalent={true} + showIcon={this.dataDoc.showIcon} + correctValue={this.dataDoc.answers[this.dataDoc.selectedQuestion.answerParts.indexOf("wedge angle")]} + /> + )} +
+
+
+ )} + {this.dataDoc.mode == "Tutorial" && ( +
+
+

Problem

+

{this.dataDoc.selectedTutorial.question}

+
+
- - - )} - -
- + + +
+
+ {(this.dataDoc.simulationType == "One Weight" || + this.dataDoc.simulationType == "Inclined Plane" || + this.dataDoc.simulationType == "Pendulum") &&

Resources

} + {this.dataDoc.simulationType == "One Weight" && ( + + )} + {this.dataDoc.simulationType == "Inclined Plane" && ( + + )} + {this.dataDoc.simulationType == "Pendulum" && ( + + )}
-
- -
-
- {this.dataDoc.mode == "Review" && this.dataDoc.simulationType != "Inclined Plane" && ( -
-

{this.dataDoc.simulationType} review problems in progress!

-
-
- )} - {this.dataDoc.mode == "Review" && this.dataDoc.simulationType == "Inclined Plane" && ( -
- {!this.dataDoc.hintDialogueOpen && ( - { - this.dataDoc.hintDialogueOpen = (true); - }} - sx={{ - position: "fixed", - left: this.xMax - 50 + "px", - top: this.yMin + 14 + "px", +

this.dataDoc.mode = ("Tutorial")} > - - - )} -

this.dataDoc.hintDialogueOpen = (false)} - > - Hints - - {this.dataDoc.selectedQuestion.hints && (this.dataDoc.selectedQuestion.hints.map((hint, index) => { - return ( -
- -
- - - Hint {index + 1}: {hint.description} - - - {hint.content} -
-
-
- ); - }))} -
- + {" "} + Go to walkthrough{" "} +

+
+ - -
-
-
-

{this.dataDoc.questionPartOne}

-

{this.dataDoc.questionPartTwo}

-
- {this.dataDoc.selectedQuestion.answerParts.includes("force of gravity") && - (Gravity magnitude

} - lowerBound={0} +
+ )} + {this.dataDoc.mode == "Freeform" && ( +
+ + + {this.dataDoc.simulationType == "One Weight" && ( + + this.dataDoc.elasticCollisions= (!this.dataDoc.elasticCollisions) + } + /> + } + label="Make collisions elastic" + labelPlacement="start" + /> + )} + this.dataDoc.showForces = (!this.dataDoc.showForces)} + /> + } + label="Show force vectors" + labelPlacement="start" + /> + {(this.dataDoc.simulationType == "Inclined Plane" || + this.dataDoc.simulationType == "Pendulum") && ( + + this.dataDoc.showComponentForces = (!this.dataDoc.showComponentForces) + } + /> + } + label="Show component force vectors" + labelPlacement="start" + /> + )} + this.dataDoc.showAcceleration = (!this.dataDoc.showAcceleration)} + /> + } + label="Show acceleration vector" + labelPlacement="start" + /> + this.dataDoc.showVelocity = (!this.dataDoc.showVelocity)} + /> + } + label="Show velocity vector" + labelPlacement="start" + /> + Speed} + lowerBound={1} dataDoc={this.dataDoc} - prop={'reviewGravityMagnitude'} - step={0.1} - unit={"N"} - upperBound={50} - value={this.dataDoc.reviewGravityMagnitude} - showIcon={false} - correctValue={this.dataDoc.answers[this.dataDoc.selectedQuestion.answerParts.indexOf("force of gravity")]} - labelWidth={"7em"} - />) - } - {this.dataDoc.selectedQuestion.answerParts.includes("angle of gravity") && ( + prop={'simulationSpeed'} + step={1} + unit={"x"} + upperBound={10} + value={this.dataDoc.simulationSpeed ?? 2} + labelWidth={"5em"} + /> + {this.dataDoc.simulationPaused && this.dataDoc.simulationType != "Circular Motion" && ( + Gravity} + lowerBound={-30} + dataDoc={this.dataDoc} + prop={'gravity'} + step={0.01} + unit={"m/s2"} + upperBound={0} + value={this.dataDoc.gravity ?? -9.81} + effect={(val: number) => { + this.setupSimulation(this.dataDoc.simulationType, this.dataDoc.mode) + }} + labelWidth={"5em"} + /> + )} + {this.dataDoc.simulationPaused && this.dataDoc.simulationType != "Pulley" && ( + Mass} + lowerBound={1} + dataDoc={this.dataDoc} + prop={'mass'} + step={0.1} + unit={"kg"} + upperBound={5} + value={this.dataDoc.mass ?? 1} + effect={(val: number) => { + this.setupSimulation(this.dataDoc.simulationType, this.dataDoc.mode) + }} + labelWidth={"5em"} + /> + )} + {this.dataDoc.simulationPaused && this.dataDoc.simulationType == "Pulley" && ( + Red mass} + lowerBound={1} + dataDoc={this.dataDoc} + prop={'mass'} + step={0.1} + unit={"kg"} + upperBound={5} + value={this.dataDoc.mass ?? 1} + effect={(val: number) => { + this.setupSimulation(this.dataDoc.simulationType, this.dataDoc.mode) + }} + labelWidth={"5em"} + /> + )} + {this.dataDoc.simulationPaused && this.dataDoc.simulationType == "Pulley" && ( + Blue mass} + lowerBound={1} + dataDoc={this.dataDoc} + prop={'mass2'} + step={0.1} + unit={"kg"} + upperBound={5} + value={this.dataDoc.mass2 ?? 1} + effect={(val: number) => { + this.setupSimulation(this.dataDoc.simulationType, this.dataDoc.mode) + }} + labelWidth={"5em"} + /> + )} + {this.dataDoc.simulationPaused && this.dataDoc.simulationType == "Circular Motion" && ( + Rod length} + lowerBound={100} + dataDoc={this.dataDoc} + prop={'circularMotionRadius'} + step={5} + unit={"m"} + upperBound={250} + value={this.dataDoc.circularMotionRadius ?? 100} + effect={(val: number) => { + this.setupSimulation(this.dataDoc.simulationType, this.dataDoc.mode) + }} + labelWidth={"5em"} + /> + )} + + + {this.dataDoc.simulationType == "Spring" && this.dataDoc.simulationPaused && ( +
Gravity angle

} - lowerBound={0} + label={ + Spring stiffness + } + lowerBound={0.1} dataDoc={this.dataDoc} - prop={'reviewGravityAngle'} + prop={'springConstant'} step={1} - unit={"°"} - upperBound={360} - value={this.dataDoc.reviewGravityAngle} - radianEquivalent={true} - showIcon={false} - correctValue={this.dataDoc.answers[this.dataDoc.selectedQuestion.answerParts.indexOf("angle of gravity")]} + unit={"N/m"} + upperBound={500} + value={this.dataDoc.springConstant ?? 0.5} + effect={(val: number) => { + this.dataDoc.simulationReset(!this.dataDoc.simulationReset); + }} + radianEquivalent={false} + mode={"Freeform"} labelWidth={"7em"} /> - )} - {this.dataDoc.selectedQuestion.answerParts.includes("normal force") && ( Normal force magnitude

} - lowerBound={0} + label={Rest length} + lowerBound={10} dataDoc={this.dataDoc} - prop={'reviewNormalMagnitude'} - step={0.1} - unit={"N"} - upperBound={50} - value={this.dataDoc.reviewNormalMagnitude} - showIcon={false} - correctValue={this.dataDoc.answers[this.dataDoc.selectedQuestion.answerParts.indexOf("normal force")]} + prop={'springRestLength'} + step={100} + unit={""} + upperBound={500} + value={this.dataDoc.springRestLength ?? 200} + effect={(val: number) => { + this.dataDoc.simulationReset = (!this.dataDoc.simulationReset); + }} + radianEquivalent={false} + mode={"Freeform"} labelWidth={"7em"} /> - )} - {this.dataDoc.selectedQuestion.answerParts.includes("angle of normal force") && ( Normal force angle

} - lowerBound={0} + label={ + + Starting displacement + + } + lowerBound={-(this.dataDoc.springRestLength - 10)} dataDoc={this.dataDoc} - prop={'reviewNormalAngle'} - step={1} - unit={"°"} - upperBound={360} - value={this.dataDoc.reviewNormalAngle} - radianEquivalent={true} - showIcon={false} - correctValue={this.dataDoc.answers[this.dataDoc.selectedQuestion.answerParts.indexOf("angle of normal force")]} + prop={""} + step={10} + unit={""} + upperBound={this.dataDoc.springRestLength} + value={this.dataDoc.springStartLength - this.dataDoc.springRestLength ?? 0} + effect={(val: number) => { + this.dataDoc.startPosY = (this.dataDoc.springRestLength + val); + this.dataDoc.springStartLength = (this.dataDoc.springRestLength + val); + this.dataDoc.simulationReset = (!this.dataDoc.simulationReset); + }} + radianEquivalent={false} + mode={"Freeform"} labelWidth={"7em"} /> - )} - {this.dataDoc.selectedQuestion.answerParts.includes("force of static friction") && ( - Static friction magnitude

} - lowerBound={0} - dataDoc={this.dataDoc} - prop={'reviewStaticMagnitude'} - step={0.1} - unit={"N"} - upperBound={50} - value={this.dataDoc.reviewStaticMagnitude} - showIcon={false} - correctValue={this.dataDoc.answers[this.dataDoc.selectedQuestion.answerParts.indexOf("force of static friction")]} - labelWidth={"7em"} - /> - )} - {this.dataDoc.selectedQuestion.answerParts.includes("angle of static friction") && ( +
+ )} + {this.dataDoc.simulationType == "Inclined Plane" && this.dataDoc.simulationPaused && ( +
Static friction angle

} + label={θ} lowerBound={0} dataDoc={this.dataDoc} - prop={'reviewStaticAngle'} + prop={'wedgeAngle'} step={1} unit={"°"} - upperBound={360} - value={this.dataDoc.reviewStaticAngle} + upperBound={49} + value={this.dataDoc.wedgeAngle ?? 26} + effect={(val: number) => { + this.changeWedgeBasedOnNewAngle(val); + this.dataDoc.simulationReset = (!this.dataDoc.simulationReset); + }} radianEquivalent={true} - showIcon={false} - correctValue={this.dataDoc.answers[this.dataDoc.selectedQuestion.answerParts.indexOf("angle of static friction")]} - labelWidth={"7em"} + mode={"Freeform"} + labelWidth={"2em"} /> - )} - {this.dataDoc.selectedQuestion.answerParts.includes("coefficient of static friction") && ( @@ -1439,753 +1904,322 @@ export default class PhysicsSimulationBox extends ViewBoxAnnotatableComponent { + this.updateForcesWithFriction(val); + if (val < Number(this.dataDoc.coefficientOfKineticFriction)) { + this.dataDoc.soefficientOfKineticFriction = (val); + } + this.dataDoc.simulationReset = (!this.dataDoc.simulationReset); + }} + mode={"Freeform"} + labelWidth={"2em"} /> - )} - {this.dataDoc.selectedQuestion.answerParts.includes("wedge angle") && ( θ} + label={ + + μk + + } lowerBound={0} dataDoc={this.dataDoc} - prop={'wedgeAngle'} + prop={'coefficientOfKineticFriction'} + step={0.1} + unit={""} + upperBound={Number(this.dataDoc.coefficientOfStaticFriction)} + value={this.dataDoc.coefficientOfKineticFriction ?? 0} + effect={(val: number) => { + this.dataDoc.simulationReset = (!this.dataDoc.simulationReset); + }} + mode={"Freeform"} + labelWidth={"2em"} + /> +
+ )} + {this.dataDoc.simulationType == "Inclined Plane" && !this.dataDoc.simulationPaused && ( + + θ: {Math.round(Number(this.dataDoc.wedgeAngle) * 100) / 100}° ≈{" "} + {Math.round(((Number(this.dataDoc.wedgeAngle) * Math.PI) / 180) * 100) / + 100}{" "} + rad +
+ μ s: {this.dataDoc.coefficientOfStaticFriction} +
+ μ k: {this.dataDoc.coefficientOfKineticFriction} +
+ )} + {this.dataDoc.simulationType == "Pendulum" && !this.dataDoc.simulationPaused && ( + + θ: {Math.round(this.dataDoc.pendulumAngle * 100) / 100}° ≈{" "} + {Math.round(((this.dataDoc.pendulumAngle * Math.PI) / 180) * 100) / 100}{" "} + rad + + )} + {this.dataDoc.simulationType == "Pendulum" && this.dataDoc.simulationPaused && ( +
+ Angle} + lowerBound={0} + dataDoc={this.dataDoc} + prop={'pendulumAngle'} step={1} unit={"°"} - upperBound={49} - value={this.dataDoc.wedgeAngle ?? 26} - effect={(val: number) => { - this.changeWedgeBasedOnNewAngle(val); - this.updateReviewForcesBasedOnAngle(val); + upperBound={59} + value={this.dataDoc.pendulumAngle ?? 30} + effect={(value) => { + this.dataDoc.startPendulumAngle = (value); + if (this.dataDoc.simulationType == "Pendulum") { + const mag = + this.dataDoc.mass * + Math.abs(this.dataDoc.gravity) * + Math.cos((value * Math.PI) / 180); + + const forceOfTension: IForce = { + description: "Tension", + magnitude: mag, + directionInDegrees: 90 - value, + component: false, + }; + + const tensionComponent: IForce = { + description: "Tension", + magnitude: mag, + directionInDegrees: 90 - value, + component: true, + }; + const gravityParallel: IForce = { + description: "Gravity Parallel Component", + magnitude: + Math.abs(this.dataDoc.gravity) * + Math.cos((value * Math.PI) / 180), + directionInDegrees: 270 - value, + component: true, + }; + const gravityPerpendicular: IForce = { + description: "Gravity Perpendicular Component", + magnitude: + Math.abs(this.dataDoc.gravity) * + Math.sin((value * Math.PI) / 180), + directionInDegrees: -value, + component: true, + }; + + const length = this.dataDoc.pendulumLength; + const x = + length * Math.cos(((90 - value) * Math.PI) / 180); + const y = + length * Math.sin(((90 - value) * Math.PI) / 180); + const xPos = this.xMax / 2 - x - this.dataDoc.radius; + const yPos = y - this.dataDoc.radius - 5; + this.dataDoc.startPosX = (xPos); + this.dataDoc.startPosY= (yPos); + + this.dataDoc.startForces = ([ + { + description: "Gravity", + magnitude: Math.abs(this.dataDoc.gravity) * this.dataDoc.mass, + directionInDegrees: 270, + component: false, + }, + forceOfTension, + ]); + this.dataDoc.updatedForces = ([ + { + description: "Gravity", + magnitude: Math.abs(this.dataDoc.gravity) * this.dataDoc.mass, + directionInDegrees: 270, + component: false, + }, + forceOfTension, + ]); + this.dataDoc.componentForces = ([ + tensionComponent, + gravityParallel, + gravityPerpendicular, + ]); + this.dataDoc.adjustPendulumAngle = ({ + angle: value, + length: this.dataDoc.pendulumLength, + }); + this.dataDoc.simulationReset = (!this.dataDoc.simulationReset); + } }} radianEquivalent={true} - showIcon={false} - correctValue={this.dataDoc.answers[this.dataDoc.selectedQuestion.answerParts.indexOf("wedge angle")]} + mode={"Freeform"} + labelWidth={"5em"} /> - )} -
-
- )} - {this.dataDoc.mode == "Tutorial" && ( -
-
-

Problem

-

{this.dataDoc.selectedTutorial.question}

-
-
- { - let step = this.dataDoc.stepNumber - 1; - step = Math.max(step, 0); - step = Math.min(step, this.dataDoc.selectedTutorial.steps.length - 1); - this.dataDoc.stepNumber = (step); - this.dataDoc.startForces = ( - this.getForceFromJSON(this.dataDoc.selectedTutorial.steps[step].forces) - ); - this.dataDoc.updatedForces = ( - this.getForceFromJSON(this.dataDoc.selectedTutorial.steps[step].forces) - ); - this.dataDoc.showForceMagnitudes = ( - this.dataDoc.selectedTutorial.steps[step].showMagnitude - ); - }} - disabled={this.dataDoc.stepNumber == 0} - > - - -
-

- Step {this.dataDoc.stepNumber + 1}:{" "} - {this.dataDoc.selectedTutorial.steps[this.dataDoc.stepNumber].description} -

-

{this.dataDoc.selectedTutorial.steps[this.dataDoc.stepNumber].content}

-
- { - let step = this.dataDoc.stepNumber + 1; - step = Math.max(step, 0); - step = Math.min(step, this.dataDoc.selectedTutorial.steps.length - 1); - this.dataDoc.stepNumber = (step); - this.dataDoc.startForces = ( - this.getForceFromJSON(this.dataDoc.selectedTutorial.steps[step].forces) - ); - this.dataDoc.updatedForces = ( - this.getForceFromJSON(this.dataDoc.selectedTutorial.steps[step].forces) - ); - this.dataDoc.showForceMagnitudes = ( - this.dataDoc.selectedTutorial.steps[step].showMagnitude - ); - }} - disabled={this.dataDoc.stepNumber == this.dataDoc.selectedTutorial.steps.length - 1} - > - - -
-
- {(this.dataDoc.simulationType == "One Weight" || - this.dataDoc.simulationType == "Inclined Plane" || - this.dataDoc.simulationType == "Pendulum") &&

Resources

} - {this.dataDoc.simulationType == "One Weight" && ( - - )} - {this.dataDoc.simulationType == "Inclined Plane" && ( - - )} - {this.dataDoc.simulationType == "Pendulum" && ( - - )} -
-
- )} - {this.dataDoc.mode == "Review" && this.dataDoc.simulationType == "Inclined Plane" && ( -
-

this.dataDoc.mode = ("Tutorial")} - > - {" "} - Go to walkthrough{" "} -

-
- - -
-
- )} - {this.dataDoc.mode == "Freeform" && ( -
- - - {this.dataDoc.simulationType == "One Weight" && ( - - this.dataDoc.elasticCollisions= (!this.dataDoc.elasticCollisions) - } - /> - } - label="Make collisions elastic" - labelPlacement="start" - /> - )} - this.dataDoc.showForces = (!this.dataDoc.showForces)} - /> - } - label="Show force vectors" - labelPlacement="start" - /> - {(this.dataDoc.simulationType == "Inclined Plane" || - this.dataDoc.simulationType == "Pendulum") && ( - - this.dataDoc.showComponentForces = (!this.dataDoc.showComponentForces) - } - /> - } - label="Show component force vectors" - labelPlacement="start" - /> - )} - this.dataDoc.showAcceleration = (!this.dataDoc.showAcceleration)} - /> - } - label="Show acceleration vector" - labelPlacement="start" - /> - this.dataDoc.showVelocity = (!this.dataDoc.showVelocity)} - /> - } - label="Show velocity vector" - labelPlacement="start" - /> - Speed} - lowerBound={1} - dataDoc={this.dataDoc} - prop={'simulationSpeed'} - step={1} - unit={"x"} - upperBound={10} - value={this.dataDoc.simulationSpeed ?? 2} - labelWidth={"5em"} - /> - {this.dataDoc.simulationPaused && this.dataDoc.simulationType != "Circular Motion" && ( - Gravity} - lowerBound={-30} - dataDoc={this.dataDoc} - prop={'gravity'} - step={0.01} - unit={"m/s2"} - upperBound={0} - value={this.dataDoc.gravity ?? -9.81} - effect={(val: number) => { - this.setupSimulation(this.dataDoc.simulationType, this.dataDoc.mode) - }} - labelWidth={"5em"} - /> - )} - {this.dataDoc.simulationPaused && this.dataDoc.simulationType != "Pulley" && ( - Mass} - lowerBound={1} - dataDoc={this.dataDoc} - prop={'mass'} - step={0.1} - unit={"kg"} - upperBound={5} - value={this.dataDoc.mass ?? 1} - effect={(val: number) => { - this.setupSimulation(this.dataDoc.simulationType, this.dataDoc.mode) - }} - labelWidth={"5em"} - /> - )} - {this.dataDoc.simulationPaused && this.dataDoc.simulationType == "Pulley" && ( - Red mass} - lowerBound={1} - dataDoc={this.dataDoc} - prop={'mass'} - step={0.1} - unit={"kg"} - upperBound={5} - value={this.dataDoc.mass ?? 1} - effect={(val: number) => { - this.setupSimulation(this.dataDoc.simulationType, this.dataDoc.mode) - }} - labelWidth={"5em"} - /> - )} - {this.dataDoc.simulationPaused && this.dataDoc.simulationType == "Pulley" && ( - Blue mass} - lowerBound={1} - dataDoc={this.dataDoc} - prop={'mass2'} - step={0.1} - unit={"kg"} - upperBound={5} - value={this.dataDoc.mass2 ?? 1} - effect={(val: number) => { - this.setupSimulation(this.dataDoc.simulationType, this.dataDoc.mode) - }} - labelWidth={"5em"} - /> - )} - {this.dataDoc.simulationPaused && this.dataDoc.simulationType == "Circular Motion" && ( Rod length} - lowerBound={100} + lowerBound={0} dataDoc={this.dataDoc} - prop={'circularMotionRadius'} - step={5} + prop={'pendulumLength'} + step={1} unit={"m"} - upperBound={250} - value={this.dataDoc.circularMotionRadius ?? 100} - effect={(val: number) => { - this.setupSimulation(this.dataDoc.simulationType, this.dataDoc.mode) + upperBound={400} + value={Math.round(this.dataDoc.pendulumLength)} + effect={(value) => { + if (this.dataDoc.simulationType == "Pendulum") { + this.dataDoc.adjustPendulumAngle = ({ + angle: this.dataDoc.pendulumAngle, + length: value, + }); + this.dataDoc.simulationReset = (!this.dataDoc.simulationReset); + } }} + radianEquivalent={false} + mode={"Freeform"} labelWidth={"5em"} /> - )} - - - {this.dataDoc.simulationType == "Spring" && this.dataDoc.simulationPaused && ( -
- Spring stiffness - } - lowerBound={0.1} - dataDoc={this.dataDoc} - prop={'springConstant'} - step={1} - unit={"N/m"} - upperBound={500} - value={this.dataDoc.springConstant ?? 0.5} - effect={(val: number) => { - this.dataDoc.simulationReset(!this.dataDoc.simulationReset); - }} - radianEquivalent={false} - mode={"Freeform"} - labelWidth={"7em"} - /> - Rest length} - lowerBound={10} - dataDoc={this.dataDoc} - prop={'springRestLength'} - step={100} - unit={""} - upperBound={500} - value={this.dataDoc.springRestLength ?? 200} - effect={(val: number) => { - this.dataDoc.simulationReset = (!this.dataDoc.simulationReset); - }} - radianEquivalent={false} - mode={"Freeform"} - labelWidth={"7em"} - /> - - Starting displacement - - } - lowerBound={-(this.dataDoc.springRestLength - 10)} - dataDoc={this.dataDoc} - prop={""} - step={10} - unit={""} - upperBound={this.dataDoc.springRestLength} - value={this.dataDoc.springStartLength - this.dataDoc.springRestLength ?? 0} - effect={(val: number) => { - this.dataDoc.startPosY = (this.dataDoc.springRestLength + val); - this.dataDoc.springStartLength = (this.dataDoc.springRestLength + val); - this.dataDoc.simulationReset = (!this.dataDoc.simulationReset); - }} - radianEquivalent={false} - mode={"Freeform"} - labelWidth={"7em"} - /> -
- )} - {this.dataDoc.simulationType == "Inclined Plane" && this.dataDoc.simulationPaused && ( -
- θ} - lowerBound={0} - dataDoc={this.dataDoc} - prop={'wedgeAngle'} - step={1} - unit={"°"} - upperBound={49} - value={this.dataDoc.wedgeAngle ?? 26} - effect={(val: number) => { - this.changeWedgeBasedOnNewAngle(val); - this.dataDoc.simulationReset = (!this.dataDoc.simulationReset); - }} - radianEquivalent={true} - mode={"Freeform"} - labelWidth={"2em"} - /> - - μs - - } - lowerBound={0} - dataDoc={this.dataDoc} - prop={'coefficientOfStaticFriction'} - step={0.1} - unit={""} - upperBound={1} - value={this.dataDoc.coefficientOfStaticFriction ?? 0} - effect={(val: number) => { - this.updateForcesWithFriction(val); - if (val < Number(this.dataDoc.coefficientOfKineticFriction)) { - this.dataDoc.soefficientOfKineticFriction = (val); - } - this.dataDoc.simulationReset = (!this.dataDoc.simulationReset); - }} - mode={"Freeform"} - labelWidth={"2em"} - /> - - μk - - } - lowerBound={0} - dataDoc={this.dataDoc} - prop={'coefficientOfKineticFriction'} - step={0.1} - unit={""} - upperBound={Number(this.dataDoc.coefficientOfStaticFriction)} - value={this.dataDoc.coefficientOfKineticFriction ?? 0} - effect={(val: number) => { - this.dataDoc.simulationReset = (!this.dataDoc.simulationReset); - }} - mode={"Freeform"} - labelWidth={"2em"} - /> -
- )} - {this.dataDoc.simulationType == "Inclined Plane" && !this.dataDoc.simulationPaused && ( - - θ: {Math.round(Number(this.dataDoc.wedgeAngle) * 100) / 100}° ≈{" "} - {Math.round(((Number(this.dataDoc.wedgeAngle) * Math.PI) / 180) * 100) / - 100}{" "} - rad -
- μ s: {this.dataDoc.coefficientOfStaticFriction} -
- μ k: {this.dataDoc.coefficientOfKineticFriction} -
- )} - {this.dataDoc.simulationType == "Pendulum" && !this.dataDoc.simulationPaused && ( - - θ: {Math.round(this.dataDoc.pendulumAngle * 100) / 100}° ≈{" "} - {Math.round(((this.dataDoc.pendulumAngle * Math.PI) / 180) * 100) / 100}{" "} - rad - - )} - {this.dataDoc.simulationType == "Pendulum" && this.dataDoc.simulationPaused && ( -
- Angle} - lowerBound={0} - dataDoc={this.dataDoc} - prop={'pendulumAngle'} - step={1} - unit={"°"} - upperBound={59} - value={this.dataDoc.pendulumAngle ?? 30} - effect={(value) => { - this.dataDoc.startPendulumAngle = (value); - if (this.dataDoc.simulationType == "Pendulum") { - const mag = - this.dataDoc.mass * - Math.abs(this.dataDoc.gravity) * - Math.cos((value * Math.PI) / 180); - - const forceOfTension: IForce = { - description: "Tension", - magnitude: mag, - directionInDegrees: 90 - value, - component: false, - }; - - const tensionComponent: IForce = { - description: "Tension", - magnitude: mag, - directionInDegrees: 90 - value, - component: true, - }; - const gravityParallel: IForce = { - description: "Gravity Parallel Component", - magnitude: - Math.abs(this.dataDoc.gravity) * - Math.cos((value * Math.PI) / 180), - directionInDegrees: 270 - value, - component: true, - }; - const gravityPerpendicular: IForce = { - description: "Gravity Perpendicular Component", - magnitude: - Math.abs(this.dataDoc.gravity) * - Math.sin((value * Math.PI) / 180), - directionInDegrees: -value, - component: true, - }; - - const length = this.dataDoc.pendulumLength; - const x = - length * Math.cos(((90 - value) * Math.PI) / 180); - const y = - length * Math.sin(((90 - value) * Math.PI) / 180); - const xPos = this.xMax / 2 - x - this.dataDoc.radius; - const yPos = y - this.dataDoc.radius - 5; - this.dataDoc.startPosX = (xPos); - this.dataDoc.startPosY= (yPos); - - this.dataDoc.startForces = ([ - { - description: "Gravity", - magnitude: Math.abs(this.dataDoc.gravity) * this.dataDoc.mass, - directionInDegrees: 270, - component: false, - }, - forceOfTension, - ]); - this.dataDoc.updatedForces = ([ - { - description: "Gravity", - magnitude: Math.abs(this.dataDoc.gravity) * this.dataDoc.mass, - directionInDegrees: 270, - component: false, - }, - forceOfTension, - ]); - this.dataDoc.componentForces = ([ - tensionComponent, - gravityParallel, - gravityPerpendicular, - ]); - this.dataDoc.adjustPendulumAngle = ({ - angle: value, - length: this.dataDoc.pendulumLength, - }); - this.dataDoc.simulationReset = (!this.dataDoc.simulationReset); - } - }} - radianEquivalent={true} - mode={"Freeform"} - labelWidth={"5em"} - /> - Rod length} - lowerBound={0} - dataDoc={this.dataDoc} - prop={'pendulumLength'} - step={1} - unit={"m"} - upperBound={400} - value={Math.round(this.dataDoc.pendulumLength)} - effect={(value) => { - if (this.dataDoc.simulationType == "Pendulum") { - this.dataDoc.adjustPendulumAngle = ({ - angle: this.dataDoc.pendulumAngle, - length: value, - }); - this.dataDoc.simulationReset = (!this.dataDoc.simulationReset); - } - }} - radianEquivalent={false} - mode={"Freeform"} - labelWidth={"5em"} - /> -
- )} -
- )} -
- {this.dataDoc.mode == "Freeform" && ( - - - - - - - - - - {(!this.dataDoc.simulationPaused || - this.dataDoc.simulationType == "Inclined Plane" || - this.dataDoc.simulationType == "Suspension" || - this.dataDoc.simulationType == "Circular Motion" || - this.dataDoc.simulationType == "Pulley") && ( - + + + + + + + + + + + + +
{this.dataDoc.simulationType == "Pulley" ? "Red Weight" : ""}XY
{ - // window.open( - // "https://www.khanacademy.org/science/physics/two-dimensional-motion" - // ); - // }} - > - Position - - {this.dataDoc.positionXDisplay} m + + )} + + )} +
+ {this.dataDoc.mode == "Freeform" && ( + + + + + + + + + - )}{" "} - {this.dataDoc.simulationPaused && - this.dataDoc.simulationType != "Inclined Plane" && - this.dataDoc.simulationType != "Suspension" && - this.dataDoc.simulationType != "Circular Motion" && - this.dataDoc.simulationType != "Pulley" && ( - + )}{" "} + {this.dataDoc.simulationPaused && + this.dataDoc.simulationType != "Inclined Plane" && + this.dataDoc.simulationType != "Suspension" && + this.dataDoc.simulationType != "Circular Motion" && + this.dataDoc.simulationType != "Pulley" && ( + + )}{" "} + {(!this.dataDoc.simulationPaused || + this.dataDoc.simulationType == "Inclined Plane" || + this.dataDoc.simulationType == "Suspension" || + this.dataDoc.simulationType == "Circular Motion" || + this.dataDoc.simulationType == "Pulley") && ( + )}{" "} - {(!this.dataDoc.simulationPaused || - this.dataDoc.simulationType == "Inclined Plane" || - this.dataDoc.simulationType == "Suspension" || - this.dataDoc.simulationType == "Circular Motion" || - this.dataDoc.simulationType == "Pulley") && ( - + )}{" "} + + + - )}{" "} - {this.dataDoc.simulationPaused && - this.dataDoc.simulationType != "Inclined Plane" && - this.dataDoc.simulationType != "Suspension" && - this.dataDoc.simulationType != "Circular Motion" && - this.dataDoc.simulationType != "Pulley" && ( - + )}{" "} + {this.dataDoc.simulationPaused && + (this.dataDoc.simulationType == "One Weight" || + this.dataDoc.simulationType == "Circular Motion") && ( + + )}{" "} + {(!this.dataDoc.simulationPaused || this.dataDoc.simulationType != "One Weight") && ( + )}{" "} - - - - {(!this.dataDoc.simulationPaused || - (this.dataDoc.simulationType != "One Weight" && - this.dataDoc.simulationType != "Circular Motion")) && ( - - )}{" "} - {this.dataDoc.simulationPaused && - (this.dataDoc.simulationType == "One Weight" || - this.dataDoc.simulationType == "Circular Motion") && ( + {this.dataDoc.simulationPaused && this.dataDoc.simulationType == "One Weight" && ( )}{" "} - {(!this.dataDoc.simulationPaused || this.dataDoc.simulationType != "One Weight") && ( - - )}{" "} - {this.dataDoc.simulationPaused && this.dataDoc.simulationType == "One Weight" && ( + + + + + + + + + + + +
{this.dataDoc.simulationType == "Pulley" ? "Red Weight" : ""}XY
{ + // window.open( + // "https://www.khanacademy.org/science/physics/two-dimensional-motion" + // ); + // }} + > + Position - { - this.dataDoc.displayChange = ({ - xDisplay: value, - yDisplay: this.dataDoc.positionYDisplay, - }); + {(!this.dataDoc.simulationPaused || + this.dataDoc.simulationType == "Inclined Plane" || + this.dataDoc.simulationType == "Suspension" || + this.dataDoc.simulationType == "Circular Motion" || + this.dataDoc.simulationType == "Pulley") && ( + + {this.dataDoc.positionXDisplay} m + + > + { + this.dataDoc.displayChange = ({ + xDisplay: value, + yDisplay: this.dataDoc.positionYDisplay, + }); + }} + small={true} + mode={"Freeform"} + /> + + {this.dataDoc.positionYDisplay} m - {this.dataDoc.positionYDisplay} m + {this.dataDoc.simulationPaused && + this.dataDoc.simulationType != "Inclined Plane" && + this.dataDoc.simulationType != "Suspension" && + this.dataDoc.simulationType != "Circular Motion" && + this.dataDoc.simulationType != "Pulley" && ( + + { + this.dataDoc.displayChange = ({ + xDisplay: this.dataDoc.positionXDisplay, + yDisplay: value, + }); + }} + small={true} + mode={"Freeform"} + /> +
{ + // window.open( + // "https://www.khanacademy.org/science/physics/two-dimensional-motion" + // ); + // }} + > + Velocity - { - this.dataDoc.displayChange = ({ - xDisplay: this.dataDoc.positionXDisplay, - yDisplay: value, - }); + {(!this.dataDoc.simulationPaused || + (this.dataDoc.simulationType != "One Weight" && + this.dataDoc.simulationType != "Circular Motion")) && ( + + {this.dataDoc.velocityXDisplay} m/s + + > + { + this.dataDoc.startVelX = (value); + this.dataDoc.simulationReset = (!this.dataDoc.simulationReset); + }} + small={true} + mode={"Freeform"} + /> + + {this.dataDoc.velocityYDisplay} m/s
{ - // window.open( - // "https://www.khanacademy.org/science/physics/two-dimensional-motion" - // ); - // }} - > - Velocity - - {this.dataDoc.velocityXDisplay} m/s - { - this.dataDoc.startVelX = (value); - this.dataDoc.simulationReset = (!this.dataDoc.simulationReset); + this.dataDoc.startVelY = (-value); + this.dataDoc.displayChange = ({ + xDisplay: this.dataDoc.positionXDisplay, + yDisplay: this.dataDoc.positionYDisplay, + }); }} small={true} mode={"Freeform"} /> - {this.dataDoc.velocityYDisplay} m/s -
{ + // window.open( + // "https://www.khanacademy.org/science/physics/two-dimensional-motion" + // ); + // }} > - { - this.dataDoc.startVelY = (-value); - this.dataDoc.displayChange = ({ - xDisplay: this.dataDoc.positionXDisplay, - yDisplay: this.dataDoc.positionYDisplay, - }); - }} - small={true} - mode={"Freeform"} - /> + Acceleration + + {this.dataDoc.accelerationXDisplay} m/s2 + + {this.dataDoc.accelerationYDisplay} m/s2 +
+ Momentum + + {Math.round(this.dataDoc.velocityXDisplay * this.dataDoc.mass * 10) / 10} kg*m/s + + {Math.round(this.dataDoc.velocityYDisplay * this.dataDoc.mass * 10) / 10} kg*m/s +
+ )} + {this.dataDoc.mode == "Freeform" && this.dataDoc.simulationType == "Pulley" && ( + + + + + + + + + + + + + + + - )}{" "} - - - - - - - - - - - - -
Blue WeightXY
+ Position + {this.dataDoc.positionXDisplay2} m{this.dataDoc.positionYDisplay2} m
+ Velocity + + {this.dataDoc.velocityXDisplay2} m/s
{ - // window.open( - // "https://www.khanacademy.org/science/physics/two-dimensional-motion" - // ); - // }} - > - Acceleration - - {this.dataDoc.accelerationXDisplay} m/s2 - - {this.dataDoc.accelerationYDisplay} m/s2 -
- Momentum - - {Math.round(this.dataDoc.velocityXDisplay * this.dataDoc.mass * 10) / 10} kg*m/s - - {Math.round(this.dataDoc.velocityYDisplay * this.dataDoc.mass * 10) / 10} kg*m/s -
- )} - {this.dataDoc.mode == "Freeform" && this.dataDoc.simulationType == "Pulley" && ( - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Blue WeightXY
- Position - {this.dataDoc.positionXDisplay2} m{this.dataDoc.positionYDisplay2} m
- Velocity - - {this.dataDoc.velocityXDisplay2} m/s - - {this.dataDoc.velocityYDisplay2} m/s -
- Acceleration - - {this.dataDoc.accelerationXDisplay2} m/s2 - - {this.dataDoc.accelerationYDisplay2} m/s2 -
- Momentum - - {Math.round(this.dataDoc.velocityXDisplay2 * this.dataDoc.mass * 10) / 10} kg*m/s - - {Math.round(this.dataDoc.velocityYDisplay2 * this.dataDoc.mass * 10) / 10} kg*m/s -
- )} -
- {this.dataDoc.simulationType != "Pendulum" && this.dataDoc.simulationType != "Spring" && ( -
-

Kinematic Equations

-
    -
  • - Position: x1=x0+v0t+ - 1⁄ - 2at - 2 -
  • -
  • - Velocity: v1=v0+at -
  • -
  • Acceleration: a = F/m
  • -
+
+ {this.dataDoc.velocityYDisplay2} m/s +
+ Acceleration + + {this.dataDoc.accelerationXDisplay2} m/s2 + + {this.dataDoc.accelerationYDisplay2} m/s2 +
+ Momentum + + {Math.round(this.dataDoc.velocityXDisplay2 * this.dataDoc.mass * 10) / 10} kg*m/s + + {Math.round(this.dataDoc.velocityYDisplay2 * this.dataDoc.mass * 10) / 10} kg*m/s +
+ )}
- )} - {this.dataDoc.simulationType == "Spring" && ( -
-

Harmonic Motion Equations: Spring

-
    -
  • - Spring force: Fs=kd -
  • -
  • - Spring period: Ts=2π√m⁄ - k -
  • -
  • Equilibrium displacement for vertical spring: d = mg/k
  • -
  • - Elastic potential energy: Us=1⁄ - 2kd2 -
  • + {this.dataDoc.simulationType != "Pendulum" && this.dataDoc.simulationType != "Spring" && ( +
    +

    Kinematic Equations

    • - Maximum when system is at maximum displacement, 0 when - system is at 0 displacement + Position: x1=x0+v0t+ + 1⁄ + 2at + 2 +
    • +
    • + Velocity: v1=v0+at
    • +
    • Acceleration: a = F/m
    -
  • - Translational kinetic energy: K=1⁄ - 2mv2 -
  • +
    + )} + {this.dataDoc.simulationType == "Spring" && ( +
    +

    Harmonic Motion Equations: Spring

    • - Maximum when system is at maximum/minimum velocity (at 0 - displacement), 0 when velocity is 0 (at maximum - displacement) + Spring force: Fs=kd +
    • +
    • + Spring period: Ts=2π√m⁄ + k
    • +
    • Equilibrium displacement for vertical spring: d = mg/k
    • +
    • + Elastic potential energy: Us=1⁄ + 2kd2 +
    • +
        +
      • + Maximum when system is at maximum displacement, 0 when + system is at 0 displacement +
      • +
      +
    • + Translational kinetic energy: K=1⁄ + 2mv2 +
    • +
        +
      • + Maximum when system is at maximum/minimum velocity (at 0 + displacement), 0 when velocity is 0 (at maximum + displacement) +
      • +
    -
-
- )} - {this.dataDoc.simulationType == "Pendulum" && ( -
-

Harmonic Motion Equations: Pendulum

-
    -
  • - Pendulum period: Tp=2π√l⁄ - g -
  • -
-
- )} +
+ )} + {this.dataDoc.simulationType == "Pendulum" && ( +
+

Harmonic Motion Equations: Pendulum

+
    +
  • + Pendulum period: Tp=2π√l⁄ + g +
  • +
+
+ )} +
-
-
- - - - - - - - - -

- {this.dataDoc.simulationType == "Circular Motion" ? "Z" : "Y"} -

-

- X -

+ + + + + + + + + +

+ {this.dataDoc.simulationType == "Circular Motion" ? "Z" : "Y"} +

+

+ X +

+
-
+ ) } } \ No newline at end of file -- cgit v1.2.3-70-g09d2