Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
130 changes: 130 additions & 0 deletions app/(core)/data/articles/inclinedPlane.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
import TAGS from "../tags.js";

export const inclinedPlaneBlog = {
id: "bb-008",
slug: "inclinedPlane",
name: "Inclined Plane",
desc: "Understand the physics of an inclined plane through forces, motion, and energy.",
tags: [TAGS.MEDIUM, TAGS.DYNAMICS, TAGS.FORCES, TAGS.FRICTION],

theory: {
sections: [
{
title: "Introduction",
blocks: [
{
type: "paragraph",
text: "An inclined plane is a flat surface tilted at an angle to the horizontal. It is a simple machine that allows objects to be raised or lowered using less force compared to vertical lifting. The motion of an object on an inclined plane is analyzed by resolving gravitational force into components parallel and perpendicular to the surface.",
},
{
type: "paragraph",
text: "The weight of an object (mg) acts vertically downward. On an incline of angle ΞΈ, this force is resolved into two components: one parallel to the slope (mg sin ΞΈ), which causes motion, and one perpendicular to the slope (mg cos ΞΈ), which is balanced by the normal force.",
},
],
},

{
title: "Forces on an Inclined Plane",
blocks: [
{
type: "list",
ordered: false,
items: [
"Parallel component of gravity: Fβˆ₯ = mg sin(ΞΈ)",
"Perpendicular component of gravity: FβŠ₯ = mg cos(ΞΈ)",
"Normal force: N = mg cos(ΞΈ)",
"Kinetic friction: fk = ΞΌk N = ΞΌk mg cos(ΞΈ)",
"Static friction (maximum): fs(max) = ΞΌs mg cos(ΞΈ)",
],
},
],
},

{
title: "Equations of Motion",
blocks: [
{
type: "list",
ordered: false,
items: [
"Acceleration without friction: a = g sin(ΞΈ)",
"Acceleration with friction: a = g (sin(ΞΈ) βˆ’ ΞΌ cos(ΞΈ))",
"Velocity along the slope: v = a t",
"Distance travelled along the slope: s = Β½ a tΒ²",
],
},
{
type: "formula",
latex:
"\\begin{aligned} a &= g \\sin\\theta \\\\ a &= g(\\sin\\theta - \\mu \\cos\\theta) \\\\ v &= at \\\\ s &= \\tfrac{1}{2}at^2 \\end{aligned}",
},
],
},

{
title: "Energy Viewpoint",
blocks: [
{
type: "paragraph",
text: "From an energy perspective, an inclined plane converts gravitational potential energy into kinetic energy. In the absence of friction, mechanical energy is conserved. When friction is present, some energy is dissipated as heat.",
},
{
type: "formula",
latex: "U = mgh, \\quad K = \\tfrac{1}{2}mv^2",
},
{
type: "note",
text: "With friction, the work done by friction reduces the final kinetic energy of the object.",
},
],
},

{
title: "Angle of Repose",
blocks: [
{
type: "paragraph",
text: "The angle of repose is the minimum angle of inclination at which an object just begins to slide down the plane. At this angle, the component of gravity parallel to the plane equals the maximum static friction.",
},
{
type: "formula",
latex: "\\tan\\theta = \\mu_s",
},
],
},

{
title: "Practical Observations",
blocks: [
{
type: "list",
ordered: false,
items: [
"Increasing the angle ΞΈ increases acceleration down the slope.",
"Higher friction coefficients reduce acceleration and may prevent motion entirely.",
"An object slides only if mg sin(ΞΈ) > ΞΌ mg cos(ΞΈ).",
"The mechanical advantage of an incline is MA = L / h = 1 / sin(ΞΈ).",
],
},
],
},

{
title: "Try It Yourself",
blocks: [
{
type: "callout",
calloutType: "tip",
text: "Set friction to zero and observe uniform acceleration down the slope. Gradually increase friction and note how the acceleration decreases. Adjust the angle to find the angle of repose.",
},
{
type: "callout",
calloutType: "info",
title: "Interactive Controls",
text: "Change the incline angle to study its effect on acceleration. Adjust the friction coefficient to compare ideal and realistic motion. Enable force guides to visualize gravity, normal force, and friction components.",
},
],
},
],
},
};
3 changes: 2 additions & 1 deletion app/(core)/data/articles/index.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
// (core)/data/articles/index.js
import { bouncingBallBlog } from "./physics-bouncing-ball-comprehensive-educational-guide.js";
import { operationVectorsBlog } from "./comprehensive-guide-to-vector-operations.js";
import { ballAcceleratingBlog } from "./ball-uniformly-accelerated-motion.js";
import { ballFreeFallBlog } from "./ball-free-fall-comprehensive-guide.js";
import { springConnectionBlog } from "./spring-connection.js";
import { pendulumBlog } from "./physics-of-pendulum-explained.js";
import { projectileParabolicBlog } from "./projectile-parabolic-motion.js";
import { inclinedPlaneBlog } from "./inclinedPlane.js";

