首页 > 其他分享 >【Canvas技法】辐射式多道光影的实现

【Canvas技法】辐射式多道光影的实现

时间:2024-09-22 14:22:20浏览次数:14  
标签:Canvas const ctx 辐射式 180 var alpha save 多道

【用余弦函数实现辐射四道光】

成图:

【Canvas技法】辐射式多道光影的实现_余弦

代码:

const R=180;// 基准尺寸
        
        // 十字纹
        ctx.save();
        r=R;
        var N=3600;
        for(var i=0;i<N;i++){
            var theta=Math.PI*2/N*i;
            var a=createPt(r*Math.cos(theta),r*Math.sin(theta));

            // 用余弦函数实现周期变换,将θ角乘2以缩短周期,使用绝对值以转负为正,0.3为可调常数项
            var alpha=Math.abs(Math.cos(theta*2))*0.3;
            ctx.strokeStyle="rgba(188,187,189,"+alpha+")";// 控制直线的半透明度以调节明暗
            ctx.beginPath();
            ctx.moveTo(0,0);
            ctx.lineTo(a.x,a.y);
            ctx.stroke();
        }

 

【用余弦函数实现辐射六道光】

成图:

【Canvas技法】辐射式多道光影的实现_canvas_02

代码:

const R=180;// 基准尺寸
        
        // 六芒纹
        ctx.save();
        r=R;
        var N=3600;
        for(var i=0;i<N;i++){
            var theta=Math.PI*2/N*i;
            var a=createPt(r*Math.cos(theta),r*Math.sin(theta));

            // 用余弦函数实现周期变换,将θ角乘3以缩短周期,使用绝对值以转负为正,0.3为可调常数项
            var alpha=Math.abs(Math.cos((theta-Math.PI/6)*3))*0.3;
            ctx.strokeStyle="rgba(188,187,189,"+alpha+")";// 控制直线的半透明度以调节明暗
            ctx.beginPath();
            ctx.moveTo(0,0);
            ctx.lineTo(a.x,a.y);
            ctx.stroke();
        }

 

【用锯齿函数实现辐射四道光】

成图:

【Canvas技法】辐射式多道光影的实现_canvas_03

代码:

const R=180;// 基准尺寸
        
        // 十字纹
        ctx.save();
        r=R;
        var N=3600;
        for(var i=0;i<N;i++){
            var theta=Math.PI*2/N*i;
            var a=createPt(r*Math.cos(theta),r*Math.sin(theta));

            // 用锯齿函数实现周期变换,0.3为可调常数项
            var alpha=(((i+450)%900)/900);
            if(alpha>0.5){
                alpha=(1-alpha);
            }
            ctx.strokeStyle="rgba(188,187,189,"+alpha+")";// 控制直线的半透明度以调节明暗
            ctx.beginPath();
            ctx.moveTo(0,0);
            ctx.lineTo(a.x,a.y);
            ctx.stroke();
        }

 

【用锯齿函数实现辐射六道光】

成图:

【Canvas技法】辐射式多道光影的实现_canvas_04

代码:

const R=180;// 基准尺寸
        
        // 十字纹
        ctx.save();
        r=R;
        var N=3600;
        for(var i=0;i<N;i++){
            var theta=Math.PI*2/N*i;
            var a=createPt(r*Math.cos(theta),r*Math.sin(theta));

            // 用锯齿函数实现周期变换,0.3为可调常数项
            var alpha=(((i)%600)/600);
            if(alpha>0.5){
                alpha=(1-alpha);
            }
            ctx.strokeStyle="rgba(188,187,189,"+alpha+")";// 控制直线的半透明度以调节明暗
            ctx.beginPath();
            ctx.moveTo(0,0);
            ctx.lineTo(a.x,a.y);
            ctx.stroke();
        }

 

END

标签:Canvas,const,ctx,辐射式,180,var,alpha,save,多道
From: https://blog.51cto.com/u_7726611/12080363

相关文章

  • 【Canvas与诗词】木兰辞节选
    【成图】【代码】<!DOCTYPEhtml><htmllang="utf-8"><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/><head><title>金边钢底徽章</title><styletype="text/css"&g......
  • Netty+HTML5+Canvas 网络画画板实时在线画画
    采用Html5的canvas做前端画画板,发送数据到后端Netty服务,实时转发笔迹数据,在线实时同步画笔轨迹,单击绿色小方块,保存画板的图片页面:<!--index.html--><!DOCTYPEhtml><html><head><metacharset="UTF-8"><title>网络画画板</title></head><body&g......
  • WPF Canvas show custom control with ellipse filled with image and text,peridoica
    //customcontrol<UserControlx:Class="WpfApp389.ElpImageTbk"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"......
  • 【Canvas与诗词】《侠客行》节选
    【成图】【代码】<!DOCTYPEhtml><htmllang="utf-8"><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/><head><title>437.侠客行</title><styletype="text/css"&......
  • 处理微信小程序 ec-canvas 绘制map地图时缩放大小问题
    版本为5.1.2min版本,https://github.com/apache/echarts/releases?page=3 最重要的是这个下面这个dataZoom写法添加dataZoom:{type:'inside'},constoption={dataZoom:{type:'inside'},geo:......
  • WPF System.Windows.Media.Color A value must be set, display ball and number in c
    privateColorGetRndColor(){Colorcr=newColor();cr.A=255;cr.R=(byte)(rnd.Next(0,255));cr.G=(byte)(rnd.Next(0,255));cr.B=(byte)(rnd.Next(0,255));returncr;}         //usercontrol.......
  • WPF Customcontrol with ellipse and textblock display randomly in canvas of mainw
    //usercontrol.xaml<UserControlx:Class="WpfApp381.ElpImgTbk"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"......
  • 诚邀见证2024九章云极DataCanvas算力包产品发布会!
    算力,是驱动全球智能化升级的关键力量,也是智算经济腾飞的主要燃料。在智算经济腾起之际,我们洞察未来:算力不仅是生产力还将作为社会性普惠AI资源。我们思考未来:算力产品和模式需要何种创新才能够加速算力普惠的进程?我们定义未来:用单位来标准化算力,用AI基础软件纳管算力!作为人工......
  • 【Canvas与诗词】《登科后》唐.孟郊
    【成图】【代码】<!DOCTYPEhtml><htmllang="utf-8"><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/><head><title>昔日龌龊不足夸</title><styletype="text/css"&......
  • Canvas简历编辑器-Monorepo+Rspack工程实践
    Canvas简历编辑器-Monorepo+Rspack工程实践在之前我们围绕Canvas聊了很多代码设计层面的东西,在这里我们聊一下工程实践。在之前的文中我也提到过,因为是本着学习的态度以及对技术的好奇心来做的,所以除了一些工具类的库例如 ArcoDesign、ResizeObserve、Jest 等包之外,关于数据结......