2011-12-09 6 views
-1

사이의 선에있는 모든 점을 찾는 방법입니다. 여기에서 기울기를 찾은 다음 선을 긋고 x를 1 씩 증가시키고 y를 찾습니다.말은 {X = 569, Y = 71} {X = 735, Y = 91}

그러나 생성 된 포인트가 올바르지 않은 것처럼 보입니다. 선의 등식에 대해

(y-y1) = (y2-y1)/(x2-x1) (x-x1)을 사용하고 있습니다. 내가 놓친 게 있니?

+3

'x'와 'y'를 번갈아 증가시켜야합니다. 언제 증가 시킬지 결정하는 방법은 http://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm을 참조하십시오. – Gabe

+0

선을 플로팅하는 "수학적"방법이 매우 비효율적이라는 문제 외에 무엇이 문제입니까? 너는 "들쭉날쭉 한"것을 얻는가? 아니면 완전히 벗어난 좌표입니까? 다음은 DDA 알고리즘에 익숙하지 않은 사용자에게 흥미로운 링크입니다. http://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm – paulsm4

+2

이것은 수학 문제 여야합니다. 그러나 어쨌든 먼저 경사면 (경사가 얼마나 가파른 지)을 구해야하고 그 후에 올바른 점을 얻을 수 있도록 값을 변경하기 시작합니다. 슬로프가 항상 변경되지는 않는다는 것을 나타내는 알림 – jclozano

답변

0

정수 나누기를 사용하여 기울기를 계산하는 것으로 판단됩니다.

Gabe가 Bresenham 선 알고리즘에 의견으로 제시 한 링크는 빠르고 효율적인 정수 솔루션을 보여줍니다.

부동 소수점을 사용하는 것이 좋으면 부동 소수점 유형으로 기울기를 계산하십시오. 선이 가파른 경우 x 대신 y를 늘리고 싶을 것입니다. 어느 쪽이든, 한 좌표를 기울기와 다른 좌표를 사용하여 부동 소수점 수로 계산하십시오. 그런 다음 가장 가까운 정수로 (올바르게) 반올림합니다.

+0

정수는 'round (a/b) = (2a + b)/2b') –

+0

으로 나눌 수 있습니다. 우리가 같은 링크를 동시에 인용 한 것은 우연의 일치입니다. 핵심 문제는 jclozano의 의견입니다. 정수 공간에서 SLOPE는 항상 1의 변경을 의미하지는 않습니다. – paulsm4

+0

후회합니다. 우리는이 아이디어를 폐기했다. 그것을하는 비효율적 인 방법이었다. – GutterStink