【C++】 UV 转 RGB 生成风力图

风力图样式是这样的:

 

我用的海流的数据,绘制海流的流线,但我的数据是海流的U分量和V分量,做了UV转RG的转换,B为0, 代码如下:


void UV2RG(float fU, float fV, int &nR, int &nG)
{
	double dPI = 3.1415926;
	//流向
	float direction = (float)((((float)atan2(fU, fV)) * 180 / dPI));
	if (direction < 0)
		direction = 360 + direction;
	
	if (direction >= 0.0f && direction < 45.0f)
	{
		nR = 127 + 127 * (direction / (45 - 0));
		nG = 255;
	}
	else if (direction >= 45.0f && direction < 135.0f)
	{
		nR = 255;
		nG = 255 - 255 * ((direction-45) / (135 - 45));
	}
	else if (direction >= 135.0f && direction < 225.0f)
	{
		nR = 255 - 255 * ((direction - 135) / (225 - 135));
		nG = 0;
	}
	else if (direction >= 225.0f && direction < 315.0f)
	{
		nR = 0;
		nG = 0 + 255 * ((direction - 225) / (315 - 225));
	}
	else if (direction >= 315.0f && direction < 360.0f)
	{
		nR = 127 * ((direction - 315) / (360 - 315));
		nG = 255;
	}
}

最终绘制出图片效果如下:

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值