我正在尝试使用Racket和Dr. Racket绘制3D图形。
我正在使用图书馆plot,我在许多图表中取得了成功,例如:
#lang racket
(require plot)
(plot3d (surface3d (lambda (x y) (* x y (+ 1 (- x) (- y)))) (- 2) 2 (- 2) 2))
(plot3d (surface3d (lambda (x y) (* (sin y) x)) (- 1) 1 (- 5) 5))
(plot3d (surface3d (lambda (x y) (+ 4 (expt x 3) (expt y 3) (* -3 x y))) (- 2) 2 (- 2) 2))
但是,当我尝试在2D" y = x"中绘制线条的经典示例时但在3D中:
(plot3d (surface3d (lambda (x y) (+ x (- y)))
10 10 10 10))
程序变成了无限的脚本。
也许我的数学错了。
2D中的线y = x在3D中是f(x,y)= x - y吗?
我想在3D中看到y = x,这就是我想要的。我该如何解决这个问题?
答案 0 :(得分:0)
以下是如何绘制线条的示例:
#lang racket
(require plot)
(define (line-through p q)
(match* (p q)
[((list px py pz) (list qx qy qz))
(λ (t)
(vector (+ px (* t (- qx px)))
(+ py (* t (- qy py)))
(+ pz (* t (- qz pz)))))]))
(plot3d (parametric3d (line-through '(1 1 1) '(1 2 3))
-1e6 1e6))
如果要将解集设置为等式y=z
(这是一个平面)
你可以这样做:
(plot3d (list (surface3d (λ (x y) (- x y))))
#:x-min -10 #:x-max 10
#:y-min -10 #:y-max 10
#:z-min -10 #:z-max 10)