贝塞尔

SVG-标签

那年仲夏 提交于 2019-12-04 00:15:15
标签 直线 <line> <line> 标签用来创建线条。 属性 含义 x1 属性在 x 轴定义线条的开始 y1 属性在 y 轴定义线条的开始 x2 属性在 x 轴定义线条的结束 y2 属性在 y 轴定义线条的结束 折线 <polyline> <polyline> 标签用来创建仅包含直线的形状。 属性 含义 points 指定了每个端点的坐标,横坐标与纵坐标之间与逗号分隔,点与点之间用空格分隔 <svg width="100" height="50"> <polyline stroke="red" fill="black" stroke-width="2" points="0,0 10,10 20,10 100,50"/> </svg> See the Pen svg-example-4 by flqbestboy ( @fanlinqiang ) on CodePen . 圆 <circle> 属性 含义 cx 圆心 x 轴坐标 cy 圆心 y 轴坐标 r 半径 <svg width="100" height="50"> <circle cx="50" cy="25" r="25" /> </svg> See the Pen svg-example-5 by flqbestboy ( @fanlinqiang ) on CodePen . 矩形 <rect> 标签可用来创建矩形

css---8 过渡属性刨析

狂风中的少年 提交于 2019-12-03 04:06:14
1. transition-property 默认值为 all,表示所有可被动画的属性都表现出过渡动 可以指定多个 property 属性值: none 没有过渡动画。 all 所有可被动画的属性都表现出过渡动画。 IDENT 属性名称 (可以指定多个) transition-property: width,height; transition-duration: 9s,1s; 2 transition-duration 属性以秒或毫秒为单位指定过渡动画所需的时间。 默认值为 0s ,表示不出现过渡动画。 可以指定多个时长,每个时长会被应用到由 transition-property 指定的对应属性上。如果指定的时长个数小于属性个数,那么时长列表会重复。如果时长列表更长,那么该列表会被裁减。两种情况下,属性列表都保持不变。 属性值 以毫秒或秒为单位的数值 <time> 类型。表示过渡属性从旧的值转变到新的值所需要的时间。如果时长是 0s ,表示不会呈现过渡动画,属性会瞬间完成转变。不接受负值。一定要加单位(不能写0 一定要写0s 1s,0s,1s)! transition-property:width,background; <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title

