2014-11-30 2 views
1

라켓의 플롯 라이브러리로 3D 플롯을 작성하려고합니다. 나는 특정 지점에서만 surface3d가 내 기능을 평가하도록합니까? 내 말은, 정수에서만 정의 된 함수를 가지고 있지만 surface3d는 샘플 매개 변수에 따라 겉보기에 그들 사이의 어딘가에서 그것을 계산하려고합니다. 두 개의 축에 대해이 매개 변수를 다르게 설정할 수있어서 정의 된 위치에서만 함수를 평가할 수 있습니까? 아니면 다른 함수를 사용하여 더 잘 그려야합니까?Racket : 두 축에 대해 surface3d 단계를 다르게 설정할 수 있습니까?

답변

0

surface3d가 정수가 아닌 점에서 함수를 평가하는 문제인 경우 근처의 정수 점 값을 사용하여 사각형 내부의 점 값을 계산하는 함수를 정의 할 수 있습니다.

당신의 함수 f를 호출하는 경우, 다음 첫 번째 시도입니다 : 당신에게 "계단"을 줄 것이다

(define (g x y) 
    (f (floor x) (floor y))) 

.

부드럽게 appoach하고 싶다면 bilinear 보간을 볼 수 있습니다. Bilinear Interpolation - Wikipedia

+0

실제로 보간법은 내가 플로터에서 기대하는 것입니다. 그리고 동일한 점에서 함수를 다시 계산하면 큰 성능 단점이있는 것으로 나타납니다. –

+0

새로운 아이디어 : xmax-xmin = ymax-ymin이고 정수인지 확인하십시오. 그런 다음 # : samples를 xmax-xmin으로 설정하십시오. 운이 좋으면 정수 포인트로 샘플링하고, 그렇지 않으면 플로어 트릭을 사용할 수 있습니다. – soegaard

+0

문제는 함수가 사각형이 아니라 사각형에 정의된다는 것입니다. xmax-xmin이 ymax-ymin과 같으면, 내가 말한대로 샘플을 설정하고 원하는 것을 얻었습니다. (실제로 2d 플롯에서 작동합니다) –

관련 문제