# Sine and Cosine — Waves from a Spinning Point
> **Animation coming** — full Sora 2 prompt below. Video will replace this placeholder.
## Plain English first
Put a dot on the edge of a wheel and spin the wheel at steady speed.
Watch just the dot's height as the wheel turns. It rises, reaches the top, comes back down, passes the middle, reaches the bottom, comes back up. Over and over. That repeating up-and-down trace is a **sine wave**.
Watch just the dot's horizontal position. Same pattern, but shifted — it starts at maximum right, sweeps left, comes back. That's a **cosine wave**.
Sine and cosine are not formulas someone invented. They are what a rotating point looks like when you watch only one axis at a time.
---
## Standard math notation
```
For a point on a unit circle (radius = 1) at angle θ:
x-coordinate = cos(θ) ← horizontal position
y-coordinate = sin(θ) ← vertical position
The point's position: (cos θ, sin θ)
Key identity — Pythagorean theorem on the unit circle:
sin²θ + cos²θ = 1
(because x² + y² = r² = 1² = 1 always)
Full cycle: θ goes from 0 to 2π radians (360°)
sin(0) = 0, sin(π/2) = 1, sin(π) = 0, sin(3π/2) = -1
cos(0) = 1, cos(π/2) = 0, cos(π) = -1, cos(3π/2) = 0
```
---
## Verbose Python with descriptive names
```python
import math
def compute_position_on_unit_circle(angle_in_radians):
"""
A point on a unit circle at a given angle.
x is how far right (positive) or left (negative) the point is.
y is how far up (positive) or down (negative) the point is.
"""
horizontal_position = math.cos(angle_in_radians)
vertical_position = math.sin(angle_in_radians)
return horizontal_position, vertical_position
# Trace a full rotation
number_of_steps = 8
angle_step = (2 * math.pi) / number_of_steps
print("Angle | cos (x) | sin (y)")
for step in range(number_of_steps + 1):
current_angle = step * angle_step
horizontal_x, vertical_y = compute_position_on_unit_circle(current_angle)
angle_in_degrees = round(math.degrees(current_angle))
print(f"{angle_in_degrees:5}° | {horizontal_x:+.4f} | {vertical_y:+.4f}")
# Verify the Pythagorean identity sin²+cos²=1
for angle in [0, 0.5, 1.0, 1.5, 2.0, 2.5]:
x, y = compute_position_on_unit_circle(angle)
identity_check = x**2 + y**2
print(f"sin²+cos² at {angle:.1f} rad = {identity_check:.10f}") # always 1.0
# Build a sine wave as a list of y-values
def trace_sine_wave(
number_of_points_per_full_cycle,
number_of_full_cycles
):
total_points = number_of_points_per_full_cycle * number_of_full_cycles
angle_step_per_point = (2 * math.pi) / number_of_points_per_full_cycle
wave_values = []
for point_index in range(total_points):
current_angle = point_index * angle_step_per_point
height_at_this_point = math.sin(current_angle)
wave_values.append(height_at_this_point)
return wave_values
```
---
## Sora 2 video prompt
```
8-second split-screen animation. Left: a point orbits a unit circle
counterclockwise at steady speed, leaving a faint trail. Dotted vertical
line drops from the point to the x-axis (its y-coordinate). Dotted horizontal
line extends right. Right: as the point orbits, two waves draw themselves in
real time — the y-coordinate traces a red sine wave, the x-coordinate traces
a blue cosine wave. Both complete exactly one full cycle. Labels: 'sin θ = height'
and 'cos θ = sideways'. Dark background, glowing colored traces, elegant.
```
---
## Why sin²θ + cos²θ = 1 always
```python
# This is just the Pythagorean theorem on the unit circle.
# The point (cos θ, sin θ) is always on the circle of radius 1.
# x² + y² = r² → cos²θ + sin²θ = 1² → always 1.
# The identity is not a separate fact to memorize.
# It's the Pythagorean theorem wearing a trig costume.
```
---
## Builds on
- [Pythagorean Theorem — Squares on Sides](/articles/4d64ff4e-28db-4c2b-8415-8751fd5adecf)
- [Visual Radians Without Math Libraries](/articles/7090a8d6-5f02-456e-82ec-31741bd1fe38)
- [Visual Unit Circle Sine and Cosine](/articles/ad8e2329-9d21-42bb-9d33-2ef79f1fa21f)
## See also
- [Visual Tangent Without Math Libraries](/articles/79e757c8-c0af-4543-b5f0-e68ac4c39e39)
- [Visual Calculus for Programmers](/articles/cbda355b-86cb-4c12-aebb-de239c2eb6b4)
- [Math Foundations — Visual Table of Contents](/articles/d404884f-54fc-4289-b3f1-baaad2bec6b2)