Skip to content

Commit 20c81cb

Browse files
committed
Use flasin/flacos to avoid complex numbers.
Related to racket/typed-racket#1428
1 parent 0679449 commit 20c81cb

File tree

4 files changed

+14
-14
lines changed

4 files changed

+14
-14
lines changed

pict3d/private/gui/typed-pict3d-combinators.rkt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1222,7 +1222,7 @@
12221222
(for/fold ([n : FlV3 zero-flv3]) ([vs (in-list vss)])
12231223
(match-define (list v1 v2 v3) (map vertex-pos vs))
12241224
(define n1 (vertex-normal-or-zero (first vs)))
1225-
(define angle (acos (flv3corner-cos v3 v1 v2)))
1225+
(define angle (flacos (flv3corner-cos v3 v1 v2)))
12261226
(flv3+ n (flv3+ (flv3* n0 (* (- 1.0 α) angle))
12271227
(flv3* n1 (* α angle))))))
12281228
;; Set first vertex's normal

pict3d/private/pos/pos-dir.rkt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@
250250
(λ (x y z)
251251
(define r (flsqrt (+ (sqr x) (sqr y) (sqr z))))
252252
(values (radians->degrees (atan y x))
253-
(radians->degrees (asin (/ z r)))))))
253+
(radians->degrees (flasin (/ z r)))))))
254254

255255
(: pos+ (->* [Pos Dir] [Real] Pos))
256256
(define pos+

pict3d/private/shape/sphere.rkt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@
142142

143143
(: flv3slerp (-> FlV3 FlV3 Flonum FlV3))
144144
(define (flv3slerp v1 v2 α)
145-
(define angle (acos (flv3cos v1 v2)))
145+
(define angle (flacos (flv3cos v1 v2)))
146146
(define s (sin angle))
147147
(define β1 (/ (sin (* (- 1.0 α) angle)) s))
148148
(define β2 (/ (sin (* α angle)) s))

pict3d/private/soup/deform.rkt

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@
3232
(define wa (fls3apply/pos t va))
3333
(define wc (fls3apply/pos t vc))
3434
(define angle
35-
(+ (acos (flv3bend-cos w1 wa wb))
36-
(acos (flv3bend-cos wa wb wc))
37-
(acos (flv3bend-cos wb wc w2))))
35+
(+ (flacos (flv3bend-cos w1 wa wb))
36+
(flacos (flv3bend-cos wa wb wc))
37+
(flacos (flv3bend-cos wb wc w2))))
3838
(> (* angle (- 1.0 1e-8)) max-angle))
3939

4040
(: maybe-add-edge (-> (Listof (edge (Pair Boolean FlV3)))
@@ -85,19 +85,19 @@
8585
(define e12?
8686
(and (not keep12?)
8787
(or d12?
88-
(and m1 m2 (> (acos (flv3cos m1 m2)) max-angle))
88+
(and m1 m2 (> (flacos (flv3cos m1 m2)) max-angle))
8989
(arc-or-blend-split? blend v1 v12 v2 w1 (fls3apply/pos t v12) w2))))
9090

9191
(define e23?
9292
(and (not keep23?)
9393
(or d23?
94-
(and m2 m3 (> (acos (flv3cos m2 m3)) max-angle))
94+
(and m2 m3 (> (flacos (flv3cos m2 m3)) max-angle))
9595
(arc-or-blend-split? blend v2 v23 v3 w2 (fls3apply/pos t v23) w3))))
9696

9797
(define e31?
9898
(and (not keep31?)
9999
(or d31?
100-
(and m3 m1 (> (acos (flv3cos m3 m1)) max-angle))
100+
(and m3 m1 (> (flacos (flv3cos m3 m1)) max-angle))
101101
(arc-or-blend-split? blend v3 v31 v1 w3 (fls3apply/pos t v31) w1))))
102102

103103
(let* ([es (maybe-add-edge es blend vtx1 vtx2 v1 v2 v12 d12? e12? d12)]
@@ -212,7 +212,7 @@
212212
(define w1 (deform v1))
213213
(define w2 (deform v2))
214214
(define w3 (deform v3))
215-
(define angle (acos (flv3bend-cos w2 w3 w1)))
215+
(define angle (flacos (flv3bend-cos w2 w3 w1)))
216216
(if (> angle acute-threshold/2)
217217
(list* (edge vtx2 vtx3 (cons #t (blend v2 v3 0.5)))
218218
(edge vtx3 vtx1 (cons #t (blend v3 v1 0.5)))
@@ -235,10 +235,10 @@
235235
(define w31 (fls3apply/pos t v31))
236236
(define angle (if (< (flv3dist w23 w1)
237237
(flv3dist w2 w31))
238-
(max (acos (flv3bend-cos w31 w1 w2))
239-
(acos (flv3bend-cos w2 w23 w31)))
240-
(max (acos (flv3bend-cos w1 w2 w23))
241-
(acos (flv3bend-cos w23 w31 w1)))))
238+
(max (flacos (flv3bend-cos w31 w1 w2))
239+
(flacos (flv3bend-cos w2 w23 w31)))
240+
(max (flacos (flv3bend-cos w1 w2 w23))
241+
(flacos (flv3bend-cos w23 w31 w1)))))
242242
(if (> angle acute-threshold/2)
243243
(cons (edge vtx1 vtx2 (cons #t (blend v1 v2 0.5))) es)
244244
es))

0 commit comments

Comments
 (0)