API

computer_graphics_demo/__init__.py.

computer_graphics_demo

Common functions.

computer_graphics_demo.utils.init()

Init.

computer_graphics_demo.utils.setpixel(x: int, y: int, R: int, G: int, B: int)

Set Pixel.

参数
  • x (int) –

  • y (int) –

  • R (int) –

  • G (int) –

  • B (int) –

computer_graphics_demo.line

Draw a line.

computer_graphics_demo.line.polygon(R: int, G: int, B: int, *argv: int, isclose: bool = False, line: Optional[Callable[[int, int, int, int, int, int, int], None]] = None) None

polygon.

参数
  • R (int) –

  • G (int) –

  • B (int) –

  • argv (int) –

  • isclose (bool) –

  • line (Optional[Callable[[int, int, int, int, int, int, int], None]]) –

返回类型

None

computer_graphics_demo.line.bresenham

Bresenham algorithm.

computer_graphics_demo.line.bresenham.line(R: int, G: int, B: int, x1: int, y1: int, x2: int, y2: int)

line.

参数
  • R (int) –

  • G (int) –

  • B (int) –

  • x1 (int) –

  • y1 (int) –

  • x2 (int) –

  • y2 (int) –

computer_graphics_demo.line.bresenham.paint(R: int, G: int, B: int, *argv: int) None

paint.

参数
  • R (int) –

  • G (int) –

  • B (int) –

  • argv (int) –

返回类型

None

computer_graphics_demo.line.midpoint

Midpoint algorithm.

computer_graphics_demo.line.midpoint.line(R: int, G: int, B: int, x1: int, y1: int, x2: int, y2: int)

line.

参数
  • R (int) –

  • G (int) –

  • B (int) –

  • x1 (int) –

  • y1 (int) –

  • x2 (int) –

  • y2 (int) –

computer_graphics_demo.line.midpoint.paint(R: int, G: int, B: int, *argv: int) None

paint.

参数
  • R (int) –

  • G (int) –

  • B (int) –

  • argv (int) –

返回类型

None

computer_graphics_demo.circle

Draw a circle.

computer_graphics_demo.circle.set4pixel(x0, y0, x, y, R, G, B)

set4pixel.

参数
  • x0

  • y0

  • x

  • y

  • R

  • G

  • B

computer_graphics_demo.circle.set8pixel(x0, y0, x, y, R, G, B)

set8pixel.

参数
  • x0

  • y0

  • x

  • y

  • R

  • G

  • B

computer_graphics_demo.circle.bresenham

Bresenham algorithm.

computer_graphics_demo.circle.bresenham.circle(R: int, G: int, B: int, x0: int, y0: int, r: int)

circle.

参数
  • R (int) –

  • G (int) –

  • B (int) –

  • x0 (int) –

  • y0 (int) –

  • r (int) –

computer_graphics_demo.circle.bresenham.paint(R: int, G: int, B: int, x0: int, y0: int, r: int)

paint.

参数
  • R (int) –

  • G (int) –

  • B (int) –

  • x0 (int) –

  • y0 (int) –

  • r (int) –

computer_graphics_demo.circle.midpoint

Midpoint algorithm.

computer_graphics_demo.circle.midpoint.circle(R: int, G: int, B: int, x0: int, y0: int, r: int)

circle.

参数
  • R (int) –

  • G (int) –

  • B (int) –

  • x0 (int) –

  • y0 (int) –

  • r (int) –

computer_graphics_demo.circle.midpoint.paint(R: int, G: int, B: int, x0: int, y0: int, r: int)

paint.

参数
  • R (int) –

  • G (int) –

  • B (int) –

  • x0 (int) –

  • y0 (int) –

  • r (int) –

computer_graphics_demo.ellipse

Draw a ellipse.

computer_graphics_demo.ellipse.ellipse(R: int, G: int, B: int, x0: int, y0: int, a0: int, b0: int)

ellipse.

参数
  • R (int) –

  • G (int) –

  • B (int) –

  • x0 (int) –

  • y0 (int) –

  • a (int) –

  • b (int) –

computer_graphics_demo.ellipse.paint(R: int, G: int, B: int, x0: int, y0: int, a: int, b: int)

paint.

参数
  • R (int) –

  • G (int) –

  • B (int) –

  • x0 (int) –

  • y0 (int) –

  • a (int) –

  • b (int) –

computer_graphics_demo.fill

Fill a region.

computer_graphics_demo.fill.cycle_shift(xs, number: int)

cycle_shift.

参数
  • xs

  • number (int) –

computer_graphics_demo.fill.scan

Scan line algorithm.

computer_graphics_demo.fill.scan.paint(R: int, G: int, B: int, *argv: int)

paint.

参数
  • R (int) –

  • G (int) –

  • B (int) –

  • argv (int) –

computer_graphics_demo.fill.seed

Seed point algorithm.

computer_graphics_demo.fill.seed.paint(R: int, G: int, B: int, x_seed: int, y_seed: int, *argv: int)

paint.

