HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2021
1124
prprArtlet2dのマトリクスを使った色相変更について2解決


prpr

リンク

2021/11/24(Wed) 16:44:52|NO.94482

お世話になります。
検索等いろいろ試行錯誤してわからなかったので質問します。
現在Artlet2dを使って、色相を変更するプログラムを書いています。


#include "a2d.hsp" #const picx 400 #const picy 255 #const hue 16 //16:オレンジ、48:黄緑、80:青緑、・・・ screen 0, picx, picy repeat picy hsvcolor 0, 0, cnt line 0, cnt, picx, cnt loop wait 100 alCreateImage 0, picx, picy alCopyScreenToImage 0, 0 hsvcolor hue, 255, 255 cmatrix(MAT_R) = 1.0, 0.0, 0.0, 0.0, double(ginfo_r)/255 cmatrix(MAT_G) = 0.0, 1.0, 0.0, 0.0, double(ginfo_g)/255 cmatrix(MAT_B) = 0.0, 0.0, 1.0, 0.0, double(ginfo_b)/255 cmatrix(MAT_A) = 0.0, 0.0, 0.0, 1.0, 0.0 alCopyModeColorMatrix cmatrix cls alCopyImageToScreen 0, 0 redraw

このhueのところをいじって色相変更していきます。

赤青緑とその中間色の黄色水色などはいい感じに作れてると思いますが、
オレンジ、黄緑などがうまくできていません。
hueの値が0から191まで完璧に動かすのが理想なのですが・・・

これを解決できるマトリクスがわからず困っています。
みなさんどうか知恵をお貸しください。
よろしくお願いいたします。



この記事に返信する


沢渡

リンク

2021/11/24(Wed) 17:07:57|NO.94484

黒から目標色へのグラデーションにする場合は、cmatrixを設定する部分の上3行分を

cmatrix(MAT_R) = double(ginfo_r)/255, 0.0, 0.0, 0.0, 0.0 cmatrix(MAT_G) = 0.0, double(ginfo_g)/255, 0.0, 0.0, 0.0 cmatrix(MAT_B) = 0.0, 0.0, double(ginfo_b)/255, 0.0, 0.0
とすれば良いですし、目標色から白へのグラデーションにする場合は、

r0=double(ginfo_r)/255 : g0=double(ginfo_g)/255 : b0=double(ginfo_b)/255 cmatrix(MAT_R) = 1.0-r0, 0.0, 0.0, 0.0, r0 cmatrix(MAT_G) = 0.0, 1.0-g0, 0.0, 0.0, g0 cmatrix(MAT_B) = 0.0, 0.0, 1.0-b0, 0.0, b0
とすれば良いのではないでしょうか。



prpr

リンク

2021/11/24(Wed) 18:18:19|NO.94489

沢渡さん

ご返答ありがとうございます!
後者のマトリクスで無事解決しました!
ありがとうございました!


#include "a2d.hsp" #const picx 400 #const picy 255 ;#const hue 16 //16:オレンジ、48:黄緑、80:青緑、・・・ screen 0, picx, picy repeat picy hsvcolor 0, 0, cnt line 0, cnt, picx, cnt loop wait 50 alCreateImage 0, picx, picy alCopyScreenToImage 0, 0 repeat 192 wait 1 hsvcolor cnt, 255, 255 r0=double(ginfo_r)/255 : g0=double(ginfo_g)/255 : b0=double(ginfo_b)/255 cmatrix(MAT_R) = 1.0-r0, 0.0, 0.0, 0.0, r0 cmatrix(MAT_G) = 0.0, 1.0-g0, 0.0, 0.0, g0 cmatrix(MAT_B) = 0.0, 0.0, 1.0-b0, 0.0, b0 cmatrix(MAT_A) = 0.0, 0.0, 0.0, 1.0, 0.0 alCopyModeColorMatrix cmatrix alCopyImageToScreen 0, 0 redraw loop



ONION software Copyright 1997-2023(c) All rights reserved.