Definition

The unit circle is a circle of radius 1 centered at the origin. For any angle \(\theta\) measured from the positive x-axis:

$$ \cos\theta = x, \qquad \sin\theta = y $$

That is: go \(\theta\) around the circle; your coordinates are cosine and sine. For acute angles this matches SOH-CAH-TOA with hypotenuse 1. For larger angles it extends the definitions.

import math
def point_on_circle(theta_rad, r=1.0):
    return (r * math.cos(theta_rad), r * math.sin(theta_rad))

print(point_on_circle(math.radians(180)))  # (-1.0, ~0)
print(point_on_circle(math.radians(270)))  # (~0, -1.0)

Key points to memorize

Angle Coordinates \((\cos, \sin)\)
0° (\(0\)) (1, 0)
30° (\(\pi/6\)) (√3/2 ≈ 0.866, 1/2)
45° (\(\pi/4\)) (√2/2 ≈ 0.707, √2/2)
60° (\(\pi/3\)) (1/2, √3/2 ≈ 0.866)
90° (\(\pi/2\)) (0, 1)
180° (\(\pi\)) (−1, 0)
270° (\(3\pi/2\)) (0, −1)
360° (\(2\pi\)) (1, 0)

Notice the symmetry: 30° and 60° swap coordinates; 45° is equal in both.

Signs by quadrant

Quadrant Angle range cos (x) sin (y) tan (y/x)
I 0°–90° + + +
II 90°–180° +
III 180°–270° +
IV 270°–360° +

Mnemonic: ASTCAll (QI), Sine (QII), Tangent (QIII), Cosine (QIV) are positive.

// Quadrant of an angle in degrees
function quadrant(deg) {
  const a = ((deg % 360) + 360) % 360;
  if (a < 90) return "I";
  if (a < 180) return "II";
  if (a < 270) return "III";
  return "IV";
}
console.log(quadrant(150));  // II → sin positive, cos negative
console.log(quadrant(-45));  // IV

Reference angles

A reference angle is the acute angle to the nearest x-axis. It lets you compute any angle from QI values plus a sign:

  • QII: \(180° − \theta\)
  • QIII: \(\theta − 180°\)
  • QIV: \(360° − \theta\)

Example: \(\sin 150°\). Reference angle = 180° − 150° = 30°. QII sine is positive:

$$ \sin 150^\circ = +\sin 30^\circ = \frac{1}{2} $$

Example: \(\cos 225°\). Reference angle = 45°. QIII cosine is negative:

$$ \cos 225^\circ = -\cos 45^\circ = -\frac{\sqrt{2}}{2} $$
import math
# Verify:
print(math.sin(math.radians(150)))   # 0.5
print(math.cos(math.radians(225)))   # -0.7071...

Why developers care

Every rotation in 2D is the unit circle in disguise:

import math
# Rotate point (x, y) by angle_deg around origin
def rotate(x, y, angle_deg):
    r = math.radians(angle_deg)
    c, s = math.cos(r), math.sin(r)
    return (x * c - y * s, x * s + y * c)

print(rotate(1, 0, 90))  # (0, 1) — unit-circle point for 90°

Angles > 360° or negative just keep spinning — normalize with modulo first (see Angles).

Practice

  1. Without a calculator: give signs of \(\sin 200°\), \(\cos 200°\), \(\tan 200°\). Then verify in code.
  2. Compute \(\sin 330°\) and \(\cos 300°\) via reference angles; check with Python.
  3. What are the coordinates for \(-90°\)? For \(720°\)?
  4. Code it: write point_on_circle_deg(deg, r) and plot 12 points at 30° steps (clock face).

Next: Special Right Triangles — where those √2/2 and √3/2 values come from.