시작 (x1, y1)과 끝 (x2, y2)과 RGBA에 저장된 색상이 있습니다.
이 두 점 사이에 그라데이션으로 채워진 선을 그리고 선을 따라 각 점에 대해 증가하는 while 루프에서 현재 (x, y) 위치를 가져올 수 있습니다.
시작 및 끝 색상은 point1.color 및 point2.color로 제공됩니다.
그런 다음 DrawPoint (Vector (x, y))를 사용하여 점을 그리고 SetColor (RGBA)로 색상을 설정 한 후 루프를 다시 통과합니다.
질문에서 언급 한 기존 코드가이 선에 대해 그리는 개별 포인트의 수는 다음과 같아야합니다.
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에서 시작하여 도달합니다. l
(x2, y2)에서 선형 보간 된 R은 다음과 같습니다.
R1+i/l*(R2-R1)
그래서 i=0
이것이 R1이고 i=l
이것이 R2 일 때 . 이 선형 보간을 계산해야합니다. 부동 소수점 수학을 사용하여; 또는 정수 곱셈을 먼저 수행 한 다음 정수 나눗셈을 수행합니다 (정수 정밀도가 곱셈 중 오버플로를 피하기에 충분하다고 가정).
비누 거품, 린스와 동일한 과정을 반복 G
, B
그리고 A
구성 요소.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다