参数
  • R (int) –

  • G (int) –

  • B (int) –

  • x_seed (int) –

  • y_seed (int) –

  • argv (int) –

computer_graphics_demo.bezier

Draw a Bezier curve.

computer_graphics_demo.bezier.basis(i: int, degree: int, u: float) float

basis.

参数
  • i (int) –

  • degree (int) –

  • u (float) –

返回类型

float

computer_graphics_demo.bezier.paint(R: int, G: int, B: int, sample_number: int, *argv: int) None

paint.

参数
  • R (int) –

  • G (int) –

  • B (int) –

  • sample_number (int) –

  • argv (int) –

返回类型

None

computer_graphics_demo.b

Draw a B-spline.

computer_graphics_demo.b.b_basis(i: int, degree: int, u: int, nodes: List[int]) float

b_basis.

参数
  • i (int) –

  • degree (int) –

  • u (int) –

  • nodes (List[int]) –

返回类型

float

computer_graphics_demo.b.paint(R: int, G: int, B: int, degree: int, *argv: int) None

paint.

参数
  • R (int) –

  • G (int) –

  • B (int) –

  • degree (int) –

  • argv (int) –

返回类型

None

computer_graphics_demo.koch

Draw a Koch curve

computer_graphics_demo.koch.paint(R: int, G: int, B: int, scale: int, iteration_max: int, x0: int, y0: int)

paint.

参数
  • R (int) –

  • G (int) –

  • B (int) –

  • scale (int) –

  • iteration_max (int) –

  • x0 (int) –

  • y0 (int) –

computer_graphics_demo.koch.rule(char: str) str

rule.

参数

char (str) –

返回类型

str

computer_graphics_demo.mandelbrot

Draw a Mandelbrot set

computer_graphics_demo.mandelbrot.complex_sqr(z) Vector

complex_sqr.

参数

z

computer_graphics_demo.mandelbrot.paint(R: int, G: int, B: int, scale: float, iteration_max: int)

paint.

参数
  • R (int) –

  • G (int) –

  • B (int) –

  • scale (float) –

  • iteration_max (int) –

computer_graphics_demo.julia

Draw a Julia set.

computer_graphics_demo.julia.complex_sqr(z) Vector

complex_sqr.

参数

z

computer_graphics_demo.julia.paint(R: int, G: int, B: int, scale: float, iteration_max: int)

paint.

参数
  • R (int) –

  • G (int) –

  • B (int) –

  • scale (float) –

  • iteration_max (int) –

computer_graphics_demo.fern

Draw a fern.

computer_graphics_demo.fern.fern(probability: List[float], eqs: List[ndarray], init: List[float], iteration_max: int) Tuple[List[float], List[float]]

fern.

参数
  • probability (List[float]) –

  • eqs (List[np.ndarray]) –

  • init (List[float]) –

  • iteration_max (int) –

返回类型

Tuple[List[float], List[float]]

computer_graphics_demo.fern.paint(R: int, G: int, B: int, scale: int, iteration_max: int, x0: int, y0: int) None

paint.

参数
  • R (int) –

  • G (int) –

  • B (int) –

  • scale (int) –

  • iteration_max (int) –

  • x0 (int) –

  • y0 (int) –

返回类型

None

computer_graphics_demo.reality

Draw a scene by hidden surface removal, mirror reflection, texture, etc.

computer_graphics_demo.reality.color(start, dir)

color.

参数
  • start

  • dir

computer_graphics_demo.reality.hit_sphere(center, radius, rayo, rayd, mint, maxt)

hit_sphere.

参数
  • center

  • radius

  • rayo

  • rayd

  • mint

  • maxt

computer_graphics_demo.reality.hit_spheres(rayo, rayd, mint, maxt)

hit_spheres.

参数
  • rayo

  • rayd

  • mint

  • maxt

computer_graphics_demo.reality.init()

init.

computer_graphics_demo.reality.normalize(n)

normalize.

参数

n

computer_graphics_demo.reality.paint(R: int, G: int, B: int, sample_number: int, r_aperture: float)

paint.

参数
  • R (int) –

  • G (int) –

  • B (int) –

  • sample_number (int) –

  • r_aperture (float) –

computer_graphics_demo.reality.random_in_unit_sphere()

random_in_unit_sphere.

http://www.pbr-book.org/3ed-2018/Monte_Carlo_Integration/2D_Sampling_with_Multidimensional_Transformations.html

computer_graphics_demo.reality.reflect(v, n)

reflect.

https://en.wikipedia.org/wiki/Specular_reflection

参数
  • v

  • n

computer_graphics_demo.reality.refract(v, n, ni_over_nt)

refract.

https://en.wikipedia.org/wiki/Snell%27s_law

参数
  • v

  • n

  • ni_over_nt

computer_graphics_demo.reality.schlick(cosine, ni_over_nt)

schlick.

https://en.wikipedia.org/wiki/Schlick%27s_approximation

参数
  • cosine

  • ref_idx

computer_graphics_demo.reality.unit_vector(v)

unit_vector.

参数

v