Full chapter notes of physical world class 11
| Domain | Scale | Examples |
|---|---|---|
| Macroscopic | Large-scale (everyday to astronomical) | Motion of planets, fluid dynamics, optics |
| Microscopic | Atomic and sub-atomic scale | Quantum mechanics, nuclear physics |
| Discovery in Physics | Technological Application |
|---|---|
| Laws of motion, gravitation | Rockets, satellites |
| Electromagnetic induction | Electric generators, motors |
| Nuclear fission/fusion | Nuclear reactors, bombs |
| X-rays | Medical diagnostics |
| Quantum mechanics | Transistors, computers, lasers |
| EM waves | Radio, TV, mobile phones |
Physics drives technology, and technology in turn solves societal problems (energy, healthcare, communication).
| Force | Relative Strength | Range | Mediating Particle |
|---|---|---|---|
| Gravitational | 1 (weakest) | Infinite | Graviton (theoretical) |
| Weak Nuclear | 10Β²β΅ | ~10β»ΒΉβΆ m | W, Z bosons |
| Electromagnetic | 10Β³βΆ | Infinite | Photon |
| Strong Nuclear | 10Β³βΈ (strongest) | ~10β»ΒΉβ΅ m | Gluons |
| Unified Theory | Forces Combined | Scientist(s) |
|---|---|---|
| Electromagnetism | Electricity + Magnetism | Maxwell |
| Electroweak Theory | EM + Weak Nuclear | Glashow, Salam, Weinberg |
| Grand Unified Theory (GUT) | Electroweak + Strong | (In progress) |
| Theory of Everything (TOE) | All four forces | (Not yet achieved) |
| Scientist | Contribution |
|---|---|
| Galileo Galilei | Laws of motion, telescope, scientific method |
| Isaac Newton | Laws of motion, Universal gravitation, calculus |
| James Clerk Maxwell | Electromagnetic theory, light as EM wave |
| Albert Einstein | Special & General Relativity, photoelectric effect |
| Niels Bohr | Atomic model, quantum theory |
| Max Planck | Quantum theory, Planck's constant |
| Ernest Rutherford | Nuclear model of atom |
| Marie Curie | Radioactivity |
| C.V. Raman | Raman effect (light scattering) |
| S.N. Bose | Bose-Einstein statistics |
| Term | Meaning |
|---|---|
| Hypothesis | A tentative explanation for an observation |
| Theory | A well-tested explanation for a broad set of observations |
| Model | A simplified representation of a complex system |
| Scientific Law | A concise description of a natural phenomenon |
| Inductive reasoning | From specific observations to general conclusions |
| Deductive reasoning | From general principles to specific predictions |
Create a study guide PDF with important definitions and formulas
mkdir -p /tmp/workspace/physical-world-studyguide
~/physical-world-studyguide/generate_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm, mm
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, KeepTogether, PageBreak
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import Flowable
# ββ Color Palette ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
DARK_BLUE = colors.HexColor("#1A237E")
MID_BLUE = colors.HexColor("#1565C0")
LIGHT_BLUE = colors.HexColor("#E3F2FD")
ACCENT = colors.HexColor("#FF6F00")
GREEN_BG = colors.HexColor("#E8F5E9")
GREEN_DARK = colors.HexColor("#2E7D32")
PURPLE_BG = colors.HexColor("#EDE7F6")
PURPLE_DARK = colors.HexColor("#4527A0")
ORANGE_BG = colors.HexColor("#FFF3E0")
ORANGE_DARK = colors.HexColor("#E65100")
WHITE = colors.white
LIGHT_GRAY = colors.HexColor("#F5F5F5")
MED_GRAY = colors.HexColor("#BDBDBD")
DARK_GRAY = colors.HexColor("#424242")
# ββ Document setup βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
OUTPUT = "/tmp/workspace/physical-world-studyguide/Physical_World_Class11_StudyGuide.pdf"
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
leftMargin=1.8*cm, rightMargin=1.8*cm,
topMargin=2*cm, bottomMargin=2*cm,
title="Physical World β Class 11 Study Guide",
author="Orris AI",
)
W, H = A4
CW = W - 3.6*cm # content width
# ββ Styles βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
base = getSampleStyleSheet()
def style(name, **kw):
s = ParagraphStyle(name, **kw)
return s
TITLE_S = style("Title_S", fontName="Helvetica-Bold", fontSize=26,
textColor=WHITE, alignment=TA_CENTER, leading=32)
SUBTITLE_S = style("Subtitle_S", fontName="Helvetica", fontSize=13,
textColor=colors.HexColor("#BBDEFB"), alignment=TA_CENTER, leading=18)
BADGE_S = style("Badge_S", fontName="Helvetica-Bold", fontSize=10,
textColor=WHITE, alignment=TA_CENTER)
SECTION_S = style("Section_S", fontName="Helvetica-Bold", fontSize=14,
textColor=WHITE, alignment=TA_LEFT, leading=20, leftIndent=6)
SUBSECTION_S = style("Subsection_S", fontName="Helvetica-Bold", fontSize=11,
textColor=MID_BLUE, leading=16)
BODY_S = style("Body_S", fontName="Helvetica", fontSize=10,
textColor=DARK_GRAY, leading=15, alignment=TA_JUSTIFY)
BODY_B = style("Body_B", fontName="Helvetica-Bold", fontSize=10,
textColor=DARK_GRAY, leading=15)
BULLET_S = style("Bullet_S", fontName="Helvetica", fontSize=10,
textColor=DARK_GRAY, leading=14,
leftIndent=14, bulletIndent=4,
bulletFontName="Helvetica", bulletFontSize=10)
DEF_TERM = style("Def_Term", fontName="Helvetica-Bold", fontSize=10,
textColor=DARK_BLUE, leading=15)
DEF_BODY = style("Def_Body", fontName="Helvetica", fontSize=10,
textColor=DARK_GRAY, leading=14, leftIndent=10)
FORMULA_S = style("Formula_S", fontName="Courier-Bold", fontSize=11,
textColor=DARK_BLUE, leading=16, alignment=TA_CENTER)
FORMULA_LABEL = style("Formula_Label", fontName="Helvetica-Oblique", fontSize=9,
textColor=colors.HexColor("#757575"), alignment=TA_CENTER, leading=12)
CAPTION_S = style("Caption_S", fontName="Helvetica-Oblique", fontSize=8,
textColor=colors.HexColor("#9E9E9E"), alignment=TA_CENTER)
TH_S = style("TH_S", fontName="Helvetica-Bold", fontSize=9,
textColor=WHITE, alignment=TA_CENTER, leading=12)
TD_S = style("TD_S", fontName="Helvetica", fontSize=9,
textColor=DARK_GRAY, alignment=TA_CENTER, leading=12)
TD_L = style("TD_L", fontName="Helvetica", fontSize=9,
textColor=DARK_GRAY, alignment=TA_LEFT, leading=12, leftIndent=4)
FOOTER_S = style("Footer_S", fontName="Helvetica-Oblique", fontSize=8,
textColor=MED_GRAY, alignment=TA_CENTER)
KEY_S = style("Key_S", fontName="Helvetica-Bold", fontSize=9,
textColor=ACCENT, leading=14)
# ββ Helper Flowables βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
def section_header(text, color=DARK_BLUE):
"""Colored banner for section headings."""
data = [[Paragraph(text, SECTION_S)]]
t = Table(data, colWidths=[CW])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), color),
("ROUNDEDCORNERS", [6, 6, 6, 6]),
("TOPPADDING", (0,0), (-1,-1), 7),
("BOTTOMPADDING", (0,0), (-1,-1), 7),
("LEFTPADDING", (0,0), (-1,-1), 10),
]))
return t
def formula_box(formula, label="", bg=PURPLE_BG, border=PURPLE_DARK):
data = []
data.append([Paragraph(formula, FORMULA_S)])
if label:
data.append([Paragraph(label, FORMULA_LABEL)])
t = Table(data, colWidths=[CW - 2*cm])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("BOX", (0,0), (-1,-1), 1.5, border),
("TOPPADDING", (0,0), (-1,-1), 8),
("BOTTOMPADDING", (0,0), (-1,-1), 8),
("LEFTPADDING", (0,0), (-1,-1), 12),
("RIGHTPADDING", (0,0), (-1,-1), 12),
("ALIGN", (0,0), (-1,-1), "CENTER"),
]))
# center the box
outer = Table([[t]], colWidths=[CW])
outer.setStyle(TableStyle([
("ALIGN", (0,0), (-1,-1), "CENTER"),
("TOPPADDING", (0,0), (-1,-1), 0),
("BOTTOMPADDING", (0,0), (-1,-1), 0),
("LEFTPADDING", (0,0), (-1,-1), 0),
("RIGHTPADDING", (0,0), (-1,-1), 0),
]))
return outer
def def_block(term, definition, bg=LIGHT_BLUE):
data = [
[Paragraph(term, DEF_TERM)],
[Paragraph(definition, DEF_BODY)],
]
t = Table(data, colWidths=[CW])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (0,0), bg),
("BACKGROUND", (0,1), (0,1), WHITE),
("BOX", (0,0), (-1,-1), 0.8, MID_BLUE),
("LINEBELOW", (0,0), (0,0), 0.5, MID_BLUE),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 8),
("RIGHTPADDING", (0,0), (-1,-1), 8),
]))
return t
def tip_box(text, title="β
Key Point", bg=ORANGE_BG, border=ORANGE_DARK):
data = [
[Paragraph(f"<b>{title}</b>", style("tp", fontName="Helvetica-Bold",
fontSize=9, textColor=border, leading=13))],
[Paragraph(text, style("tb", fontName="Helvetica", fontSize=9,
textColor=DARK_GRAY, leading=13))],
]
t = Table(data, colWidths=[CW])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("BOX", (0,0), (-1,-1), 1, border),
("LINEBELOW", (0,0), (0,0), 0.5, border),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING", (0,0), (-1,-1), 10),
]))
return t
def sp(n=6):
return Spacer(1, n)
def hr():
return HRFlowable(width=CW, thickness=0.5, color=MED_GRAY, spaceAfter=4, spaceBefore=4)
def make_table(headers, rows, col_widths=None):
if col_widths is None:
col_widths = [CW / len(headers)] * len(headers)
data = [[Paragraph(h, TH_S) for h in headers]]
for i, row in enumerate(rows):
data.append([Paragraph(str(c), TD_L if j == 0 else TD_S)
for j, c in enumerate(row)])
t = Table(data, colWidths=col_widths, repeatRows=1)
row_colors = []
for i in range(1, len(rows)+1):
bg = LIGHT_GRAY if i % 2 == 0 else WHITE
row_colors.append(("BACKGROUND", (0,i), (-1,i), bg))
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), DARK_BLUE),
("GRID", (0,0), (-1,-1), 0.5, MED_GRAY),
("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, LIGHT_GRAY]),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 6),
("RIGHTPADDING", (0,0), (-1,-1), 6),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
] + row_colors))
return t
# ββ Page decorations (header/footer) ββββββββββββββββββββββββββββββββββββββββββ
def on_page(canvas, doc):
canvas.saveState()
# top accent line
canvas.setFillColor(DARK_BLUE)
canvas.rect(0, H - 12*mm, W, 4*mm, fill=1, stroke=0)
canvas.setFillColor(ACCENT)
canvas.rect(0, H - 12*mm, 40*mm, 4*mm, fill=1, stroke=0)
# bottom footer
canvas.setFillColor(LIGHT_GRAY)
canvas.rect(0, 0, W, 14*mm, fill=1, stroke=0)
canvas.setFillColor(MED_GRAY)
canvas.setFont("Helvetica", 8)
canvas.drawCentredString(W/2, 5*mm,
f"Physical World β Class 11 Physics | Study Guide | Page {doc.page}")
canvas.setFillColor(ACCENT)
canvas.rect(0, 13.5*mm, W, 0.5*mm, fill=1, stroke=0)
canvas.restoreState()
def on_first_page(canvas, doc):
on_page(canvas, doc)
# ββ Cover ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
def cover_elements():
elems = []
elems.append(sp(30))
# Big title block
cover_data = [
[Paragraph("PHYSICAL WORLD", TITLE_S)],
[Paragraph("Class 11 Physics β Chapter 1", SUBTITLE_S)],
[sp(4)],
[Paragraph("Study Guide: Definitions & Key Concepts", SUBTITLE_S)],
]
cover_t = Table(cover_data, colWidths=[CW])
cover_t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), DARK_BLUE),
("TOPPADDING", (0,0), (-1,-1), 10),
("BOTTOMPADDING", (0,0), (-1,-1), 10),
("LEFTPADDING", (0,0), (-1,-1), 16),
("RIGHTPADDING", (0,0), (-1,-1), 16),
("BOX", (0,0), (-1,-1), 3, ACCENT),
]))
elems.append(cover_t)
elems.append(sp(20))
# Topic badges
topics = ["Scope of Physics", "4 Fundamental Forces", "Conservation Laws",
"Key Definitions", "Important Formulas", "Quick Revision Table"]
badge_data = []
row = []
for i, t in enumerate(topics):
row.append(Paragraph(t, BADGE_S))
if len(row) == 3:
badge_data.append(row)
row = []
if row:
while len(row) < 3:
row.append(Paragraph("", BADGE_S))
badge_data.append(row)
badge_t = Table(badge_data, colWidths=[CW/3]*3)
badge_t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), MID_BLUE),
("GRID", (0,0), (-1,-1), 1, WHITE),
("TOPPADDING", (0,0), (-1,-1), 8),
("BOTTOMPADDING", (0,0), (-1,-1), 8),
("ALIGN", (0,0), (-1,-1), "CENTER"),
]))
elems.append(badge_t)
elems.append(sp(30))
elems.append(Paragraph(
"CBSE | NCERT | Class XI",
style("cv_sub", fontName="Helvetica-Oblique", fontSize=11,
textColor=MED_GRAY, alignment=TA_CENTER)
))
elems.append(PageBreak())
return elems
# ββ Build story ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
story = []
story += cover_elements()
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# SECTION 1 β KEY DEFINITIONS
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(section_header("1. KEY DEFINITIONS"))
story.append(sp(10))
definitions = [
("Physics",
"The branch of natural science that deals with the study of matter, energy, space, time, "
"and their mutual interactions. The word 'physics' comes from the Greek fusis meaning nature."),
("Hypothesis",
"A tentative, testable explanation put forward for an observation before it has been "
"rigorously tested. It is the starting point of scientific inquiry."),
("Theory",
"A well-substantiated explanation for a broad set of observations, supported by repeated "
"experimental evidence. More reliable than a hypothesis."),
("Scientific Law",
"A concise, universally valid statement (often mathematical) describing a natural phenomenon. "
"E.g., Newton's Law of Gravitation, Coulomb's Law."),
("Model",
"A simplified, often mathematical or pictorial, representation of a complex physical system "
"used to predict its behaviour. E.g., Bohr's atomic model."),
("Natural Philosophy",
"The older name for physics; the philosophical study of nature and the physical universe "
"that was dominant before modern experimental science."),
("Macroscopic Domain",
"The domain of physics dealing with objects of everyday size up to astronomical scales β "
"from millimetres to light-years. Governed by classical physics."),
("Microscopic Domain",
"The domain of physics dealing with atomic and sub-atomic particles (~10β»ΒΉβ° m and smaller). "
"Governed by quantum mechanics."),
("Reductionism",
"The approach of explaining complex systems by analysing their simpler, more fundamental "
"components and the laws that govern them. E.g., thermodynamics β kinetic theory of gases."),
("Unification",
"The process of showing that apparently different forces or phenomena are manifestations of "
"a single, more fundamental force or principle. E.g., Maxwell unified electricity and magnetism."),
("Conservation Law",
"A principle stating that a particular measurable quantity of an isolated system does not "
"change over time, regardless of the processes occurring within the system."),
("Inductive Reasoning",
"Moving from specific experimental observations to a general conclusion or law. "
"Foundation of empirical science."),
("Deductive Reasoning",
"Moving from a general principle or theory to specific predictions that can be tested "
"experimentally."),
("Gravitational Force",
"The universal attractive force between any two objects that have mass. It is the weakest "
"fundamental force but has infinite range."),
("Electromagnetic Force",
"The force between electrically charged particles. It can be attractive (opposite charges) "
"or repulsive (like charges) and has infinite range."),
("Strong Nuclear Force",
"The strongest fundamental force; it binds protons and neutrons (nucleons) together inside "
"the atomic nucleus. Range: ~10β»ΒΉβ΅ m."),
("Weak Nuclear Force",
"Responsible for radioactive beta decay; weaker than EM and strong forces but stronger than "
"gravity. Range: ~10β»ΒΉβΆ m."),
("Mediating Particle (Boson)",
"A particle that carries (mediates) a fundamental force. Photon β EM; Gluon β Strong; "
"W/Z boson β Weak; Graviton (theoretical) β Gravity."),
("Noether's Theorem",
"Every continuous symmetry of a physical system corresponds to a conservation law. "
"Symmetry in time β Energy conservation; Space β Linear momentum; Rotation β Angular momentum."),
("Grand Unified Theory (GUT)",
"A theoretical framework attempting to unify the strong nuclear force with the electroweak "
"force into a single interaction. Not yet experimentally confirmed."),
("Theory of Everything (TOE)",
"A hypothetical single framework unifying all four fundamental forces of nature, including "
"gravity. Still an unsolved problem in physics."),
]
for term, defn in definitions:
story.append(def_block(term, defn))
story.append(sp(5))
story.append(sp(10))
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# SECTION 2 β FUNDAMENTAL FORCES
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(PageBreak())
story.append(section_header("2. THE FOUR FUNDAMENTAL FORCES", MID_BLUE))
story.append(sp(10))
story.append(tip_box(
"Mnemonic for strength order (weakest β strongest): G β W β E β S "
"(Gravity < Weak Nuclear < Electromagnetic < Strong Nuclear)",
title="π‘ Memory Tip"
))
story.append(sp(10))
forces_headers = ["Force", "Relative Strength", "Range", "Mediating Particle", "Nature"]
forces_rows = [
["Gravitational", "1 (weakest)", "Infinite", "Graviton (theoretical)", "Always attractive"],
["Weak Nuclear", "10Β²β΅", "~10β»ΒΉβΆ m", "WβΊ, Wβ», Zβ° bosons", "Attractive/Repulsive"],
["Electromagnetic", "10Β³βΆ", "Infinite", "Photon (Ξ³)", "Attractive & Repulsive"],
["Strong Nuclear", "10Β³βΈ (strongest)","~10β»ΒΉβ΅ m", "Gluons", "Always attractive"],
]
story.append(make_table(forces_headers, forces_rows,
col_widths=[3.2*cm, 3.2*cm, 2.6*cm, 4.0*cm, 3.6*cm]))
story.append(sp(12))
# Individual force notes
force_notes = [
("Gravitational Force",
"β’ Acts between ALL objects with mass (never repulsive).\n"
"β’ Governs motion of planets, stars, galaxies, tides, free fall.\n"
"β’ Described by Newton's Law: F = Gmβmβ/rΒ².\n"
"β’ Extremely weak β only noticeable at astronomical scales."),
("Electromagnetic Force",
"β’ Acts between charged particles; ~10Β³βΆ times stronger than gravity.\n"
"β’ Responsible for: chemical bonds, friction, normal force, light, electricity, magnetism.\n"
"β’ Unified by Maxwell (1865): electricity + magnetism = electromagnetism.\n"
"β’ Coulomb's Law: F = kqβqβ/rΒ²."),
("Strong Nuclear Force",
"β’ Strongest known force; holds protons & neutrons together despite EM repulsion.\n"
"β’ Acts between quarks via gluon exchange (also between nucleons residually).\n"
"β’ Source of nuclear energy (fission and fusion).\n"
"β’ Charge-independent (acts equally on p-p, n-n, p-n pairs)."),
("Weak Nuclear Force",
"β’ Causes beta decay: n β p + eβ» + Ξ½Μβ (beta-minus) or p β n + eβΊ + Ξ½β (beta-plus).\n"
"β’ Unified with EM β Electroweak force (Glashow, Salam, Weinberg β Nobel 1979).\n"
"β’ Responsible for energy production in the Sun (pp chain)."),
]
for title_txt, note in force_notes:
story.append(KeepTogether([
Paragraph(title_txt, SUBSECTION_S),
sp(3),
Paragraph(note.replace("\n", "<br/>"), BODY_S),
sp(8),
]))
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# SECTION 3 β IMPORTANT FORMULAS
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(PageBreak())
story.append(section_header("3. IMPORTANT FORMULAS & RELATIONS", colors.HexColor("#1B5E20")))
story.append(sp(10))
story.append(Paragraph("3.1 Newton's Law of Universal Gravitation", SUBSECTION_S))
story.append(sp(4))
story.append(formula_box(
"F = G mβ mβ / rΒ²",
"F = gravitational force (N), G = 6.674Γ10β»ΒΉΒΉ N mΒ² kgβ»Β², mβ, mβ = masses (kg), r = separation (m)",
GREEN_BG, GREEN_DARK
))
story.append(sp(10))
story.append(Paragraph("3.2 Coulomb's Law (Electrostatic Force)", SUBSECTION_S))
story.append(sp(4))
story.append(formula_box(
"F = k qβ qβ / rΒ²",
"k = 1/(4ΟΞ΅β) = 9Γ10βΉ N mΒ² Cβ»Β², qβ, qβ = charges (C), r = separation (m)",
GREEN_BG, GREEN_DARK
))
story.append(sp(10))
story.append(Paragraph("3.3 Conservation of Energy", SUBSECTION_S))
story.append(sp(4))
story.append(formula_box(
"ΞE_total = 0 βΉ KE + PE = constant (isolated system)",
"Total mechanical energy is conserved in the absence of non-conservative forces.",
PURPLE_BG, PURPLE_DARK
))
story.append(sp(10))
story.append(Paragraph("3.4 Conservation of Linear Momentum", SUBSECTION_S))
story.append(sp(4))
story.append(formula_box(
"p = mv ; Ξp_total = 0 (no external force)",
"p = momentum (kg m sβ»ΒΉ), m = mass (kg), v = velocity (m sβ»ΒΉ)",
PURPLE_BG, PURPLE_DARK
))
story.append(sp(10))
story.append(Paragraph("3.5 Conservation of Angular Momentum", SUBSECTION_S))
story.append(sp(4))
story.append(formula_box(
"L = I Ο ; ΞL = 0 (no external torque)",
"L = angular momentum (kg mΒ² sβ»ΒΉ), I = moment of inertia, Ο = angular velocity",
PURPLE_BG, PURPLE_DARK
))
story.append(sp(10))
story.append(Paragraph("3.6 Einstein's MassβEnergy Equivalence", SUBSECTION_S))
story.append(sp(4))
story.append(formula_box(
"E = m cΒ²",
"E = energy (J), m = mass (kg), c = speed of light = 3Γ10βΈ m sβ»ΒΉ "
"(Basis of nuclear energy)",
ORANGE_BG, ORANGE_DARK
))
story.append(sp(10))
story.append(Paragraph("3.7 Planck's Quantum Relation", SUBSECTION_S))
story.append(sp(4))
story.append(formula_box(
"E = h Ξ½",
"E = photon energy (J), h = Planck's constant = 6.626Γ10β»Β³β΄ J s, Ξ½ = frequency (Hz)",
ORANGE_BG, ORANGE_DARK
))
story.append(sp(10))
story.append(Paragraph("3.8 de Broglie Wavelength", SUBSECTION_S))
story.append(sp(4))
story.append(formula_box(
"Ξ» = h / (mv)",
"Ξ» = de Broglie wavelength (m), h = Planck's constant, m = mass, v = velocity",
ORANGE_BG, ORANGE_DARK
))
story.append(sp(10))
story.append(tip_box(
"The formulas above are referenced in the Physical World chapter as examples of "
"the mathematical precision and unifying power of physics. They will be studied "
"in detail in later chapters.",
title="π Note for Students"
))
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# SECTION 4 β PHYSICS & TECHNOLOGY
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(PageBreak())
story.append(section_header("4. PHYSICS, TECHNOLOGY & SOCIETY", colors.HexColor("#880E4F")))
story.append(sp(10))
pt_headers = ["Physics Discovery", "Resulting Technology", "Societal Impact"]
pt_rows = [
["Laws of Motion & Gravitation", "Rockets, Satellites, GPS", "Navigation, space exploration"],
["Electromagnetic Induction", "Electric generators, motors", "Power generation, industry"],
["Maxwell's EM Theory", "Radio, TV, Mobile phones", "Global communication"],
["X-rays (RΓΆntgen, 1895)", "Medical imaging (radiography)", "Healthcare diagnostics"],
["Nuclear Fission", "Nuclear reactors, atomic bombs", "Energy & defense"],
["Quantum Mechanics", "Transistors, ICs, Computers, Lasers","Digital revolution"],
["Superconductivity", "MRI machines, Maglev trains", "Medicine, transport"],
["Radioactivity", "Radiation therapy, PET scans", "Cancer treatment"],
]
story.append(make_table(pt_headers, pt_rows,
col_widths=[5.0*cm, 5.0*cm, 5.0*cm + (CW - 15.0*cm)]))
story.append(sp(12))
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# SECTION 5 β CONSERVATION LAWS
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(section_header("5. CONSERVATION LAWS", colors.HexColor("#004D40")))
story.append(sp(10))
cl_headers = ["Conservation Law", "What is Conserved", "Symmetry (Noether)", "Example"]
cl_rows = [
["Energy", "Total energy", "Time translation", "Pendulum swinging"],
["Linear Momentum", "Total linear momentum", "Space translation", "Collisions"],
["Angular Momentum", "Total angular momentum", "Rotational symmetry", "Figure skater spin"],
["Electric Charge", "Total electric charge", "Gauge symmetry", "Nuclear reactions"],
["Baryon Number", "Number of baryons", "β", "Nuclear decay"],
["Lepton Number", "Number of leptons", "β", "Beta decay"],
]
story.append(make_table(cl_headers, cl_rows,
col_widths=[4.0*cm, 3.8*cm, 3.8*cm, 4.4*cm + (CW - 16.0*cm)]))
story.append(sp(12))
story.append(tip_box(
"Conservation laws are the MOST fundamental laws in physics. They follow from "
"symmetry principles (Noether's Theorem, 1915) and hold in ALL branches of physics β "
"classical, quantum, and relativistic.",
title="β Why Conservation Laws Matter"
))
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# SECTION 6 β NOTABLE SCIENTISTS
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(PageBreak())
story.append(section_header("6. NOTABLE SCIENTISTS & CONTRIBUTIONS"))
story.append(sp(10))
sci_headers = ["Scientist", "Era", "Major Contribution"]
sci_rows = [
["Galileo Galilei", "1564β1642", "Scientific method, laws of motion, telescope, projectile motion"],
["Isaac Newton", "1643β1727", "Laws of motion, universal gravitation, calculus, optics"],
["James Clerk Maxwell", "1831β1879", "Unified EM theory; predicted EM waves; light = EM wave"],
["Marie Curie", "1867β1934", "Discovery of radioactivity; isolated polonium & radium"],
["Max Planck", "1858β1947", "Quantum theory; Planck's constant h; blackbody radiation"],
["Albert Einstein", "1879β1955", "Special & General Relativity; photoelectric effect; E = mcΒ²"],
["Niels Bohr", "1885β1962", "Atomic model; quantum theory of hydrogen spectrum"],
["Ernest Rutherford", "1871β1937", "Nuclear model of atom; discovery of proton; alpha scattering"],
["Werner Heisenberg", "1901β1976", "Uncertainty principle; matrix mechanics"],
["Erwin SchrΓΆdinger", "1887β1961", "Wave mechanics; SchrΓΆdinger equation"],
["C. V. Raman", "1888β1970", "Raman Effect (light scattering); Nobel Prize 1930 (India)"],
["S. N. Bose", "1894β1974", "Bose-Einstein statistics; bosons named after him"],
["Abdus Salam", "1926β1996", "Electroweak unification (with Glashow & Weinberg); Nobel 1979"],
]
story.append(make_table(sci_headers, sci_rows,
col_widths=[4.2*cm, 2.6*cm, CW - 6.8*cm]))
story.append(sp(12))
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# SECTION 7 β UNIFICATION IN PHYSICS
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(section_header("7. UNIFICATION OF FORCES", MID_BLUE))
story.append(sp(10))
uni_headers = ["Unified Theory", "Forces Combined", "Scientists", "Status"]
uni_rows = [
["Electromagnetism", "Electricity + Magnetism", "Maxwell (1865)", "Confirmed β"],
["Electroweak Theory", "EM + Weak Nuclear", "Glashow, Salam, Weinberg (1979)", "Confirmed β"],
["Grand Unified Theory (GUT)","Electroweak + Strong Nuclear", "Various (ongoing)", "Unconfirmed"],
["Theory of Everything (TOE)","All 4 forces incl. Gravity", "Unsolved", "Not achieved"],
]
story.append(make_table(uni_headers, uni_rows,
col_widths=[4.4*cm, 4.2*cm, 4.8*cm, 2.6*cm + (CW - 16.0*cm)]))
story.append(sp(12))
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# SECTION 8 β QUICK REVISION
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(PageBreak())
story.append(section_header("8. QUICK REVISION β ONE-LINERS", ACCENT))
story.append(sp(10))
one_liners = [
("Physics", "Science of matter, energy, space, time and their interactions."),
("Strongest force", "Strong Nuclear Force (~10Β³βΈ times gravity)."),
("Weakest force", "Gravitational Force β but has infinite range."),
("Only attractive force", "Gravitational Force (never repulsive)."),
("Beta decay cause", "Weak Nuclear Force."),
("EM mediating particle", "Photon (Ξ³)."),
("Strong force mediator", "Gluons."),
("Who unified EM?", "James Clerk Maxwell (1865)."),
("Noether's Theorem", "Symmetry β Conservation Law."),
("E = mcΒ²", "Einstein; mass-energy equivalence; basis of nuclear energy."),
("E = hΞ½", "Planck; energy of a photon."),
("India's Nobel (Physics)", "C. V. Raman, 1930 β Raman Effect."),
("Reductionism", "Complex β simpler laws (e.g., thermo β kinetic theory)."),
("TOE status", "Not yet achieved β open problem in physics."),
("Electroweak Nobel year", "1979 β Glashow, Salam, Weinberg."),
]
# two-column layout
left_rows = one_liners[:8]
right_rows = one_liners[8:]
def ol_cell(term, val):
return [Paragraph(f"<b>{term}</b>", DEF_TERM),
Paragraph(val, BODY_S)]
# Render as simple table
ol_data = []
for i in range(max(len(left_rows), len(right_rows))):
row = []
if i < len(left_rows):
row += ol_cell(*left_rows[i])
else:
row += [Paragraph("", BODY_S), Paragraph("", BODY_S)]
if i < len(right_rows):
row += ol_cell(*right_rows[i])
else:
row += [Paragraph("", BODY_S), Paragraph("", BODY_S)]
ol_data.append(row)
half = (CW - 8*mm) / 2
ol_t = Table(ol_data, colWidths=[3.2*cm, half - 3.2*cm, 8*mm, 3.2*cm, half - 3.2*cm])
ol_t.setStyle(TableStyle([
("VALIGN", (0,0), (-1,-1), "TOP"),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("LINEBELOW", (0,0), (1,-1), 0.3, MED_GRAY),
("LINEBELOW", (3,0), (4,-1), 0.3, MED_GRAY),
("BACKGROUND", (0,0), (1,-1), LIGHT_GRAY),
("BACKGROUND", (3,0), (4,-1), LIGHT_GRAY),
("LINEAFTER", (1,0), (1,-1), 0.5, MID_BLUE),
]))
story.append(ol_t)
story.append(sp(16))
# ββ Final tip ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(tip_box(
"This chapter is mostly conceptual. Focus on: (1) definitions of the four forces and their "
"properties, (2) conservation laws and Noether's theorem, (3) examples of physics-technology "
"links, and (4) names of scientists with their contributions. "
"No numerical problems are expected from this chapter in board exams.",
title="π― Exam Strategy"
))
story.append(sp(16))
story.append(Paragraph(
"Best of luck with your exams! π β Orris AI Study Guide",
style("final", fontName="Helvetica-Oblique", fontSize=10,
textColor=MED_GRAY, alignment=TA_CENTER)
))
# ββ Build ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
doc.build(story, onFirstPage=on_first_page, onLaterPages=on_page)
print(f"PDF generated: {OUTPUT}")
cd /tmp/workspace/physical-world-studyguide && python generate_pdf.py 2>&1
ls -lh /tmp/workspace/physical-world-studyguide/Physical_World_Class11_StudyGuide.pdf
Physical World Class11 StudyGuide
PDF Document Β· PDF
| Section | Content |
|---|---|
| Cover Page | Styled title page with topic badges |
| 1. Key Definitions | 21 important definitions (Physics, Hypothesis, Theory, Forces, Noether's Theorem, GUT, TOE, etc.) |
| 2. Four Fundamental Forces | Comparison table + individual notes on each force |
| 3. Important Formulas | Newton's gravitation, Coulomb's law, Conservation laws, E=mcΒ², E=hΞ½, de Broglie wavelength β all in highlighted formula boxes |
| 4. Physics & Technology | Table linking discoveries to technologies and societal impact |
| 5. Conservation Laws | Table with symmetry (Noether's theorem) connections |
| 6. Notable Scientists | 13 scientists with eras and contributions |
| 7. Unification of Forces | Timeline from Maxwell to TOE |
| 8. Quick Revision | 15 one-liners in two-column layout + exam strategy tip |
Convert it in more esey language
~/physical-world-studyguide/generate_easy_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm, mm
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, KeepTogether, PageBreak
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
# ββ Colors βββββββββββββββββββββββββββββββββββββββββββββββββββββ
DARK_BLUE = colors.HexColor("#1A237E")
MID_BLUE = colors.HexColor("#1565C0")
LIGHT_BLUE = colors.HexColor("#DCEEFB")
SKY_BLUE = colors.HexColor("#E3F2FD")
ACCENT = colors.HexColor("#FF6F00")
GREEN_BG = colors.HexColor("#E8F5E9")
GREEN_DARK = colors.HexColor("#2E7D32")
PURPLE_BG = colors.HexColor("#EDE7F6")
PURPLE_DARK = colors.HexColor("#4527A0")
ORANGE_BG = colors.HexColor("#FFF3E0")
ORANGE_DARK = colors.HexColor("#E65100")
PINK_BG = colors.HexColor("#FCE4EC")
PINK_DARK = colors.HexColor("#880E4F")
YELLOW_BG = colors.HexColor("#FFFDE7")
YELLOW_DARK = colors.HexColor("#F57F17")
WHITE = colors.white
LIGHT_GRAY = colors.HexColor("#F5F5F5")
MED_GRAY = colors.HexColor("#BDBDBD")
DARK_GRAY = colors.HexColor("#424242")
# ββ Document βββββββββββββββββββββββββββββββββββββββββββββββββββ
OUTPUT = "/tmp/workspace/physical-world-studyguide/Physical_World_Easy_Language.pdf"
doc = SimpleDocTemplate(
OUTPUT, pagesize=A4,
leftMargin=1.8*cm, rightMargin=1.8*cm,
topMargin=2.2*cm, bottomMargin=2.2*cm,
title="Physical World β Easy Language Study Guide",
author="Orris AI",
)
W, H = A4
CW = W - 3.6*cm
# ββ Styles βββββββββββββββββββββββββββββββββββββββββββββββββββββ
def S(name, **kw):
return ParagraphStyle(name, **kw)
TITLE_S = S("T", fontName="Helvetica-Bold", fontSize=28, textColor=WHITE, alignment=TA_CENTER, leading=34)
SUB_S = S("Su", fontName="Helvetica", fontSize=13, textColor=colors.HexColor("#BBDEFB"), alignment=TA_CENTER, leading=18)
SEC_S = S("Se", fontName="Helvetica-Bold", fontSize=13, textColor=WHITE, alignment=TA_LEFT, leading=18, leftIndent=8)
SUBSEC_S = S("SS", fontName="Helvetica-Bold", fontSize=11, textColor=MID_BLUE, leading=16)
BODY_S = S("B", fontName="Helvetica", fontSize=10, textColor=DARK_GRAY, leading=16, alignment=TA_JUSTIFY)
BODY_B = S("BB", fontName="Helvetica-Bold", fontSize=10, textColor=DARK_GRAY, leading=16)
BULLET_S = S("BL", fontName="Helvetica", fontSize=10, textColor=DARK_GRAY, leading=15, leftIndent=14)
TH_S = S("TH", fontName="Helvetica-Bold", fontSize=9, textColor=WHITE, alignment=TA_CENTER, leading=12)
TD_S = S("TD", fontName="Helvetica", fontSize=9, textColor=DARK_GRAY, alignment=TA_CENTER, leading=12)
TD_L = S("TL", fontName="Helvetica", fontSize=9, textColor=DARK_GRAY, alignment=TA_LEFT, leading=12, leftIndent=4)
TD_B = S("TB", fontName="Helvetica-Bold", fontSize=9, textColor=DARK_GRAY, alignment=TA_LEFT, leading=12, leftIndent=4)
EMOJI_S = S("E", fontName="Helvetica-Bold", fontSize=11, textColor=DARK_BLUE, leading=16)
SMALL_S = S("Sm", fontName="Helvetica-Oblique",fontSize=8, textColor=MED_GRAY, alignment=TA_CENTER, leading=11)
TERM_S = S("Tr", fontName="Helvetica-Bold", fontSize=10, textColor=DARK_BLUE, leading=15)
DEF_S = S("Df", fontName="Helvetica", fontSize=10, textColor=DARK_GRAY, leading=15, leftIndent=8)
FORMULA_S = S("F", fontName="Courier-Bold", fontSize=12, textColor=DARK_BLUE, alignment=TA_CENTER, leading=18)
FLABEL_S = S("FL", fontName="Helvetica-Oblique",fontSize=9, textColor=colors.HexColor("#616161"), alignment=TA_CENTER, leading=12)
# ββ Helpers ββββββββββββββββββββββββββββββββββββββββββββββββββββ
def sp(n=8): return Spacer(1, n)
def hr(): return HRFlowable(width=CW, thickness=0.4, color=MED_GRAY, spaceBefore=4, spaceAfter=4)
def sec_hdr(text, bg=DARK_BLUE):
t = Table([[Paragraph(text, SEC_S)]], colWidths=[CW])
t.setStyle(TableStyle([
("BACKGROUND", (0,0),(-1,-1), bg),
("TOPPADDING", (0,0),(-1,-1), 8), ("BOTTOMPADDING",(0,0),(-1,-1),8),
("LEFTPADDING",(0,0),(-1,-1),12),
]))
return t
def callout(icon, heading, body, bg=YELLOW_BG, border=YELLOW_DARK):
"""Friendly callout box with icon."""
data = [
[Paragraph(f"{icon} {heading}", S("ch", fontName="Helvetica-Bold", fontSize=10,
textColor=border, leading=14))],
[Paragraph(body, S("cb", fontName="Helvetica", fontSize=10,
textColor=DARK_GRAY, leading=15))],
]
t = Table(data, colWidths=[CW])
t.setStyle(TableStyle([
("BACKGROUND",(0,0),(-1,-1), bg),
("BOX",(0,0),(-1,-1), 1.2, border),
("LINEBELOW",(0,0),(0,0), 0.5, border),
("TOPPADDING",(0,0),(-1,-1),6), ("BOTTOMPADDING",(0,0),(-1,-1),6),
("LEFTPADDING",(0,0),(-1,-1),10), ("RIGHTPADDING",(0,0),(-1,-1),10),
]))
return t
def def_card(term, simple_def, example="", bg=SKY_BLUE):
rows = [[Paragraph(term, TERM_S)], [Paragraph(simple_def, DEF_S)]]
if example:
rows.append([Paragraph(f"<i>Example: {example}</i>",
S("ex", fontName="Helvetica-Oblique", fontSize=9,
textColor=colors.HexColor("#1565C0"), leading=13, leftIndent=8))])
t = Table(rows, colWidths=[CW])
t.setStyle(TableStyle([
("BACKGROUND",(0,0),(0,0), bg),
("BACKGROUND",(0,1),(-1,-1), WHITE),
("BOX",(0,0),(-1,-1), 0.8, MID_BLUE),
("LINEBELOW",(0,0),(0,0), 0.5, MID_BLUE),
("TOPPADDING",(0,0),(-1,-1),5), ("BOTTOMPADDING",(0,0),(-1,-1),5),
("LEFTPADDING",(0,0),(-1,-1),8), ("RIGHTPADDING",(0,0),(-1,-1),8),
]))
return t
def formula_box(formula, label="", bg=PURPLE_BG, border=PURPLE_DARK):
rows = [[Paragraph(formula, FORMULA_S)]]
if label:
rows.append([Paragraph(label, FLABEL_S)])
inner = Table(rows, colWidths=[CW - 3*cm])
inner.setStyle(TableStyle([
("BACKGROUND",(0,0),(-1,-1), bg),
("BOX",(0,0),(-1,-1), 1.5, border),
("TOPPADDING",(0,0),(-1,-1),8), ("BOTTOMPADDING",(0,0),(-1,-1),8),
("LEFTPADDING",(0,0),(-1,-1),12), ("RIGHTPADDING",(0,0),(-1,-1),12),
("ALIGN",(0,0),(-1,-1),"CENTER"),
]))
outer = Table([[inner]], colWidths=[CW])
outer.setStyle(TableStyle([
("ALIGN",(0,0),(-1,-1),"CENTER"),
("TOPPADDING",(0,0),(-1,-1),0), ("BOTTOMPADDING",(0,0),(-1,-1),0),
("LEFTPADDING",(0,0),(-1,-1),0), ("RIGHTPADDING",(0,0),(-1,-1),0),
]))
return outer
def make_table(headers, rows, col_widths=None):
if col_widths is None:
col_widths = [CW/len(headers)]*len(headers)
data = [[Paragraph(h, TH_S) for h in headers]]
for i, row in enumerate(rows):
data.append([Paragraph(str(c), TD_L if j==0 else TD_S) for j,c in enumerate(row)])
t = Table(data, colWidths=col_widths, repeatRows=1)
t.setStyle(TableStyle([
("BACKGROUND",(0,0),(-1,0), DARK_BLUE),
("ROWBACKGROUNDS",(0,1),(-1,-1),[WHITE, LIGHT_GRAY]),
("GRID",(0,0),(-1,-1), 0.4, MED_GRAY),
("TOPPADDING",(0,0),(-1,-1),5), ("BOTTOMPADDING",(0,0),(-1,-1),5),
("LEFTPADDING",(0,0),(-1,-1),5), ("RIGHTPADDING",(0,0),(-1,-1),5),
("VALIGN",(0,0),(-1,-1),"MIDDLE"),
]))
return t
# ββ Page decorations βββββββββββββββββββββββββββββββββββββββββββ
def on_page(canvas, doc):
canvas.saveState()
canvas.setFillColor(DARK_BLUE)
canvas.rect(0, H-11*mm, W, 3.5*mm, fill=1, stroke=0)
canvas.setFillColor(ACCENT)
canvas.rect(0, H-11*mm, 45*mm, 3.5*mm, fill=1, stroke=0)
canvas.setFillColor(LIGHT_GRAY)
canvas.rect(0, 0, W, 13*mm, fill=1, stroke=0)
canvas.setFillColor(ACCENT)
canvas.rect(0, 12.5*mm, W, 0.5*mm, fill=1, stroke=0)
canvas.setFont("Helvetica", 8)
canvas.setFillColor(colors.HexColor("#757575"))
canvas.drawCentredString(W/2, 4.5*mm,
f"Physical World β Class 11 Physics | Easy Language Study Guide | Page {doc.page}")
canvas.restoreState()
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# COVER
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
story = []
story.append(sp(25))
cover = Table([
[Paragraph("PHYSICAL WORLD", TITLE_S)],
[Paragraph("Class 11 Physics β Chapter 1", SUB_S)],
[sp(6)],
[Paragraph("Easy Language Study Guide", SUB_S)],
[sp(4)],
[Paragraph("Simple Words β’ Clear Examples β’ Quick Revision", SMALL_S)],
], colWidths=[CW])
cover.setStyle(TableStyle([
("BACKGROUND",(0,0),(-1,-1), DARK_BLUE),
("BOX",(0,0),(-1,-1), 3, ACCENT),
("TOPPADDING",(0,0),(-1,-1),10), ("BOTTOMPADDING",(0,0),(-1,-1),10),
("LEFTPADDING",(0,0),(-1,-1),16), ("RIGHTPADDING",(0,0),(-1,-1),16),
]))
story.append(cover)
story.append(sp(20))
# What's inside badges
badges = [["What is Physics?", "4 Big Forces", "Conservation Laws"],
["Key Definitions", "Formulas Made Easy", "Quick Revision"]]
bt = Table([[Paragraph(c, S("b", fontName="Helvetica-Bold", fontSize=10,
textColor=WHITE, alignment=TA_CENTER)) for c in row] for row in badges],
colWidths=[CW/3]*3)
bt.setStyle(TableStyle([
("BACKGROUND",(0,0),(-1,-1), MID_BLUE),
("GRID",(0,0),(-1,-1), 1, WHITE),
("TOPPADDING",(0,0),(-1,-1),9), ("BOTTOMPADDING",(0,0),(-1,-1),9),
("ALIGN",(0,0),(-1,-1),"CENTER"),
]))
story.append(bt)
story.append(sp(28))
story.append(Paragraph("CBSE | NCERT | Class XI β Orris AI",
S("f", fontName="Helvetica-Oblique", fontSize=10, textColor=MED_GRAY, alignment=TA_CENTER)))
story.append(PageBreak())
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# SECTION 1 β WHAT IS PHYSICS?
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(sec_hdr("1. WHAT IS PHYSICS? (Explained Simply)"))
story.append(sp(10))
story.append(callout("π", "In Simple Words",
"Physics is the subject that asks WHY and HOW things happen in nature. "
"Why does an apple fall down? Why does light bend? How does electricity work? "
"Physics finds the answers using experiments and maths.",
YELLOW_BG, YELLOW_DARK))
story.append(sp(8))
story.append(Paragraph("Physics studies:", BODY_B))
story.append(sp(4))
points = [
("Matter", "Anything that has weight and takes up space β like a stone, water, air."),
("Energy", "The ability to do work β like heat, light, electricity, sound."),
("Forces", "Pushes and pulls β like gravity pulling you down, or a magnet pulling iron."),
("Space & Time", "Where things exist and when they happen."),
]
for term, desc in points:
story.append(Paragraph(f"<b>β’ {term}:</b> {desc}", BODY_S))
story.append(sp(3))
story.append(sp(8))
story.append(callout("π‘", "Fun Fact",
"The word 'Physics' comes from the Greek word 'fusis' which means NATURE. "
"So Physics = Study of Nature!",
GREEN_BG, GREEN_DARK))
story.append(sp(10))
# Two domains
story.append(Paragraph("Two Worlds Physics Studies:", SUBSEC_S))
story.append(sp(6))
dom_t = make_table(
["Domain", "What It Studies", "How Big?", "Example"],
[
["Macroscopic\n(Big World)", "Things we can see and touch", "mm to light-years", "Planets, cars, rivers"],
["Microscopic\n(Tiny World)", "Atoms, electrons, quarks (too tiny!)", "10β»ΒΉβ° m and smaller","Inside an atom"],
],
col_widths=[3.5*cm, 5.5*cm, 3.5*cm, 4.0*cm + (CW-16.5*cm)]
)
story.append(dom_t)
story.append(sp(12))
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# SECTION 2 β KEY DEFINITIONS (SIMPLE)
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(sec_hdr("2. KEY DEFINITIONS (In Simple Language)", MID_BLUE))
story.append(sp(10))
defs = [
("Hypothesis",
"Your first guess about why something happens. You haven't proved it yet β it's just a smart idea you want to test.",
"I think plants grow faster with more sunlight. (This is a hypothesis!)"),
("Theory",
"When your hypothesis has been tested many many times by scientists and it always turns out to be true. A theory is very reliable.",
"Einstein's Theory of Relativity has been tested for over 100 years!"),
("Scientific Law",
"A simple rule (usually written as a formula) that ALWAYS works. It tells you WHAT happens, not WHY.",
"Newton's Law: F = ma β Force = Mass Γ Acceleration. Always works!"),
("Model",
"A simple picture or idea used to explain something complex that we can't directly see.",
"Bohr's model of atom β imagine electrons going around the nucleus like planets around the Sun."),
("Inductive Reasoning",
"You observe something many times and then make a general rule from it.",
"You see 100 swans β all are white. You conclude: 'All swans are white.' (This is inductive!)"),
("Deductive Reasoning",
"You start with a general rule and predict what will happen in a specific case.",
"All metals conduct electricity (general rule) β Iron is a metal β Iron conducts electricity."),
("Reductionism",
"Breaking a big complex thing into smaller, simpler parts to understand it better.",
"Understanding how a car works by studying each part: engine, tyres, brakes separately."),
("Unification",
"Discovering that two things that look very different are actually the same thing deep down.",
"Electricity and magnetism look different β but Maxwell showed they are the SAME force!"),
("Conservation Law",
"A rule that says certain things in nature NEVER increase or decrease β they stay the same forever.",
"Energy cannot be created or destroyed β it just changes form (heat, light, motion)."),
]
for term, defn, example in defs:
story.append(def_card(term, defn, example))
story.append(sp(6))
story.append(PageBreak())
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# SECTION 3 β FOUR FUNDAMENTAL FORCES (SUPER SIMPLE)
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(sec_hdr("3. THE 4 BIG FORCES OF NATURE", colors.HexColor("#1B5E20")))
story.append(sp(10))
story.append(callout("π", "Think of it this way...",
"Everything that happens in the entire universe β from a falling leaf to an exploding star β "
"is caused by just FOUR forces. That's it! Just four. Physics tries to understand all of them.",
GREEN_BG, GREEN_DARK))
story.append(sp(10))
# Force cards
force_data = [
("1. Gravitational Force", "π",
"The force that pulls EVERYTHING towards everything else. "
"It's why you don't float away, why the Earth goes around the Sun, and why the Moon causes tides.",
"WEAKEST of all 4 forces. But it works everywhere β even across the whole universe!",
"Always PULLS (attractive). Never pushes. Works on everything with mass.",
GREEN_BG, GREEN_DARK),
("2. Electromagnetic Force", "β‘",
"The force between charged particles (like electrons and protons). "
"It causes electricity, magnetism, light, chemical bonds β almost everything in daily life!",
"10Β³βΆ times stronger than gravity. That's why a small magnet can pick up a pin against Earth's full gravity!",
"Can PULL or PUSH (attractive AND repulsive). Works between charged particles.",
LIGHT_BLUE, MID_BLUE),
("3. Strong Nuclear Force", "βοΈ",
"The force that holds the centre (nucleus) of an atom together. "
"Think about it β a nucleus has many protons (all positively charged). They should REPEL each other. "
"But they don't! The strong force holds them together.",
"STRONGEST of all 4 forces β 10Β³βΈ times stronger than gravity! But only works inside a nucleus.",
"Only works over VERY short distances (~10β»ΒΉβ΅ m). Always attractive between nucleons.",
ORANGE_BG, ORANGE_DARK),
("4. Weak Nuclear Force", "β’οΈ",
"This force is responsible for radioactive decay β when an unstable atom breaks apart and changes. "
"For example, a neutron can turn into a proton + electron (this is called beta decay).",
"Stronger than gravity but weaker than EM and strong force. Works over very tiny distances.",
"Range is ~10β»ΒΉβΆ m (even smaller than the strong force range).",
PURPLE_BG, PURPLE_DARK),
]
for fname, icon, what, wow, key, bg, border in force_data:
story.append(KeepTogether([
Table([[Paragraph(f"{icon} {fname}", S("fn", fontName="Helvetica-Bold",
fontSize=11, textColor=border, leading=16))]], colWidths=[CW]),
sp(4),
Table([
[Paragraph("<b>What it does:</b>", S("wh", fontName="Helvetica-Bold",
fontSize=9, textColor=DARK_GRAY, leading=13)),
Paragraph(what, S("wd", fontName="Helvetica", fontSize=9,
textColor=DARK_GRAY, leading=13))],
[Paragraph("<b>Wow fact:</b>", S("wf", fontName="Helvetica-Bold",
fontSize=9, textColor=border, leading=13)),
Paragraph(wow, S("wfd", fontName="Helvetica-Oblique", fontSize=9,
textColor=DARK_GRAY, leading=13))],
[Paragraph("<b>Key point:</b>", S("kp", fontName="Helvetica-Bold",
fontSize=9, textColor=DARK_GRAY, leading=13)),
Paragraph(key, S("kpd", fontName="Helvetica", fontSize=9,
textColor=DARK_GRAY, leading=13))],
], colWidths=[2.8*cm, CW - 2.8*cm]),
sp(10),
]))
# Comparison table
story.append(Paragraph("Quick Comparison of All 4 Forces:", SUBSEC_S))
story.append(sp(6))
story.append(make_table(
["Force", "Strength (compared to gravity)", "Range", "Acts on", "Carrier Particle"],
[
["Gravitational", "1 (weakest!)", "Infinite (everywhere!)", "All objects with mass", "Graviton (not yet found)"],
["Weak Nuclear", "10Β²β΅ times stronger", "Very short: 10β»ΒΉβΆ m", "Subatomic particles", "W, Z bosons"],
["Electromagnetic", "10Β³βΆ times stronger", "Infinite (everywhere!)", "Charged particles", "Photon (light particle)"],
["Strong Nuclear", "10Β³βΈ times stronger", "Very short: 10β»ΒΉβ΅ m", "Protons & Neutrons", "Gluons"],
],
col_widths=[3.2*cm, 3.8*cm, 3.4*cm, 3.8*cm, 3.6*cm + (CW - 17.8*cm)]
))
story.append(sp(10))
story.append(callout("π§ ", "Memory Trick β Strength Order (weak to strong)",
"G β W β E β S\n"
"Gravity β Weak Nuclear β Electromagnetic β Strong Nuclear\n"
"= 'Good Work Every Saturday'",
YELLOW_BG, YELLOW_DARK))
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# SECTION 4 β CONSERVATION LAWS (SIMPLE)
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(PageBreak())
story.append(sec_hdr("4. CONSERVATION LAWS (What Never Changes!)", colors.HexColor("#004D40")))
story.append(sp(10))
story.append(callout("βοΈ", "What is a Conservation Law?",
"A conservation law means: no matter what happens, a certain quantity ALWAYS stays the same. "
"You can't create it, you can't destroy it β it just moves around or changes form.",
GREEN_BG, GREEN_DARK))
story.append(sp(10))
conserv = [
("Conservation of Energy", "π",
"Energy can never be created from nothing, and it can never be destroyed. "
"It only CHANGES FORM.",
"When you rub your hands together β mechanical energy β heat energy. "
"Total energy stays the same!",
GREEN_BG, GREEN_DARK),
("Conservation of Linear Momentum", "π±",
"The total 'quantity of motion' (mass Γ velocity) of a closed system stays the same "
"if no outside force acts on it.",
"In a game of billiards β when one ball hits another, the total momentum of "
"all balls before and after the hit is the same.",
LIGHT_BLUE, MID_BLUE),
("Conservation of Angular Momentum", "π",
"The total spinning motion of a system stays the same if no external twist (torque) acts.",
"A figure skater pulls their arms in and spins FASTER β because angular momentum "
"must stay constant, so speed increases when arms come in!",
ORANGE_BG, ORANGE_DARK),
("Conservation of Electric Charge", "β‘",
"The total electric charge in an isolated system never changes. "
"Positive and negative charges can cancel out, but the total stays the same.",
"In all nuclear reactions and chemical reactions, the total charge before = total charge after.",
PURPLE_BG, PURPLE_DARK),
]
for law, icon, explan, example, bg, border in conserv:
story.append(KeepTogether([
Table([[Paragraph(f"{icon} {law}", S("cl", fontName="Helvetica-Bold",
fontSize=11, textColor=border, leading=16))]], colWidths=[CW]),
sp(3),
Table([
[Paragraph(explan, S("ce", fontName="Helvetica", fontSize=10,
textColor=DARK_GRAY, leading=15))],
[Paragraph(f"<b>Real Life Example:</b> <i>{example}</i>",
S("cex", fontName="Helvetica", fontSize=9,
textColor=border, leading=14))],
], colWidths=[CW]),
sp(4),
HRFlowable(width=CW, thickness=0.4, color=border, spaceBefore=0, spaceAfter=0),
sp(10),
]))
# Noether's Theorem
story.append(callout("π", "Noether's Theorem (Advanced but Cool!)",
"Emmy Noether (a brilliant mathematician) proved that every symmetry in nature is connected "
"to a conservation law:\n"
"β’ If physics looks the same at ALL times β Energy is conserved\n"
"β’ If physics looks the same at ALL places β Momentum is conserved\n"
"β’ If physics looks the same in ALL directions β Angular Momentum is conserved",
PINK_BG, PINK_DARK))
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# SECTION 5 β FORMULAS MADE EASY
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(PageBreak())
story.append(sec_hdr("5. FORMULAS β Made Easy to Understand", colors.HexColor("#880E4F")))
story.append(sp(10))
story.append(callout("π", "Important Note",
"Chapter 1 is mostly about concepts, not calculations. "
"These formulas come from later chapters but are MENTIONED here as examples of physics. "
"Just know what each formula means β you don't need to solve problems from this chapter.",
YELLOW_BG, YELLOW_DARK))
story.append(sp(10))
formulas = [
("Newton's Law of Gravitation", "F = G mβ mβ / rΒ²",
"F = pulling force between two objects\n"
"G = 6.674Γ10β»ΒΉΒΉ (a fixed number β Gravitational Constant)\n"
"mβ, mβ = masses of the two objects\n"
"r = distance between them\n"
"More mass = more force. More distance = less force.",
GREEN_BG, GREEN_DARK),
("Coulomb's Law (Electric Force)", "F = k qβ qβ / rΒ²",
"F = electric force between two charges\n"
"k = 9Γ10βΉ (a fixed number)\n"
"qβ, qβ = the two electric charges\n"
"r = distance between them\n"
"Same shape as gravity formula β but works for charges!",
LIGHT_BLUE, MID_BLUE),
("Einstein's Famous Formula", "E = m cΒ²",
"E = Energy\n"
"m = mass (even a tiny bit of mass has HUGE energy!)\n"
"c = speed of light = 3Γ10βΈ m/s (cΒ² is a HUGE number)\n"
"This means: mass can be converted to energy. This is why nuclear bombs and nuclear power plants work!",
ORANGE_BG, ORANGE_DARK),
("Planck's Formula (Energy of Light)", "E = h Ξ½",
"E = energy of one tiny packet (photon) of light\n"
"h = 6.626Γ10β»Β³β΄ JΒ·s (Planck's constant β very tiny number)\n"
"Ξ½ (nu) = frequency of light (how fast it vibrates)\n"
"Higher frequency light (like X-rays) has MORE energy than low frequency light (like radio waves).",
PURPLE_BG, PURPLE_DARK),
("de Broglie Wavelength (Matter as Wave)", "Ξ» = h / (m v)",
"Ξ» (lambda) = wavelength of a moving particle\n"
"h = Planck's constant\n"
"m = mass of particle, v = its speed\n"
"Amazing idea: Moving particles (like electrons) also behave like waves! "
"This is the basis of quantum mechanics.",
PINK_BG, PINK_DARK),
]
for fname, formula, explanation, bg, border in formulas:
story.append(KeepTogether([
Paragraph(fname, SUBSEC_S),
sp(4),
formula_box(formula, bg=bg, border=border),
sp(6),
Table([[Paragraph(explanation.replace("\n","<br/>"),
S("fe", fontName="Helvetica", fontSize=9, textColor=DARK_GRAY,
leading=14, leftIndent=8))]], colWidths=[CW]),
sp(12),
]))
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# SECTION 6 β PHYSICS & TECHNOLOGY (SIMPLE)
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(PageBreak())
story.append(sec_hdr("6. PHYSICS GAVE US TECHNOLOGY!", ACCENT))
story.append(sp(10))
story.append(callout("π", "The Big Picture",
"Every modern technology you use β smartphones, the internet, hospitals, aeroplanes, electricity β "
"exists because of discoveries in Physics. Physics discoveries β Engineers build technology β "
"Society benefits!",
YELLOW_BG, YELLOW_DARK))
story.append(sp(10))
story.append(make_table(
["Physics Discovery", "Technology It Created", "How It Helps Us"],
[
["Gravity & Motion Laws\n(Newton)", "Rockets, Satellites, GPS", "Space travel, Google Maps, navigation"],
["Electromagnetic Induction\n(Faraday)", "Electric generators & motors", "All electricity in your home!"],
["EM Waves (Maxwell)", "Radio, TV, Wi-Fi, Mobile phones", "Global communication"],
["X-rays (RΓΆntgen, 1895)", "Medical X-ray machines", "Doctors can see inside your body"],
["Nuclear Fission", "Nuclear power plants", "Electricity for millions of homes"],
["Quantum Mechanics", "Transistors, Computers, Lasers", "Smartphones, internet, surgery"],
["Superconductivity", "MRI machines, Maglev trains", "Better hospitals, faster trains"],
["Radioactivity", "Cancer radiation therapy", "Treating cancer patients"],
],
col_widths=[4.5*cm, 4.5*cm, CW - 9.0*cm]
))
story.append(sp(12))
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# SECTION 7 β FAMOUS SCIENTISTS
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(sec_hdr("7. FAMOUS SCIENTISTS (Easy to Remember)", colors.HexColor("#1A237E")))
story.append(sp(10))
story.append(make_table(
["Scientist", "Country", "What They Did (Simple Version)"],
[
["Galileo Galilei\n(1564β1642)", "Italy", "First used a telescope for astronomy. Proved objects fall at same speed regardless of weight. Father of modern science."],
["Isaac Newton\n(1643β1727)", "England", "Explained why things fall (gravity). Gave 3 laws of motion. Invented calculus. 'Apple falling' story!"],
["James Maxwell\n(1831β1879)", "Scotland","Showed electricity and magnetism are ONE force. Predicted radio waves exist before anyone proved it!"],
["Marie Curie\n(1867β1934)", "Poland", "Discovered radioactivity. First woman to win Nobel Prize. Won it TWICE (Physics + Chemistry)!"],
["Max Planck\n(1858β1947)", "Germany", "Discovered that energy comes in tiny packets called 'quanta'. Started Quantum Physics."],
["Albert Einstein\n(1879β1955)", "Germany", "E = mcΒ². Showed time slows down at high speeds. Explained how light works. Genius!"],
["Niels Bohr\n(1885β1962)", "Denmark", "Made a model of the atom β electrons orbit nucleus like planets orbit Sun."],
["Ernest Rutherford\n(1871β1937)", "N. Zealand","Discovered that atoms have a tiny heavy nucleus in the centre. 'Father of Nuclear Physics'."],
["C. V. Raman\n(1888β1970)", "India", "Discovered Raman Effect β light changes colour when scattered. Won Nobel Prize 1930. ONLY Indian physicist to win Nobel!"],
["S. N. Bose\n(1894β1974)", "India", "Worked with Einstein on quantum statistics. 'Bosons' (a type of particle) are named after him!"],
],
col_widths=[4.0*cm, 2.5*cm, CW - 6.5*cm]
))
story.append(sp(12))
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# SECTION 8 β UNIFICATION (SIMPLE)
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(sec_hdr("8. UNIFICATION OF FORCES (The Big Dream!)", MID_BLUE))
story.append(sp(10))
story.append(callout("π", "The Dream of Physics",
"Physicists have always dreamed of finding ONE single rule that explains EVERYTHING in the universe. "
"We are not there yet β but we're getting closer!",
LIGHT_BLUE, MID_BLUE))
story.append(sp(10))
# Progress diagram as table
story.append(make_table(
["Unified Theory", "Forces Joined Together", "Who Did It?", "Is it proved?"],
[
["Electromagnetism", "Electricity + Magnetism", "Maxwell (1865)", "YES β"],
["Electroweak Theory", "EM Force + Weak Nuclear Force", "Glashow, Salam, Weinberg (1979)", "YES β"],
["Grand Unified Theory (GUT)", "Electroweak + Strong Nuclear Force", "Scientists working on it...", "NOT YET β"],
["Theory of Everything (TOE)", "ALL 4 forces including Gravity", "Nobody yet!", "NOT YET β"],
],
col_widths=[4.5*cm, 5.0*cm, 4.5*cm, 2.5*cm + (CW - 16.5*cm)]
))
story.append(sp(10))
story.append(callout("π", "Why is This a Big Deal?",
"If scientists find the Theory of Everything, we will understand the ENTIRE universe "
"with just ONE simple formula. Right now, gravity doesn't fit with quantum mechanics. "
"Solving this is the biggest unsolved problem in physics!",
PINK_BG, PINK_DARK))
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# SECTION 9 β QUICK REVISION
# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
story.append(PageBreak())
story.append(sec_hdr("9. QUICK REVISION β 30 Must-Know Points", ACCENT))
story.append(sp(10))
revision = [
("1", "Physics studies matter, energy, space, time and their interactions."),
("2", "The word 'Physics' comes from Greek word 'fusis' = nature."),
("3", "There are exactly 4 fundamental forces in nature."),
("4", "Strongest force = Strong Nuclear Force."),
("5", "Weakest force = Gravitational Force."),
("6", "Gravity is ALWAYS attractive β it never repels."),
("7", "EM force can attract OR repel (depends on charges)."),
("8", "Strong nuclear force holds the nucleus together."),
("9", "Weak nuclear force causes radioactive beta decay."),
("10", "Photon (particle of light) carries the EM force."),
("11", "Gluons carry the Strong Nuclear Force."),
("12", "W and Z bosons carry the Weak Nuclear Force."),
("13", "Graviton is theoretical β not yet discovered."),
("14", "Conservation of Energy: Energy can't be created or destroyed."),
("15", "Conservation of Momentum: p = mv stays constant in a closed system."),
("16", "Noether's Theorem: Every symmetry = a conservation law."),
("17", "Maxwell unified electricity and magnetism in 1865."),
("18", "Glashow, Salam, Weinberg unified EM + Weak forces (Nobel 1979)."),
("19", "Theory of Everything = unifying all 4 forces. NOT achieved yet."),
("20", "E = mcΒ² means mass can convert to huge amounts of energy."),
("21", "Planck's constant h = 6.626 Γ 10β»Β³β΄ JΒ·s."),
("22", "Speed of light c = 3 Γ 10βΈ m/s."),
("23", "C. V. Raman β only Indian physicist to win Nobel Prize (1930)."),
("24", "Bosons are named after S. N. Bose (Indian scientist)."),
("25", "Reductionism = explaining complex things using simple laws."),
("26", "Unification = showing different things follow the same law."),
("27", "X-rays were discovered by RΓΆntgen in 1895."),
("28", "Transistors work because of Quantum Mechanics."),
("29", "Strong force range β 10β»ΒΉβ΅ m; Weak force range β 10β»ΒΉβΆ m."),
("30", "Chapter 1 is conceptual β no numerical problems in board exam!"),
]
# 2-column table
half_r = len(revision) // 2
left_r = revision[:half_r]
right_r = revision[half_r:]
r_data = []
for i in range(max(len(left_r), len(right_r))):
row = []
if i < len(left_r):
n, txt = left_r[i]
row += [Paragraph(f"<b>{n}.</b>", S("rn", fontName="Helvetica-Bold",
fontSize=9, textColor=ACCENT, leading=14)),
Paragraph(txt, S("rt", fontName="Helvetica", fontSize=9,
textColor=DARK_GRAY, leading=13))]
else:
row += [Paragraph("", BODY_S), Paragraph("", BODY_S)]
row.append(Paragraph("", BODY_S)) # divider col
if i < len(right_r):
n, txt = right_r[i]
row += [Paragraph(f"<b>{n}.</b>", S("rn2", fontName="Helvetica-Bold",
fontSize=9, textColor=ACCENT, leading=14)),
Paragraph(txt, S("rt2", fontName="Helvetica", fontSize=9,
textColor=DARK_GRAY, leading=13))]
else:
row += [Paragraph("", BODY_S), Paragraph("", BODY_S)]
r_data.append(row)
half = (CW - 5*mm) / 2
rt = Table(r_data, colWidths=[0.8*cm, half - 0.8*cm, 5*mm, 0.8*cm, half - 0.8*cm])
rt.setStyle(TableStyle([
("VALIGN",(0,0),(-1,-1),"TOP"),
("TOPPADDING",(0,0),(-1,-1),3), ("BOTTOMPADDING",(0,0),(-1,-1),3),
("LINEBELOW",(0,0),(1,-1), 0.3, MED_GRAY),
("LINEBELOW",(3,0),(4,-1), 0.3, MED_GRAY),
("ROWBACKGROUNDS",(0,0),(1,-1),[WHITE, LIGHT_GRAY]),
("ROWBACKGROUNDS",(3,0),(4,-1),[WHITE, LIGHT_GRAY]),
]))
story.append(rt)
story.append(sp(16))
story.append(callout("π―", "Exam Strategy for Chapter 1",
"This chapter has NO calculations or tough sums. Exams mostly ask:\n"
"β’ 1-mark: 'What is the strongest/weakest force?', 'Who gave E=mcΒ²?'\n"
"β’ 2-mark: Define hypothesis vs theory, OR name the 4 fundamental forces.\n"
"β’ 3-mark: Write properties of any one fundamental force.\n"
"β’ Focus on: 4 forces, their properties, conservation laws, scientist names.",
PINK_BG, PINK_DARK))
story.append(sp(20))
story.append(Paragraph(
"You've got this! Study smart and score full marks. π β Orris AI",
S("fin", fontName="Helvetica-BoldOblique", fontSize=11,
textColor=DARK_BLUE, alignment=TA_CENTER)
))
# ββ Build PDF ββββββββββββββββββββββββββββββββββββββββββββββββββ
doc.build(story, onFirstPage=on_page, onLaterPages=on_page)
print(f"β
PDF saved to: {OUTPUT}")
cd /tmp/workspace/physical-world-studyguide && python generate_easy_pdf.py 2>&1
ls -lh /tmp/workspace/physical-world-studyguide/Physical_World_Easy_Language.pdf
Physical World Easy Language
PDF Document Β· PDF
| Feature | Previous PDF | This Easy Version |
|---|---|---|
| Language | Technical/formal | Plain simple English |
| Definitions | Dictionary-style | "In simple words..." with real-life examples |
| Forces section | Properties listed | Stories + "Wow facts" + daily life analogies |
| Formulas | Just the formula + variables | Explains what each part MEANS in plain words |
| Conservation laws | Formal statements | Real-life examples (skater, billiards) |
| Scientists | Formal contributions | Fun one-liners ("Apple falling story!") |
| Memory aids | None | Mnemonics like "Good Work Every Saturday" for force strength order |
| Revision section | One-liners | 30 must-know points in 2-column layout |
| Exam tips | Basic note | Specific: what types of questions come from this chapter |