Maluj według funkcji

render funkcja
(render funkcja krycie)
(render funkcja krycie prostokąt)
(render funkcja krycie p1 p2)

Tworzy obraz, w którym kolor każdego punktu jest wynikiem funkcji położenia punktu. Funkcja musi mieć dwa lub trzy argumenty: współrzędne :x i :y oraz opcjonalnie bieżący w danym punkcie kolor :c. Domyślnie rozmiar tworzonego obrazu pokrywa całe okno graficzne. Opcjonalnie można podać w instrukcji krycie - wartość od 0 (przeźroczysty) do 100 (nieprzeźroczysty). Jeśli poza kryciem zostanie podany drugi opcjonalny argument, prostokąt (4-elementowa tablica lub lista: {lewy prawy góra dół}), obraz jest tworzony dla obszaru ograniczonego przez położenia boków podanego prostokąta. Jeśli podane zostanie krycie i dwa dodatkowe argumenty, punkty p1 i p2, obszar obrazu wyznaczają podane punkty (2-elementowe tablice lub listy współrzędnych {x y}).

Kolor - wynik funkcji może być podany jako nazwa, indeks koloru w bieżącej palecie żółwia lub zbiór 3 lub 4 składowych: {r g b}, {r g b krycie}. Zakres wartości składowych to 0 (wygaszona) do 100 (pełna jasność), a dla składowej krycia: wartość od 0 (przeźroczysty) do 100 (nieprzeźroczysty).

Przykład 1:

to fkolor :x :y
  let "d sqrt :x^2 + :y^2
  op 15 * :d
end

ht
(render $fkolor 100 {-50 50 50 -50})

Rezultat wykonania: rysunek w oknie graficznym.

Przykład 2:

to fkolor :x :y
  let "d sqrt (:x - xcor)^2 + (:y - ycor)^2
  let "dp :d * :p
  let "c newarray 4
  :c,1 := 50 * (1 + sin 1.1 * :dp)
  :c,2 := 50 * (1 + cos 1.3 * :dp)
  :c,3 := 50 * (1 + (cos 1.4 * :dp)^2)
  ifelse :d < 50 [:c,4 := 100 - 2 * :d] [:c,4 := 0]
  op :c
end

ht
:pool_cfg,"refresh := false
repeat 300 [
  "p := 50 * sin 2*repcount
  clean
  (render $fkolor 100 {-50 50 50 -50})
  refresh
]

Rezultat wykonania: rysunek w oknie graficznym.

Zobacz także:

Spis treści