objects moving near the speed of light but speed of light does not increase. The lighter the color the older the emission.
Quote:
View.Set ("graphics:1000;600,offscreenonly")
for clr : 1 .. 100
    RGB.SetColor (clr + 100, (clr + 50) * 2, (clr + 50) * 2, (clr + 50) * 2)
end for
var scale := 10
const mxm := 100
const renewal := 50
const SOL := 1.5
const freqlength := 30
type Emitter :
    record
        x, y, vx, vy : real
        xx : array 1 .. mxm of real
        yy : array 1 .. mxm of real
        rr : array 1 .. mxm of real
        i : int
    end record
color (white)
colorback (black)
cls
proc initializeEmitter (var e : Emitter, x, y, vangle, vmag : real)
    e.x := x
    e.y := y
    e.vx := cosd (vangle) * vmag
    e.vy := sind (vangle) * vmag
    for i : 1 .. mxm
        e.xx (i) := e.x
        e.yy (i) := e.y
        e.rr (i) := 10
    end for
    e.i := 1
end initializeEmitter
proc drawEmitter (e : Emitter, c1, c2 : int)
    for i : 1 .. mxm
        drawoval (round (e.xx (i) / scale) + (maxx div 2), round (e.yy (i) / scale) + (maxy div 2), round (e.rr (i) / scale), round (e.rr (i) / scale), (((round (e.rr (i) / scale) div freqlength)
            mod (c2 - c1))) + c1)
    end for
    drawfilloval (round (e.x / scale) + (maxx div 2), round (e.y / scale) + (maxy div 2), 5, 5, white)
end drawEmitter
proc moveEmitter (var e : Emitter)
    e.x += e.vx
    e.y += e.vy
    e.i += 1
    if e.i >= mxm * renewal then
        e.i := 1
    end if
    e.xx (1 + (e.i div renewal)) := e.x
    e.yy (1 + (e.i div renewal)) := e.y
    e.rr (1 + (e.i div renewal)) := 10
    for i : 1 .. mxm
        e.rr (i) += SOL
    end for
end moveEmitter
var e1, e2, e3 : Emitter
initializeEmitter (e1, 500, 0, 20, .8)
initializeEmitter (e2, -2000, 0, 200, 1)
initializeEmitter (e3, -500, 0, 160, 1.3)
loop
    moveEmitter (e1)
    moveEmitter (e2)
    moveEmitter (e3)
    drawEmitter (e1, 16, 31)
    drawEmitter (e2, 16, 31)
    drawEmitter (e3, 16, 31)
    View.Update
    %cls
end loop