기존의 코드가 (당신이 당신의 질문에서 언급 한)이 줄을 그립니다 개별 지점의 수는 있어야합니다 :
라인은 주로 수직 방향의 경우입니다
l=max(abs(x2-x1), abs(y2-y1))+1
가있을 수해야 각 행에 그려지는 점. 그것의 대부분이 수평 적으로 지향되면 모든 컬럼에 포인트가 있어야합니다. 따라서 우리는 그려진 개별 점의 총 수인 l
을 단순히 시작 및 끝 x/y 좌표 간의 최대 차이로 유도 할 수 있습니다. 이것이 기존 코드가 수행해야하는 작업입니다.
그래서, 당신은 l
점을 그리게 될 것입니다. 이것은 이제 각 개별 r
, g
, b
및 a
구성 요소 사이의 간단한 선형 보간이됩니다. "R1"이 (x1, y1)의 R 구성 요소이고 "R2"가 (x2, y2)의 R 구성 요소 인 경우 : i
번째 점을 그릴 때 i
이 (x1, y1) 인 경우 0으로 시작하여 및 (X2, Y2)에 도달 l
상기 직선 보간 R은 단순히 :
이 R1 인
i=0
그래서
R1+i/l*(R2-R1)
, 언제 i=l
이 R2이다. 이 선형 보간을 계산해야합니다 : 부동 소수점 연산 사용; 또는 먼저 정수 곱하기를 수행 한 다음 정수 나누기 (정수 정밀도가 곱셈 중에 오버플로를 방지하기에 충분하다고 가정)을 수행합니다.
G
, B
및 A
구성 요소에 대해 동일한 절차를 반복하고 헹구십시오.
선형 보간이 어떻게 작동하는지 알고 있습니까? – usr2564301
이미 시도해 보셨습니까? 또한 어떤 드로잉 라이브러리를 사용합니까? 표준 C++이 아닙니다. –
선형 보간법이 어떻게 작동하는지 대략적인 아이디어가 있지만 여전히 학습 중입니다. 도서관은 나에게 제공되는 도서관이다. 나는 성공으로 아무 것도 시도하지 않았지만 다시 C++을 처음 접했습니다. – GilfoyMayhew