색상을 음영으로 분해하는 기능. - 페이지 20

 
prostotrader :
약간 틱택토 zabatsat?

멋진 그라디언트와 음영으로)))

 
Sergey Basov :

멋진 그라디언트와 음영으로)))

여기서 웃긴게 이해가 안가네요. 아주 슬프다. 세상은 오랫동안 쓸모없는 정수를 위해 멋진 형태를 만들어 왔지만 여기에서는 여전히 "이것이 왜 필요한가요?"라고 묻습니다. 세상을 따라가는 것이 필요합니다. 그렇지 않으면 세상이 무너질 것입니다.

 
Реter Konow :

여기서 웃긴게 이해가 안가네요. 아주 슬프다. 세상은 오래전부터 쓸모없는 에센스를 위한 멋진 형태를 만들어 왔지만, 여기서 그들은 여전히 " 이것이 왜 필요한가? "라고 묻습니다. 세상을 따라가는 것이 필요합니다. 그렇지 않으면 세상이 무너질 것입니다.

오리는 시장에서 누군가가 그것을 필요로 한다는 것을 증명합니다(GUI, 정확한 그라디언트, 음영 등).

고양이와 남자는 오랫동안 이것을 암시했습니다))

추신. 개인적인 것은 없고 아름다운 인터페이스도 좋아하지만 MT의 추가 기능일 뿐입니다.

 
Реter Konow :

여기서 웃긴게 이해가 안가네요. 아주 슬프다. 세상은 오랫동안 쓸모없는 정수를 위해 멋진 형태를 만들어 왔지만 여기에서는 여전히 "이것이 왜 필요한가요?"라고 묻습니다. 세상을 따라가는 것이 필요합니다. 그렇지 않으면 세상이 무너질 것입니다.

무지개의 모든 색으로 칠해져 있지만 범람이있는 바퀴벌레는 부서지지 않습니까?

 
Sergey Basov :

오리는 시장에서 누군가가 그것을 필요로 한다는 것을 증명합니다(GUI, 정확한 그라디언트, 음영 등).

고양이와 남자는 오랫동안 이것을 암시했습니다))

추신. 개인적인 것은 없고 아름다운 인터페이스도 좋아하지만 MT의 추가 기능일 뿐입니다.

여기 누구야?

 
Реter Konow :

그리고 이 모든 것에 대해 Windows 팔레트의 창에 있는 숫자의 동작을 관찰하여 간단하게 왔습니다.

다른 방법을 사용하고 있습니다. 지식에 기반한 논리만 포함합니다.

그리고 내 생각에 당신은 여전히 우리에게 하나의 알고리즘이 있다는 것을 이해하지 못했습니다. 왜냐하면 단순히 다른 사람이 없습니다. 알고리즘은 3차원 공간(x1,y1,z1)과 (x2,y2,z2)의 두 점을 연결하는 선형 함수입니다.

http://www.cleverstudents.ru/line_and_plane/canonical_equations_of_line_in_space.html

다만, 어떤 이유에서인지, 첫 번째 메시지로 판단하면 작성하는 데 한 달이 걸렸고 오류가 발생하더라도 아무것도 발명할 필요가 없었기 때문입니다. 이것은 3차원 공간(r1,g1,b1)과 (r2,g2,b2)에서 두 점을 연결하는 명백하고 간단한 작업입니다. 이것은 공식 수준이 아니라 학창시절부터 아주 잘 알고 이해했지만, 논리의 수준에서. 첫 번째 구현 에는 약 15분이 걸렸고 코드는 첫 번째(기억이 나지 않지만 아마도 두 번째) 시간에 작동했습니다.

나는 이미 다음과 같이 더 간단하고 다재다능한 기능을 사용하여 알고리즘을 구현한다고 여기 에 썼습니다.

   color clr= clrViolet ;
   uint CLR1[],CLR2[];
   Gradient( clrWhite , clr, CLR1, 128 ); // получаем массив из 128 элементов градиента от белого цвета до цвета clr 
   Gradient(clr, clrBlack , CLR2, 127 ); // получаем массив из 127 элементов градиента от цвета clr до черног цвета  

두 어레이 CLR1 및 CLR2의 공통 어레이가 솔루션입니다.

내 솔루션은 조금 더 복잡했습니다. 색상의 밝기를 계산하고 128 및 127 대신 대체해야 합니다.

그래서 다시 한 번 - 마지막으로 반복합니다.
다음은 그라디언트 작업에 필요한 유일하고 더 다양한 기능입니다.

 union rgb { uint clr; uchar c[ 4 ];};
void Gradient( uint clr1, uint clr2, uint &arr[], uint size)
  {
   if (size== 0 ) return ;
   ArrayResize (arr,size);
   arr[ 0 ]=clr1; 
   rgb c1,c2;
   c1.clr=clr1;
   c2.clr=clr2;
   double R1=c1.c[ 2 ],G1=c1.c[ 1 ],B1=c1.c[ 0 ];
   double R2=c2.c[ 2 ],G2=c2.c[ 1 ],B2=c2.c[ 0 ];
   double deltaR=(R2-R1)/(size- 1 );
   double deltaG=(G2-G1)/(size- 1 );
   double deltaB=(B2-B1)/(size- 1 );
   R1 += 0.4999 ;
   G1 += 0.4999 ;
   B1 += 0.4999 ;
   for ( uint i= 1 ;i<size;i++)
     {
      R1+=deltaR; c1.c[ 2 ]= uchar (R1);
      G1+=deltaG; c1.c[ 1 ]= uchar (G1);
      B1+=deltaB; c1.c[ 0 ]= uchar (B1);
      arr[i]=c1.clr;
     }
  }

