2016-11-18 9 views
1

私はラケットと博士ラケットを使用して3Dグラフをプロットしようとしています。ラケットに3Dグラフを描く

私は図書館plotを使用していると私は同じように、多くのグラフに成功している:私は「Y = X」2Dでなく、中のラインの古典的な例をグラフ化しようとすると、しかし

#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)) 

3D:

(plot3d (surface3d (lambda (x y) (+ x (- y))) 
     10 10 10 10)) 

プログラムは無限のスクリプトになります。

多分私の数学は間違っています。

2Dの線y = xは、f(x、y)= x - y(3Dの場合)ですか?

私は3Dでy = xを見たいと思っています。これをどうすれば解決できますか?ここで

+3

プログラムはうまく動作しますが、プロットの境界はすべて「10」なので、レンダリングするものはありません。私がそれらを '0 10 0 10'に変更すると、私は平面' z = x - y'を見ます。 –

答えて

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)