export const allBlogs = {
[bouncingBallBlog.slug]: bouncingBallBlog,
Expand All @@ -15,6 +15,7 @@ export const allBlogs = {
[springConnectionBlog.slug]: springConnectionBlog,
[pendulumBlog.slug]: pendulumBlog,
[projectileParabolicBlog.slug]: projectileParabolicBlog,
[inclinedPlaneBlog.slug]: inclinedPlaneBlog,
};

export const blogsArray = Object.values(allBlogs);
183 changes: 14 additions & 169 deletions app/(core)/data/blogs [INACTIVE].js
Original file line number Diff line number Diff line change
@@ -1,104 +1,25 @@
// THIS FILE GOT REPLACED BY NEW SYSTEM FOR BLOG HANDLING:
// check articles/ folder and articles/index.js for more
// ⚠️ DEPRECATED FILE
// This file is no longer used.
// Blog handling has moved to `articles/` and `articles/index.js`.
// Kept only for reference/testing purposes.

import TAGS from "./tags.js";

const INACTIVE_BLOGS = [
{
id: 1,
name: "Blog Test",
desc: "This is a blog example.",
slug: "this-is-a-blog-example",
id: "inactive-001",
name: "Sample Physics Blog (Inactive)",
desc: "Deprecated example blog used for testing UI components.",
slug: "inactive-sample-blog",
tags: [TAGS.EASY, TAGS.PHYSICS, TAGS.COLLISION, TAGS.ANIMATIONS],
isPinned: true,

theory: {
sections: [
{
title: "Introduction",
blocks: [
{
type: "paragraph",
text: "This section demonstrates the physics behind the Bouncing Ball simulation.",
},
],
},
{
title: "Tips and Tricks",
blocks: [
{
type: "callout",
calloutType: "info",
title: "Did you know",
text: "This simulation is a basic form of motion physics used in most 2D games and animation engines.",
},
{
type: "callout",
calloutType: "warning",
title: "Common Mistake",
text: "Forgetting to reverse the velocity component upon collision will result in the ball getting stuck at the wall.",
},
{
type: "callout",
calloutType: "tip",
title: "Try It Yourself!",
text: "Experiment by changing velocity values or ball size to see how motion patterns change.",
},
{
type: "callout",
calloutType: "success",
title: "Success!",
text: "You've learned the basics of 2D motion and collision handling!",
},
],
},
],
},
},
{
id: 2,
name: "Blog Test",
desc: "This is a blog example.",
slug: "this-is-a-blog-example",
tags: [TAGS.EASY, TAGS.PHYSICS, TAGS.COLLISION, TAGS.ANIMATIONS],

theory: {
sections: [
{
title: "Introduction",
blocks: [
{
type: "paragraph",
text: "This section demonstrates the physics behind the Bouncing Ball simulation.",
},
],
},
{
title: "Tips and Tricks",
blocks: [
{
type: "callout",
calloutType: "info",
title: "Did you know",
text: "This simulation is a basic form of motion physics used in most 2D games and animation engines.",
},
{
type: "callout",
calloutType: "warning",
title: "Common Mistake",
text: "Forgetting to reverse the velocity component upon collision will result in the ball getting stuck at the wall.",
},
{
type: "callout",
calloutType: "tip",
title: "Try It Yourself!",
text: "Experiment by changing velocity values or ball size to see how motion patterns change.",
},
{
type: "callout",
calloutType: "success",
title: "Success!",
text: "You've learned the basics of 2D motion and collision handling!",
text: "This is a deprecated blog example retained only for reference.",
},
],
},
Expand All @@ -107,87 +28,11 @@ const INACTIVE_BLOGS = [
},

{
id: 3,
name: "Blog Test",
desc: "This is a blog example.",
slug: "this-is-a-blog-example",
tags: [TAGS.EASY, TAGS.PHYSICS, TAGS.COLLISION, TAGS.ANIMATIONS],

theory: {},
},
{
id: 4,
name: "Blog Test",
desc: "This is a blog example.",
slug: "this-is-a-blog-example",
tags: [TAGS.EASY, TAGS.PHYSICS, TAGS.COLLISION, TAGS.ANIMATIONS],

theory: {},
},
{
id: 5,
name: "Blog Test",
desc: "This is a blog example.",
slug: "this-is-a-blog-example",
tags: [TAGS.EASY, TAGS.PHYSICS, TAGS.COLLISION, TAGS.ANIMATIONS],

theory: {},
},
{
id: 3,
name: "Blog Test",
desc: "This is a blog example.",
slug: "this-is-a-blog-example",
tags: [TAGS.EASY, TAGS.PHYSICS, TAGS.COLLISION, TAGS.ANIMATIONS],
isPinned: true,

theory: {},
},
{
id: 4,
name: "Blog Test",
desc: "This is a blog example.",
slug: "this-is-a-blog-example",
tags: [TAGS.EASY, TAGS.PHYSICS, TAGS.COLLISION, TAGS.ANIMATIONS],
isPinned: true,

theory: {},
},
{
id: 5,
name: "Blog Test",
desc: "This is a blog example.",
slug: "this-is-a-blog-example",
tags: [TAGS.EASY, TAGS.PHYSICS, TAGS.COLLISION, TAGS.ANIMATIONS],
isPinned: true,

theory: {},
},
{
id: 3,
name: "Blog Test",
desc: "This is a blog example.",
slug: "this-is-a-blog-example",
tags: [TAGS.EASY, TAGS.PHYSICS, TAGS.COLLISION, TAGS.ANIMATIONS],

theory: {},
},
{
id: 4,
name: "Blog Test",
desc: "This is a blog example.",
slug: "this-is-a-blog-example",
tags: [TAGS.EASY, TAGS.PHYSICS, TAGS.COLLISION, TAGS.ANIMATIONS],

theory: {},
},
{
id: 5,
name: "Blog Test",
desc: "This is a blog example.",
slug: "this-is-a-blog-example",
tags: [TAGS.EASY, TAGS.PHYSICS, TAGS.COLLISION, TAGS.ANIMATIONS],

id: "inactive-002",
name: "Empty Blog Shell",
desc: "Placeholder blog with no theory content.",
slug: "inactive-empty-blog",
tags: [TAGS.MEDIUM, TAGS.DYNAMICS],
theory: {},
},
];
Expand Down
17 changes: 9 additions & 8 deletions app/(core)/data/chapters.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
import TAGS from "./tags.js";

const chapters = [
{
id: 0,
name: "Test for benchmarks",
desc: "This is a simulation created specifically for performance testing.",
link: "/simulations/test",
tags: [TAGS.EXPERIMENTAL, TAGS.BENCHMARK, TAGS.PERFORMANCE],
icon: "/icons/test.png",
},
{
id: 1,
name: "Bouncing Ball",
Expand Down Expand Up @@ -71,14 +79,7 @@ const chapters = [
link: "/simulations/InclinedPlane",
tags: [TAGS.MEDIUM, TAGS.DYNAMICS, TAGS.FORCES, TAGS.FRICTION],
icon: "/icons/inclined.png",
},
{
id: 0,
name: "Test for benchmarks",
desc: "This is a simulation created specifically for performance testing.",
link: "/simulations/test",
tags: [TAGS.EXPERIMENTAL, TAGS.BENCHMARK, TAGS.PERFORMANCE],
icon: "/icons/test.png",
relatedBlogSlug: "inclinedPlane",
},
];

Expand Down
Loading
Loading