softklin Posted April 15, 2009 at 07:24 PM Report #256966 Posted April 15, 2009 at 07:24 PM Pessoal, é o seguinte: estou a fazer um trabalho, e uma das etapas desse trabalho é dadas 2 cores no formato RGB, criar uma função que as misture. Ou seja, se tivermos, por exemplo, uma cor azul e outra cor amarela, devemos obter uma cor verde. O problema é que não percebo nada cores 🙂 E como tal não sei qual o algoritmo necessário para este processo. Já tentei procurar no motor de pesquisa, a única conclusão a que cheguei é que não era possível em RGB, e tinha de se converter para um formato esquisito, algo como l*a*b, ou similiar... Alguém conhece um algoritmo que faça o que pretendo? Cumps. Nick antigo: softclean | Tens um projeto? | Wiki P@P Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.
elcsat Posted April 15, 2009 at 08:44 PM Report #256988 Posted April 15, 2009 at 08:44 PM por acaso tenho um pdf que explica isso muito bem a formaçao de todas as cores... eu baixeio para o rapishare para poderes sacar, ai vai o link http://rapidshare.com/files/221780671/3425_Editores_para_Web.rar.html espero que te seja util
softklin Posted April 15, 2009 at 09:05 PM Author Report #256991 Posted April 15, 2009 at 09:05 PM elcsat, obrigado pelo PDF, tem lá muitas coisas interessantes sobre as cores. No entanto, não consegui encontrar referências a misturas de cores em RGB. Porém, deu para ter a noção que se cada componente g, r e b, referem-se à, luminosidade de cada cor respectiva, vermelho, verde e azul, estarei certo? Nick antigo: softclean | Tens um projeto? | Wiki P@P Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.
bruno1234 Posted April 15, 2009 at 11:11 PM Report #257012 Posted April 15, 2009 at 11:11 PM Podes usar o formato hexadecimal para misturar as cores. #RRGGBB se tiver tudo a zero é preto -> #000000 tudo no máximo é branco -> #FFFFFF Vermelho -> #FF0000 Verde -> #00FF00 Azul -> #0000FF Agora podes ir misturando as cores. usando valores entre 0 e F, vai experimentando Matraquilhos para Android. Gratuito na Play Store. https://play.google.com/store/apps/details?id=pt.bca.matraquilhos
Guest id194 Posted April 16, 2009 at 12:18 AM Report #257018 Posted April 16, 2009 at 12:18 AM Não me parece que vá ser muito fácil... Encontrei isto: http://en.wikipedia.org/wiki/Lab_color_space#RGB_and_CMYK_conversions
softklin Posted April 16, 2009 at 08:36 AM Author Report #257040 Posted April 16, 2009 at 08:36 AM Não me parece que vá ser muito fácil... Encontrei isto: http://en.wikipedia.org/wiki/Lab_color_space#RGB_and_CMYK_conversions Pois, não me parece fácil. E pensando bem, acho que já é demasiado complexo para o que me pedem para fazer. Podes usar o formato hexadecimal para misturar as cores. #RRGGBB se tiver tudo a zero é preto -> #000000 tudo no máximo é branco -> #FFFFFF Vermelho -> #FF0000 Verde -> #00FF00 Azul -> #0000FF Agora podes ir misturando as cores. usando valores entre 0 e F, vai experimentando Estou a trabalhar com inteiros, mas vai dar ao mesmo. A minha ideia inicial de juntar cores era somá-las, e garantir qe não ultrapasse os 255. Funciona para algumas cores, mas por exemplo, se misturarmos tinta branca com tinta preta, obtemos um tom cinza. Com a minha ideia ficaria rgb(0, 0, 0) (preto) + rgb(255, 255, 255) (branco) que daria branco... Nick antigo: softclean | Tens um projeto? | Wiki P@P Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.
elcsat Posted April 16, 2009 at 12:03 PM Report #257068 Posted April 16, 2009 at 12:03 PM soma e depois divide por 2. nunca passa os 255, ver se da assim
joseerodrigues Posted April 17, 2009 at 09:39 AM Report #257226 Posted April 17, 2009 at 09:39 AM Pois, não me parece fácil. E pensando bem, acho que já é demasiado complexo para o que me pedem para fazer. Estou a trabalhar com inteiros, mas vai dar ao mesmo. A minha ideia inicial de juntar cores era somá-las, e garantir qe não ultrapasse os 255. Funciona para algumas cores, mas por exemplo, se misturarmos tinta branca com tinta preta, obtemos um tom cinza. Com a minha ideia ficaria rgb(0, 0, 0) (preto) + rgb(255, 255, 255) (branco) que daria branco... Boas, Fiquei agora a mesmo a conhecer o forum 😉 1º Post... Softclean, já experimentaste operações logicas em cada canal de côr? ex: misturar vermelho com azul 0xFF0000 OR 0x0000FF = 0xFF00FF -> Roxo Podes aplicar percentagens também, o que funcionaria para o caso da tinta branca "+" tinta preta ex: cinzento = cor preta + X% de cor branca ( 100% = 255) 50% cinzento = 0x000000 OR 0x808080 Talvez resolvesse o problema. Cumps.
softklin Posted April 18, 2009 at 10:07 AM Author Report #257437 Posted April 18, 2009 at 10:07 AM Joseerodrigues, bem-vindo! 😄 Boa ideia essa da operação lógica sobre hexadecimais. Só não a vou usar porque estou a fazer um trabalho em que me pedem para gerir inteiros. Podia converter para o formato hexadecimal, é verdade, mas estou atrasado no trabalho, e não quero perder muito tempo com esta função, que deve ser das coisas mais básicas. 😛 Vou usar a ideia do elcsat (acho que é semelhante, porém trabalha logo com inteiros). Obrigado a todos os que me ajudaram! Nick antigo: softclean | Tens um projeto? | Wiki P@P Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.
pedrosorio Posted April 18, 2009 at 10:36 AM Report #257442 Posted April 18, 2009 at 10:36 AM ex: misturar vermelho com azul 0xFF0000 OR 0x0000FF = 0xFF00FF -> Roxo Podes aplicar percentagens também, o que funcionaria para o caso da tinta branca "+" tinta preta ex: cinzento = cor preta + X% de cor branca ( 100% = 255) 50% cinzento = 0x000000 OR 0x808080 A grande questão aqui é se estamos a falar de tinta ou de luz, porque, como já deves ter percebido, os comportamentos são completamente diferentes. A ideia do elcsat não é equivalente à que estava a ser apresentada porque fazer um OR binário vai, considerar as cores bit-a-bit quando os bits individuais não têm significado (a única coisa que tem significado é o byte que representa cada uma das cores). Para além disso é fácil ver que as ideias são diferentes porque: modelo do elcsat: (Vermelho intenso 0xFF0000 + Azul intenso 0x0000FF) / 2 = 7F007F (roxo com intensidade "média") Enquanto que no do joseerodrigues tens roxo com intensidade "máxima" que é o valor lógico neste caso. Acho que se te limitares a somar as cores e a pôr um limite em 255 é capaz de também n ficar mto mal... Não respondo a dúvidas por mensagem.
softklin Posted April 18, 2009 at 10:51 AM Author Report #257443 Posted April 18, 2009 at 10:51 AM Eu dei o exemplo das tintas porque como disse em cima, não percebo nada de cores, e apenas usei um exemplo do senso comum, a tinta, porque pensei que funcionava da mesma forma. Mas também já tinha lido noutro lado que era a intensidade das cores, e com o teu post, confirmei isso. Eu não estou a ser muito rigoroso, porque como disse também em cima, é apenas uma função de uma classe, entre outras que tenho de desenvolver. Se a cor é mais escura ou mais clara, penso que não seja relevante no meu caso, mas fizeram bem em colocar essas distinções, pode haver pessoal que queira coisas mais especializadas e assim tem as diferentes hipóteses. Cumps 😄 Nick antigo: softclean | Tens um projeto? | Wiki P@P Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.
elcsat Posted April 20, 2009 at 10:04 PM Report #257855 Posted April 20, 2009 at 10:04 PM eu nao entendo nada de cores, eu dei aquele exemplo por da..mas nao sei como se misturam nem nada...nem tenho interesse em saber isso 😁
softklin Posted April 21, 2009 at 02:53 PM Author Report #257992 Posted April 21, 2009 at 02:53 PM facto é que ajudou 😉 Nick antigo: softclean | Tens um projeto? | Wiki P@P Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.
elcsat Posted April 21, 2009 at 02:55 PM Report #257994 Posted April 21, 2009 at 02:55 PM ainda bem 😁😉
Betovsky Posted April 21, 2009 at 03:25 PM Report #258002 Posted April 21, 2009 at 03:25 PM Joseerodrigues, bem-vindo! 😉 Boa ideia essa da operação lógica sobre hexadecimais. Só não a vou usar porque estou a fazer um trabalho em que me pedem para gerir inteiros. Podia converter para o formato hexadecimal, é verdade, mas estou atrasado no trabalho, e não quero perder muito tempo com esta função, que deve ser das coisas mais básicas. 🙂 Vou usar a ideia do elcsat (acho que é semelhante, porém trabalha logo com inteiros). Obrigado a todos os que me ajudaram! Um inteiro é um hexadecimal. Quer dizer, hexadecimal é uma representação de um inteiro. Veres o número em decimal, hexadecimal, octal, etc... são várias representações do mesmo número.Dizeres que terias de converter para hexadecimal não tem lógica nenhuma. Podias dizer que convertias o inteiro para uma string em que contia a representação hexadecimal do inteiro. Mas aí já estarias a trabalhar com strings e claro operações lógicas não funcionam nelas. Portanto as operações lógica indicadas seriam para serem usadas sobre os inteiros. Espero ter-me feito entender... "Give a man a fish and he will eat for a day; Teach a man to fish and he will eat for a lifetime. The moral? READ THE MANUAL !" Sign on a computer system consultant's desk
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now