N阶贝塞尔曲线绘制(C/C#)

匿名 (未验证) 提交于 2019-12-02 22:56:40
版权声明:本文为博主原创文章,转载请附上博文链接! 需要拷贝代码请直接使用本文最后的例程,文章前面的大部分代码都不是最佳实践,是在编程过程中的摸索(走过的弯路),不过这些示范对笔者今后写算法启发很大。 要完成的功能是根据起点,终点和控制点,绘制n阶贝塞尔曲线 首先看n阶贝塞尔曲线的公式 公式中用了组合数,大数组合数计算也有算法: 下面来说明一下这个组合数计算的优化过程: 500 + 500 = 1000 上面两个式子计算结果是相等的,但是如果编程实现, 第一个式子就必须使用至少一个Uint32 来存放100000; 但是第二个式子只需要Uint16类型就可以完成整个计算。 现代的x86,硬件计算浮点都是先转换为double的,所以用double会比float会更快,当然这里只针对英特尔家族复杂指令集产品。 为什么用float不用double是因为PointF是C#自带的结构体{float X;float Y;},要改为double也是很简单的,全局替换一下数据类型即可 C#数组自带Length属性,但是为了方便移植到C,这里还是使用数组+数组长度作为入参,这样可以很容易的改写为C下面的数组指针+数组长度。 直接实现数学公式是比较简单的,直接贴代码: public static class Bezier { } 使用方法: // 第一个是起点,最后一个是终点,中间的都是控制点

canvas实现平面迁徙图

若如初见. 提交于 2019-12-01 10:23:29
前言 最近在做自己维护的一个可视化工具的时候,在添加基于echart的雷达图的时候,按照echart官网案例写完发现在自己项目中无法正常运行,排查了一番发现是我项目中echart的版本太低。找到问题原因之后就升级echart,但是升级echart之后发现原本正常运行的echart地图组件又无法使用,百度了一番发现echart在最新的版本中地图数据进行了切换,原先的数据由于不符合规范被砍掉,导致2.0以前的echart地图都无法正常使用了。既然出现这样的情况,那就没办法了,项目中使用的echart地图有三种类型,迁徙图、标记图和热力图。思来想去,echart最终还是要升级,所以就决定自己开发项目中需要的基于canvas的迁徙图,标记图和热力图。这篇稳重主要就阐述canvas如何实现类似于echart中的迁徙图。 原理说明 1、轨迹开始位置和结束位置之间的轨迹通过二次贝塞尔曲线quadraticCurveTo来实现,其中绘制贝塞尔曲线的控制点需要根据开始位置和结束位置来确定; 2、轨迹上运行的标记通过二次贝塞尔曲线反推获取贝塞尔曲线不同位置的x,y坐标,然后通过不断设置轨迹上点位置来实现轨迹上点; 3、轨迹上点移动和开始和结束位置动画通过requestAnimationFrame来实现,切换重回canvas的时候需要调用cancelAnimationFrame来实现。

关于贝塞尔曲线运动

雨燕双飞 提交于 2019-11-29 05:00:42
游戏中我们有时候会碰到计算物体的曲线运动,贝塞尔曲线就变得比较常用。 以下贴出主要代码: BezierData.cs using UnityEngine; using System.Collections; public struct BezierData { private Vector3 p0; private Vector3 p1; private Vector3 p2; public void SetData(Vector3 startPos, Vector3 controlPos, Vector3 endPos) { this.p0 = startPos; this.p1 = controlPos; this.p2 = endPos; // Debug.Log(this.p0 + " " + this.p1 + " " + this.p2); } public Vector3 Lerp(float t) { t = Mathf.Clamp01(t); if (Mathf.Approximately(t,1)) { return this.p2; } Vector3 pos0 = this.p0; Vector3 pos1 = this.p1; Vector3 pos2 = this.p2; float x = pos0.x + t * (2 * (1 - t) *

HTML5——Canvas

那年仲夏 提交于 2019-11-27 13:27:44
一、canvas简介 <canvas> 是 HTML5 新增的,一个可以使用脚本(通常为JavaScript)在其中绘制图像的 HTML 元素。它可以用来制作照片集或者制作简单(也不是那么简单)的动画,甚至可以进行实时视频处理和渲染。 ​ 它最初由苹果内部使用自己MacOS X WebKit推出,供应用程序使用像仪表盘的构件和 Safari 浏览器使用。 后来,有人通过Gecko内核的浏览器 (尤其是Mozilla和Firefox),Opera和Chrome和超文本网络应用技术工作组建议为下一代的网络技术使用该元素。 ​ Canvas是由HTML代码配合高度和宽度属性而定义出的可绘制区域。JavaScript代码可以访问该区域,类似于其他通用的二维API,通过一套完整的绘图函数来动态生成图形。 ​ Mozilla 程序从 Gecko 1.8 (Firefox 1.5)开始支持 <canvas>, Internet Explorer 从IE9开始<canvas> 。Chrome和Opera 9+ 也支持 <canvas>。 二、canvas基本使用 2.1<canvas>元素 <canvas id="tutorial" width="300" height="300"></canvas> <canvas>看起来和<img>标签一样,只是 <canvas> 只有两个可选的属性

Android开发技术周报 Issue#1

前提是你 提交于 2019-11-26 09:34:41
Android开发技术周报 Issue#1 业界新闻 1. “OK, Google” 开放体验,可以为你的应用服务了 2. 谷歌与菲亚特合作开发新款 Android 车载系统 北京时间 1 月 3 日消息,据外媒报道,谷歌和菲亚特-克莱斯勒汽车公司周一在国际消费电子展(CES)开幕前宣布,两家公司已在合作开发一款基于 Android 系统的新版车载信息娱乐系统。 3. Google Play服务将最低支持API级别14 Google Play 服务客户端内容库及 Firebase for Android 客户端内容库的 10.0.0 版本将是支持 Android API 级别 9(Android 2.3,Gingerbread)的最后版本。这些内容库的下一计划版本是 10.2.0,该版本会将支持的最低 API 级别从 9 提升至 14(Android 4.0.1,Ice Cream Sandwich)。此变更将于 2017 年初实施。 Android开发 1. Google分享系列 Android 7.x的新增功能 (Google开发者大会演讲PPT&视频) Android开发工具中的新增功能 (Google开发者大会演讲PPT&视频) “哎呀!我的 Android 应用程序又崩溃了!” (Google开发者大会演讲PPT&视频) Android开发中的电量和内存优化

HTML5 Canvas(基础知识)

北城余情 提交于 2019-11-26 00:45:40
最近笔者在学习HTML5的新元素 <canvas> ,会分享一些基础知识以及小例子,最终使用 <canvas> 实现一个绘制简单图表(条形图、线图或者饼图)的js库,会更新一到两篇文章~ 下面我们开始吧~ 确认宽度和高度 我们首先应该指定 <canvas> 标签即画布的宽度和高度属性,并在开始和闭合标签之间添加后备信息: <html> <head> <meta charset="utf-8"> </head> <body> <canvas id="canvas" width="500" height="500">Canvas is not supported.</canvas> </body> </html> 取得绘图上下文 调用 canvas 的 getContext() 方法,这个方法接收一个参数,即上下文的名字: var canvas = document.getElementById("canvas"); if(canvas.getContext) { var context = canvas.getContext("2d") } 上述例子中,我们在调用 getContext() 方法时,首先检测其是否存在,这是由于有的浏览器遇到HTML规范之外的标签时,也会创建一个DOM对象,比如我们在Chrome中尝试以下代码: <ppp id="ppp"></ppp>