2012-05-23 2 views
2

절차 적 이미지 생성을위한 라이브러리 (Clisk)를 사용하여 사용자가 자신의 수학 함수를 정의하여 이미지를 생성 할 수 있도록했습니다.그래픽 코드에서 0으로 나누기 처리.

일부 픽셀의 경우 0으로 나눌 수있는 함수를 정의 할 수 있습니다. (의사)

red = 1.0/(xposition - 0.5) 

이는 때마다 xposition = 0.5 이상적으로 이미지 생성이 충돌하지 않으

(이미지의 중간) ...하지만 같은에서 0으로 나누기 초래 나는 나중에 문제를 일으킬 0으로 나누기를 무시하는 거친 해킹을 만들고 싶지 않다.

이러한 사례를 처리하기위한 훌륭하고 견고하고 체계적인 접근 방법은 무엇입니까?

+4

아마도 조금 더 설명 할 수 있습니다. 사용자가 자신의 기능을 괴롭 히면 왜 특별히 신경을 씁니까? 왜 코드가 예외를 잡아서 UserDefinedCodeBuggeredUpException을 다시 던지게하지 않습니까? –

+0

비슷한 주제에 대한 새로운 질문이 있습니다. [결과가 무엇이든 가장 빠른 정수 나누기를 0으로 지우는 것은 무엇입니까?] (http://stackoverflow.com/questions/16777456) – hippietrail

답변

8

이상적으로 돈을 허용하는 경우, 당신은 아마 거기에 절대 값을 삭제해야합니다 이미지 생성이 중단되기를 원하지만 ... 동시에 문제를 야기 할 0으로 나누는 무시 무시한 해킹을 만들고 싶지는 않습니다.

사용자가 제공 한 코드가 예외를 던질 수 있다면, 당신은 할 수 없습니다,

분명히 (나는 ... 당신은 몇 가지 사용자가 제공 한 코드의 예를 될 수있는 조각을 의미 있으리라 믿고있어) 일어나는 것을 그만 두십시오. (그리고 부서 전에 확인하는 조언은 분명히 당신에게 무관합니다 ...)

그래서 과 다를 수 있습니다. 빈 이미지를 생성 하시겠습니까? 사용자의 기능을 무시 하시겠습니까? 당신은 쓰레기를 생산할 것입니다 ... 그리고 그것은 사용자가 필요로하는 것이 아닙니다.

당신은 분명히 그/그녀의 자바 코드를 수정할 수 없습니다. (코드 조각이 일부 사용자 정의 언어로 작성된 코드 인 경우 사용자가 제공 한 코드 에서 수행해야 함을 라이브러리에서 알 수 없습니다.)

아니요 답변은 코드에서 오류가 발생했다는 것을 사용자에게 명확하게 알리는 사용자 예외 코드에서 예기치 않은 (확인되지 ​​않은) 예외를 래핑하는 것입니다. . 예외 나 "충돌"을 처리할지 여부는 라이브러리 코드를 호출하는 응용 프로그램 코드에 달려 있습니다.


당신이 그 기능을 작성하는 사용자를위한 "좋은, 강력하고 체계적인 접근"을 요구하는 경우, 당신이 잘못 짚었 생각합니다. 그리고 실제로 관심사가 아닙니다 ...

0

정말 그래픽 프로그래머가 아니에요,하지만 당신은 분명히

private static final double MIN_X = 0.0000001 

red = 1.0/Math.max(xpos - 0.5, MIN_X); 

할 수있는 당신이 네거티브

0

매개 변수를 입력하면에 0으로 나누기를 수행하도록 요청할 수 있습니다. 그것은 결국 자신의 코드입니다 - 그들은 자신의 경우에 가장 적합한 것이 무엇인지 알아야합니다.

그런 다음 질문은 해당 매개 변수의 적절한 기본값이 무엇입니까? 나는 "return 0이라고 말하고 싶습니다.0 " 또는 "예외가 발생했습니다 "이 응용 프로그램에 적합합니다 ..

관련 문제