第1页绘制椭圆
把现实世界当中的物体模拟到计算机当中,一些简单的物理实验、碰撞旋转等等难度还是不算很大,难度较大的应当算流体模拟。
本文将在Canvas当中模拟出一个2D平面内的水珠,涉及的知识点和技巧包括:Jscex基础知识,贝塞尔曲线的绘制,合理利用CanvasRenderingContext2D的translate和rotate等API。
绘制椭圆
在模拟水滴之前,我们先思考一下怎么在canvas当中绘制一个椭圆。
大家可以很容易想到 下面几种方案:
1.根据椭圆笛卡尔坐标系方程绘制
2.根据椭圆极坐标方程绘制
3.根据椭圆曲率变化绘制
4.利用四条贝塞尔曲线绘制
第四种,也是性能最好的一种,这样可以避免复杂的计算,充分利用CanvasRenderingContext2D的API(API的性能是通过严格测试,一般情况下比较靠谱).
所以我们采用第四种方式来绘制椭圆。
var canvas;
var ctx;
ctx = canvas.getContext(“2d”);
ctx.strokeStyle = “#fff”;
function drawEllipse(x, y, w, h) {
var k = 0.5522848;
var ox = (w / 2) * k;
var oy = (h / 2) * k;
var xe = x + w;
var ye = y + h;
var xm = x + w / 2;
var ym = y + h / 2;
ctx.beginPath();
ctx.moveTo(x, ym);
ctx.bezierCurveTo(x, ym – oy, xm – ox, y, xm, y);
ctx.bezierCurveTo(xm + ox, y, xe, ym – oy, xe, ym);
ctx.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye);
ctx.bezierCurveTo(xm – ox, ye, x, ym + oy, x, ym);
ctx.stroke();
ctx.clearRect(0,0,canvas.width,canvas.border=”1″ Height);
drawEllipse(10, 10, 40, 82);
- ■Android中利用SurfaceView制作抽奖转盘的全流程攻略
- ■程序员一定要升级Windows 10 Build 10061预览版
- ■Android中调用系统的文件浏览器及自制简单的文件浏览器
- ■Android中TimePicker与DatePicker时间日期选择组件的使用实例
- ■在Visual Studio上构建C++的GUI框架wxWidgets的开发环境
- ■Win10 预览版10061详细的升级攻略曝光
- ■用PS教你如何改变寸照的背景颜色示例教程
- ■Android App中各种数据保存方式的使用实例总结
- ■Android中使用GridLayout网格布局来制作简单的计算器App
- ■photoshop使用高低频为严重偏暗的人物图片修复美磨皮
- ■Android手机号注册、绑定手机号获取短信验证码实例
- ■举例讲解Android应用中SimpleAdapter简单适配器的使用
- ■详解Android App中的AsyncTask异步任务执行方式
- ■深入剖析Android系统中Service和IntentService的区别
- ■Android中使用socket通信实现消息推送的方法详解
- ■Android App中使用RatingBar实现星级打分功能的教程
- ■Android App中制作仿MIUI的Tab切换效果的实例分享
- ■浅析Android App的相对布局RelativeLayout
- ■实例讲解Android中的View类以及自定义View控件的方法
- ■Android支付宝支付开发实例
- ■Android中使用ContentProvider管理系统资源的实例
- ■Android miniTwitter登录界面开发实例
- ■Android中实现基本的短信拦截功能的代码示例
- ■通过实例简单讲解Android App中的Activity组件
- ■Android中简单的电话管理与短信管理App编写实例
- ■Android中的Intent对象完全解析
- ■详细讲解Android中使用LoaderManager加载数据的方法
- ■实例解析Android系统中的ContentProvider组件用法
- ■详解Android开发中ContentObserver类的使用
- ■Android中实现下载URL地址的网络资源的实例分享