Home
๐Ÿ“

Complex

This sketch plots y=x3+0.5y = x^3 + 0.5 on the complex plane
Toggle shader source Remix this

:: <complex> ( a b -- c ) a b vec2 ;
:: real>> ( c -- a ) c .x ;
:: imag>> ( c -- b ) c .y ;

:: c+ ( a b -- c )
   \ add two complex numbers
   a real>> b real>> +
   a imag>> b imag>> +
   <complex>
;

:: c* ( a b -- c )
   \ multiply two complex numbers
   \ (a + bi)*(c + di) = ac + (bc + ad)i - bd
   a real>> b real>> *
   a imag>> b imag>> *
   -
   
   a imag>> b real>> *
   a real>> b imag>> *
   +
   
   <complex>
;

:: r+ ( c r -- c )
   \ add a real
   c real>> r +
   c imag>>
   <complex>
;

:: r* ( c s -- c )
   \ multiply by a real
   c real>> s *
   c imag>>
   <complex>
;

:: c^ ( c pow -- c )
   \ raise a complex to a power
   1 0 <complex>
   pow [ c c* ] times
;

: main
  uv .x uv .y <complex>
  
  \ y = x^3 + 0.5
  3 c^ .5 r+

  \ zero fn
  length
  
  \ color
  time -
  palette
  1.0 vec4
;