rolling compass -
陳爽
'24 Mar 28
\ compass : 2pi 2 pi * ; : atan2 atan2 2pi / 1 mod ; : cos 2pi * cos ; : sin 2pi * sin ; : orig ( X Y -- ) 1 ! 0 ! ; : axis ( A -- ) 2 ! ; : wscale ( WS -- ) 3 ! ; 1 3 ! : hscale ( HS -- ) 4 ! ; 1 4 ! : radius ( R -- ) 5 ! ; 1 5 ! : thickness ( T -- ) 2 / 6 ! ; .01 6 ! : Halo_degree ( H -- ) 7 ! ; 149 7 ! : t9 t 99 / sin .5 * .5 + 1 + ; \ : x x .5 - t9 * 1 mod ; \ : y y .5 - t9 * 1 mod ; : x x 0 @ - 3 @ / ; : y y 1 @ - 4 @ / ; : r ( -- r ) y 2 ** x 2 ** + .5 ** ; : a ( -- a ) y x atan2 2 @ - 1 mod ; : x ( -- x ) r a cos * ; : y ( -- y ) r a sin * ; ( \ rolling colors .5 .5 orig ts axis x .0 > y .0 > r .4 < a 4 * .5 + 1 mod .2 ** \ ) \ rolling colors : 原點 ( X Y -- ) orig ; : 軸向 ( A -- ) axis ; : 半徑 ( R -- ) radius ; : 橫向放大 ( WS -- ) wscale ; : 縱向放大 ( HS -- ) hscale ; : 線徑 ( T -- ) thickness ; : 暈度 ( H -- ) Halo_degree ; : 絕對值 ( n -- n的絕對值 ) abs ; : 反圖 ( 圖 -- 反圖 ) 1 min 0 max 1 swap - ; : 等值線 ( f y -- 線 ) - 絕對值 6 @ < ; : 等值暈 ( f y -- 線 ) - 絕對值 反圖 7 @ ** ; : 橫線 ( Y -- 線 ) y 等值暈 ; : 垂線 ( X -- 線 ) x 等值暈 ; : 圈 ( R -- 圈 ) r 等值暈 ; : 點 0 圈 ; : 圓 ( R -- 圓 ) r > ; : 線 0 橫線 ; : 向線 ( R -- 向線 ) 圓 0 橫線 x 0 > * * ; : 垂向線 ( R -- 向線 ) 圓 0 垂線 y 0 > * * ; : 兩點線 ( X1 Y1 X2 Y2 -- 線段 ) >r >r ( X1 Y1 ) 原點 r> 0 @ - r> 1 @ - ( X2-X1 Y2-Y1 ) swap atan2 軸向 線 ; : t1 t 10 / ; : t6 t 60 / negate ; .4 .4 原點 t6 軸向 .00 垂線 線 + t1 軸向 .20 向線 + .20 垂向線 + .2 圈 + .2 圓 dup >r .1 * + .2 1.2 * 圓 * .6 .6 原點 t6 軸向 .00 垂線 線 + t1 軸向 .30 向線 + .30 垂向線 + .3 圈 + .3 1.2 * 圓 * .3 圓 dup >r .1 * + r> r> + .3 * .4 .4 .6 .6 兩點線 + 0 0 原點 x y + * r .2 ** \ ) \ compass
▶
*
\
compass
:
2pi 2
pi
*
;
:
atan2
atan2
2pi
/
1
mod
;
:
cos
2pi
*
cos
;
:
sin
2pi
*
sin
;
:
orig
(
X Y -- ) 1
!
0
!
;
:
axis
(
A -- ) 2
!
;
:
wscale
(
WS -- ) 3
!
;
1 3
!
:
hscale
(
HS -- ) 4
!
;
1 4
!
:
radius
(
R -- ) 5
!
;
1 5
!
:
thickness
(
T -- ) 2
/
6
!
;
.01 6
!
:
Halo_degree
(
H -- ) 7
!
;
149 7
!
:
t9
t
99
/
sin
.5
*
.5
+
1
+
;
\
:
x
x
.5
-
t9
*
1
mod
;
\
:
y
y
.5
-
t9
*
1
mod
;
:
x
x
0
@
-
3
@
/
;
:
y
y
1
@
-
4
@
/
;
:
r
(
-- r )
y
2
**
x
2
**
+
.5
**
;
:
a
(
-- a )
y
x
atan2
2
@
-
1
mod
;
:
x
(
--
x
) r a
cos
*
;
:
y
(
--
y
) r a
sin
*
;
(
\
rolling colors
.5 .5 orig ts axis
x
.0
>
y
.0
>
r .4
<
a 4
*
.5
+
1
mod
.2
**
\
)
\
rolling colors
:
原點
(
X Y -- ) orig
;
:
軸向
(
A -- ) axis
;
:
半徑
(
R -- ) radius
;
:
橫向放大
(
WS -- ) wscale
;
:
縱向放大
(
HS -- ) hscale
;
:
線徑
(
T -- ) thickness
;
:
暈度
(
H -- ) Halo_degree
;
:
絕對值
(
n -- n的絕對值 )
abs
;
:
反圖
(
圖 -- 反圖 ) 1
min
0
max
1
swap
-
;
:
等值線
(
f
y
-- 線 )
-
絕對值 6
@
<
;
:
等值暈
(
f
y
-- 線 )
-
絕對值 反圖 7
@
**
;
:
橫線
(
Y -- 線 )
y
等值暈
;
:
垂線
(
X -- 線 )
x
等值暈
;
:
圈
(
R -- 圈 ) r 等值暈
;
:
點 0 圈
;
:
圓
(
R -- 圓 ) r
>
;
:
線 0 橫線
;
:
向線
(
R -- 向線 ) 圓 0 橫線
x
0
>
*
*
;
:
垂向線
(
R -- 向線 ) 圓 0 垂線
y
0
>
*
*
;
:
兩點線
(
X1 Y1 X2 Y2 -- 線段 )
>r
>r
(
X1 Y1 ) 原點
r>
0
@
-
r>
1
@
-
(
X2-X1 Y2-Y1 )
swap
atan2
軸向 線
;
:
t1
t
10
/
;
:
t6
t
60
/
negate
;
.4 .4 原點
t6 軸向 .00 垂線 線
+
t1 軸向 .20 向線
+
.20 垂向線
+
.2 圈
+
.2 圓
dup
>r
.1
*
+
.2 1.2
*
圓
*
.6 .6 原點
t6 軸向 .00 垂線 線
+
t1 軸向 .30 向線
+
.30 垂向線
+
.3 圈
+
.3 1.2
*
圓
*
.3 圓
dup
>r
.1
*
+
r>
r>
+
.3
*
.4 .4 .6 .6 兩點線
+
0 0 原點
x
y
+
*
r .2
**
\
)
\
compass
Create a derived work
Printer View