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