This repository has been archived by the owner on Dec 12, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 31
/
Copy pathrnd.lisp
executable file
·112 lines (91 loc) · 4.49 KB
/
rnd.lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
(in-package #:weir-tests)
(defun %test-rnd ()
(do-test (length (rnd:rndspace 10 0d0 10d0)) 10)
(do-test
(rnd:rndspace 10 0d0 10d0) '(8.383887417540674d0 3.704390759927394d0
4.089044985321939d0 7.5623438794824605d0
0.5477479401961061d0 3.409356250400757d0
8.3460946770173d0 1.1737959928376207d0
2.8077405846385473d0 3.962028297321658d0))
(do-test
(rnd:rndspace 10 0d0 10d0 :order t)
'(0.7810904793737161d0 1.700886055024764d0 3.396607010299655d0
3.8464500251059364d0 6.014897498803242d0 6.268483093269445d0
7.527788782312825d0 7.562853532104885d0 7.892139712781054d0
9.365232493948968d0))
(do-test (rnd:rndspacei 10 0 10) '(0 5 4 6 9 4 5 1 6 2))
(do-test (rnd:rndspacei 10 0 10 :order t) '(0 0 1 3 4 6 6 7 7 8))
(do-test (length (rnd:nrndi 9 4)) 9)
(do-test (length (rnd:nrnd 11 4d0)) 11)
(do-test (length (rnd:nrnd 12 4d0)) 12)
(do-test (length (rnd:nrnd* 12 4d0)) 12)
(do-test (rnd:bernoulli 4 0.5d0) '(1.0d0 1.0d0 1.0d0 0.0d0))
(do-test
(let ((a (list)))
(rnd:with-rndspace (10 0d0 7d0 v)
(setf a (append a (list v))))
a)
'(3.685259713645226d0 4.991448661044605d0 3.539035793913204d0
5.3387868441394275d0 0.1633726540474778d0 6.973528243894615d0
1.0330884964197056d0 4.0173212494133175d0 0.8969394201134988d0
4.974343346335651d0))
(do-test
(let ((a (list)))
(rnd:with-on-line (10 (vec:vec 1d0 1d0) (vec:vec 4d0 3d0) v)
(setf a (append a (list v))))
a)
'(#s(vec:vec :x 3.6510221714119075d0 :y 2.767348114274605d0)
#s(vec:vec :x 3.2788197623070983d0 :y 2.519213174871399d0)
#s(vec:vec :x 2.57752200139861d0 :y 2.0516813342657403d0)
#s(vec:vec :x 2.6295687876114506d0 :y 2.086379191740967d0)
#s(vec:vec :x 2.8081607900724164d0 :y 2.2054405267149444d0)
#s(vec:vec :x 2.6364353670451637d0 :y 2.0909569113634423d0)
#s(vec:vec :x 1.917579631743151d0 :y 1.611719754495434d0)
#s(vec:vec :x 1.471804219412153d0 :y 1.3145361462747687d0)
#s(vec:vec :x 1.0540501192343574d0 :y 1.036033412822905d0)
#s(vec:vec :x 2.2542534559338394d0 :y 1.8361689706225595d0)))
(do-test
(let ((a (list)))
(rnd:with-in-circ (10 4d0 v)
(setf a (append a (list v))))
a)
'(#s(vec:vec :x -3.4812725617482108d0 :y -1.4342021415902404d0)
#s(vec:vec :x -3.3258558236239657d0 :y -1.7087563072788825d0)
#s(vec:vec :x 1.4951268602022627d0 :y 2.192229972199324d0)
#s(vec:vec :x 2.253706810614843d0 :y 3.03441459039537d0)
#s(vec:vec :x 0.49135907411120827d0 :y -1.8789342181108328d0)
#s(vec:vec :x -3.713396150291062d0 :y 0.09010719936315531d0)
#s(vec:vec :x 1.6173087868317984d0 :y 0.4103238784840838d0)
#s(vec:vec :x -0.2918348851951156d0 :y 0.26535108277767916d0)
#s(vec:vec :x -2.907379354217956d0 :y 1.2646150403903704d0)
#s(vec:vec :x 0.721218948201519d0 :y 0.4664641316794225d0)))
(do-test
(rnd:on-line (vec:vec 101d0 204d0) (vec:vec 433d0 454d0))
'#s(vec:vec :x 168.8180327694698d0 :y 255.06779576014293d0))
(do-test
(rnd:on-circ 303d0 :xy (vec:vec 303d0 73d0))
'#s(vec:vec :x 35.162028047713875d0 :y -68.67505348679558d0))
(do-test
(rnd:in-circ 303d0 :xy (vec:vec 303d0 73d0))
'#s(vec:vec :x 19.70338976631723d0 :y 80.90208708999396d0))
(do-test
(rnd:non-line 5 (vec:vec 101d0 204d0) (vec:vec 433d0 454d0))
'(#s(vec:vec :x 285.8034603362477d0 :y 343.1592321809094d0)
#s(vec:vec :x 256.12514561556054d0 :y 320.81110362617505d0)
#s(vec:vec :x 161.79341742713638d0 :y 249.77817577344607d0)
#s(vec:vec :x 147.5244311387897d0 :y 239.03345718282358d0)
#s(vec:vec :x 378.5032484646158d0 :y 412.9632895064878d0)))
(do-test
(rnd:nin-circ 5 20d0 :xy (vec:vec 433d0 454d0))
'(#s(vec:vec :x 441.7151991128114d0 :y 442.14508334151736d0)
#s(vec:vec :x 433.01811203629177d0 :y 442.409624270997d0)
#s(vec:vec :x 431.438760580709d0 :y 471.0048750395453d0)
#s(vec:vec :x 418.4796027137922d0 :y 444.94482543208636d0)
#s(vec:vec :x 442.6150368837021d0 :y 439.81657589291336d0)))
(do-test (rnd:nrnd* 10 2d0)
'(0.7732920786153752d0 -1.4975206167292585d0 -1.3312763499989444d0
-0.2556656864522502d0 1.0693675499382618d0 1.7120034800835446d0
0.7654113290558548d0 0.9618451233891179d0 -0.3548773470929323d0
-0.8865187381762034d0)))
(define-file-tests test-rnd ()
(test-title (%test-rnd)))