【绘制】HTML5 Canvas坐标变换——坐标系的平

网络 分享 时间: 收藏本文

【绘制】HTML5 Canvas坐标变换——坐标系的平

我的处女作《系列教程》在我的上正在连载更新,希望能得到您的关注和支持,让我有更多的动力进行创作。

教程介绍、教程目录等能在里查阅。

传送门:

引入

有时候,换种思路是可以简化问题的。

比如,当我们要在画布中心绘制n个几何图形时:

其实这里,我们就简化了中心点为(0,0),但极大地简化了在绘制其他图形时所需要的计算了。

介绍

在的绘图环境中,提供了坐标系的平移、缩放和旋转的方法。

xt2D对象中旋转、缩放和平移坐标系的方法 方法描述

( )

按照给定的弧度旋转坐标系。(注意,π弧度等于180角度)

( x, y)

在X和Y方向上分别按照给定的数值进行缩放坐标系

( x, y)

将坐标系平移到给定的X、Y坐标处

为了更加形象地理解,我们以绘制坐标轴的小节为基础,分别演示旋转、缩放和平移。为了演示方便,我们为下面变更的标签添加了黑色边框。

旋转

只传入顺时针旋转的弧度,如π/8就是22.5度。在初始化之前,添加一句代码:

context.rotate(-Math.PI/8);

在线演示 详细代码

我们可以发现,实际上坐标轴的旋转其实就意为着整个坐标轴的旋转,因为后续路径的位置也都是根据坐标来判定的。

缩放

(2,2)就意味着横坐标和纵坐标都同时放大2倍。在初始化之前,添加一句代码:

context.scale(2,2);

在线演示 详细代码

这里的确按照我们想要的2倍放大了,但原点坐标被隐藏到了下面,如果此时我们想得到原点的图像,那么就需要我们配合平移来实现了。

平移

(30,30)意味着我们将坐标轴原点平移到了(30,30)的位置,换句话说,将整个画布图像沿着(0,0)到(30,30)方向移动了。在初始化之前,添加一句代码:

context.translate(30,30);

在线演示 详细代码

坐标轴被平移了,由于宽高限制,目前坐标轴只能展示出这个范围。

镜像

其实镜像的实现,并没有提供API,但可以通过实现镜像的效果。比如说,在绘制了某个图形后,可以调用(1,-1)来绘制水平镜像,或者调用(-1,1)来绘制垂直镜像。

在线演示 详细代码

这里就以画布的x=./2处为镜面实现镜像效果。

 drawGrid('lightgray', 10, 10);
    drawAxis();
    context.translate(canvas.width,0);
    context.scale(-1,1);
    drawAxis();

上面这段代码先调用了()绘制原坐标轴,再将原点平移到的右边界,然后调用(-1,1)按照原来的方法绘制坐标轴即可得到镜面图像。

信息流广告 网络推广 周易 易经 代理招生 二手车 网络营销 招生代理 旅游攻略 非物质文化遗产 查字典 精雕图 戏曲下载 抖音代运营 易学网 互联网资讯 成语 成语故事 诗词 工商注册 注册公司 抖音带货 云南旅游网 网络游戏 代理记账 短视频运营 在线题库 国学网 知识产权 抖音运营 雕龙客 雕塑 奇石 散文 自学教程 常用文书 河北生活网 好书推荐 游戏攻略 心理测试 好做题 石家庄人才网 考研真题 汉语知识 心理咨询 手游安卓版下载 兴趣爱好 网络知识 十大品牌排行榜 商标交易 单机游戏下载 短视频代运营 宝宝起名 范文网 电商设计 职业培训 免费发布信息 服装服饰 律师咨询 搜救犬 Chat GPT中文版 经典范文 优质范文 工作总结 二手车估价 实用范文 爱采购代运营 古诗词 衡水人才网 石家庄点痣 养花 名酒回收 石家庄代理记账 女士发型 搜搜作文 石家庄人才网 铜雕 词典 围棋 chatGPT 读后感 玄机派 企业服务 法律咨询 chatGPT国内版 chatGPT官网 励志名言 河北代理记账公司 文玩 朋友圈文案 语料库 游戏推荐 男士发型 高考作文 PS修图 儿童文学 买车咨询 工作计划 礼品厂 舟舟培训 IT教程 手机游戏推荐排行榜 暖通,电采暖, 女性健康 苗木供应 主题模板 短视频培训 优秀个人博客 包装网 创业赚钱 养生 民间借贷律师 绿色软件 安卓手机游戏 手机软件下载 手机游戏下载 单机游戏大全 免费软件下载 石家庄网络推广 石家庄招聘 石家庄网络营销 培训网 网赚 手游下载 游戏盒子 职业培训 资格考试 成语大全 英语培训 艺术培训 少儿培训 苗木网 雕塑网 好玩的手机游戏推荐 汉语词典 中国机械网 美文欣赏 红楼梦 道德经 网站转让 鲜花