Issue
빨강 > 초록 > 파랑 순서로 자연스럽게 변할 수있도록 구조체 배열 변수 R,G,B에 값을 저장하고자 합니다!
Solve
길이 200인 구조체 배열에 색상 스펙트럼 값을 저장할 것입니다.
우선, 구조체 배열을 선언하고, 빨강 > 연두 > 초록 > 청록색 > 파랑 순서로 변화를 줍니다.
RGB변화는 다음과 같습니다.
빨강에서 연두로 가기위한 RGB (255, 0➡️255, 0)
연두에서 초록으로 가기위한 RGB (255 ➡️ 0,255,0)
초록에서 청록색으로가기위한 RGB (0, 255, 0 ➡️ 255)
청록색에서 파랑으로 가기위한 RGB (0, 255 ➡️ 0, 255)
RGB값에 따른 실제 색상은 다음 링크에서 확인하시면됩니다. https://www.w3schools.com/colors/colors_rgb.asp
#define ARRAY_LENGTH 200
// 구조체 정의
typedef struct {
int R;
int G;
int B;
} Color;
Color colors[ARRAY_LENGTH];
int idx = 199;
//빨강 > 왕 연두
for (int i = 0; i< 50; i ++) {
colors[idx].R = 255;
colors[idx].G = (255/50) * i;
colors[idx].B = 0;
idx--;
}
//연두 > 왕 초록
for (int i = 49; i >= 0; i--) {
colors[zzk].R = (255/50) * i;
colors[zzk].G = 255;
colors[zzk].B = 0;
zzk--;
}
//왕 초록 > cyan
for (int i = 0; i< 50; i ++) {
colors[idx].R = 0;
colors[idx].G = 255;
colors[idx].B = (255/50) * i;
idx--;
}
//cyan > 왕 파랑
for (int i = 49; i >= 0; i --) {
colors[idx].R = 0;
colors[idx].G = (255/50) * i;
colors[idx].B = 255;
idx--;
}
이후, 양옆을 빨강, 파랑으로 고정하고 N개의 컬러스펙트럼을 만들어 보겠습니다.
//색상을 저장할 리스트.
Color mylist[N]
//파란색으로 시작
if (N > 0) {
mylist[0].R=0;
mylist[0].G=0;
mylist[0].B=255;
}
double color_divde = 198.0/(N-2); //양옆은 제외 (double로 하는 것이 관건!)
for (int i = 1; i <= N-2; i++) {
int Color_no= int(color_divde*i);
mylist[i].R=Color[Color_no].R;
mylist[i].G=Color[Color_no].B;
mylist[i].B=Color[Color_no].B;
}
//빨간색으로 끝
if (N > 1) {
mylist[i].R=Color[199].R;
mylist[i].G=Color[199].G;
mylist[i].B=Color[199].B;
}
이렇게 해서 최종적으로 N개의 색상 구조체 리스트에 파랑에서 빨강으로 변화하는 값을 넣어봤습니다.
'◼️C' 카테고리의 다른 글
[C] fgets, fscanf 차이 (0) | 2023.12.27 |
---|---|
C언어 소수점의 자릿수 구하기 (0) | 2023.03.06 |
C언어 2차원 배열 동적 할당 (0) | 2020.01.21 |