왜냐하면 여기에 주어진 모든 알고리즘을 두 줄로 생성합니다. 그녀가 가장 빠르기 때문입니다. 루프에는 단 하나의 "+" 연산만 있으며 곱셈도 없습니다. 또한, 이 기능은 두 가지 색상의 혼합을 제공할 뿐만 아니라 하나의 음영을 계산합니다.

 
Nikolai Semko :

다른 방법을 사용하고 있습니다. 지식에 기반한 논리만 포함합니다.

그리고 내 생각에 당신은 여전히 우리에게 하나의 알고리즘이 있다는 것을 이해하지 못했습니다. 왜냐하면 단순히 다른 사람이 없습니다. 알고리즘은 3차원 공간(x1,y1,z1)과 (x2,y2,z2)의 두 점을 연결하는 선형 함수입니다.

http://www.cleverstudents.ru/line_and_plane/canonical_equations_of_line_in_space.html

다만, 어떤 이유에서인지, 첫 번째 메시지로 판단하면 작성하는 데 한 달이 걸렸고 오류가 발생하더라도 아무것도 발명할 필요가 없었기 때문입니다. 이것은 3차원 공간(r1,g1,b1)과 (r2,g2,b2)에서 두 점을 연결하는 명백하고 간단한 작업입니다. 이것은 공식 수준이 아니라 학창시절부터 아주 잘 알고 이해했지만, 논리의 수준에서. 첫 번째 구현 에는 약 15분이 걸렸고 코드는 첫 번째(기억이 나지 않지만 아마도 두 번째) 시간에 작동했습니다.

나는 이미 다음과 같이 더 간단하고 다재다능한 기능을 사용하여 알고리즘을 구현한다고 여기 에 썼습니다.

두 어레이 CLR1 및 CLR2의 공통 어레이가 솔루션입니다.

내 솔루션은 조금 더 복잡했습니다. 색상의 밝기를 계산하고 128 및 127 대신 대체해야 합니다.

그래서 다시 한 번 - 마지막으로 반복합니다.
다음은 그라디언트 작업에 필요한 유일하고 더 다양한 기능입니다.

왜냐하면 여기에 주어진 모든 알고리즘을 두 줄로 생성합니다. 그녀가 가장 빠르기 때문입니다. 루프에는 단 하나의 "+" 연산만 있으며 곱셈도 없습니다. 또한, 이 기능은 두 가지 색상의 혼합을 제공할 뿐만 아니라 하나의 음영을 계산합니다.

우리는 다른 알고리즘과 다른 접근 방식을 가지고 있습니다. 3차원 공간에서 두 점을 연결하는 선형 함수가 없습니다. 프리즘을 형성하는 6개의 세그먼트가 있는 2차원 그래프가 있습니다.

귀하의 유일한 기능은 올바른 색상 범위를 제공하지 않습니다. 보여주고 증명했습니다.

 
Artyom Trishkin :

무지개의 모든 색으로 칠해져 있지만 범람이있는 바퀴벌레는 부서지지 않습니까?

당신은 이것에 대해 걱정할 필요가 없습니다.

 
Реter Konow :

우리는 다른 알고리즘과 다른 접근 방식을 가지고 있습니다. 3차원 공간에서 두 점을 연결하는 선형 함수가 없습니다. 프리즘을 형성하는 6개의 세그먼트가 있는 2차원 그래프가 있습니다.

귀하의 유일한 기능은 올바른 색상 범위를 제공하지 않습니다. 보여주고 증명했습니다.

예, 당신은 방금 정원을 심었지만 당신이 당신의 창조물을 요청하면 내가 쓴 것을 얻을 수 있습니다. 따라서 예술 작품은 느리고 작동합니다. 그는 당신이 접선을 통해 숫자 2를 계산하도록 쌓였습니다.
이전 메시지에서 귀하의 알고리즘과 이것을 사용하여 유리의 코드를 기반으로 확인하십시오. 그리고 훨씬 더 빠르고 훨씬 더 짧을 뿐이며 동일하다는 것을 알게 될 것입니다.

 
Nikolai Semko :

예, 당신은 방금 정원을 심었지만 당신이 당신의 창조물을 요청하면 내가 쓴 것을 얻을 수 있습니다. 따라서 예술 작품은 느리고 작동합니다. 접선을 통해 숫자 2를 계산하도록 누적됩니다.
이전 메시지에서 귀하의 알고리즘과 이것을 사용하여 유리의 코드를 기반으로 확인하십시오. 그리고 훨씬 더 빠르고 훨씬 더 짧을 뿐이며 동일하다는 것을 알게 될 것입니다.

내 알고리즘은 잘 작동합니다. 빠름(15-20마이크로초). 당신의 것이 제대로 작동하지 않습니다. 당신의 예에 따라 내 알고리즘을 다시 만들 것을 제안하고 있습니까?))

알고리즘을 더 빠르게 만들 수 있도록 도와주셔서 다시 작성할 필요가 없었습니다. 감사합니다. 나머지는 제 알고리즘이 외형적인 보정 외에는 필요하지 않습니다.

그러나 알고리즘에는 명백한 문제가 있습니다.