[Canvas绘图] 第27节 三维初探

本篇博客介绍了使用Canvas进行三维图形的初步探索,通过贝塞尔曲线绘制了可变参数的椭圆,展示了不同变化下的图形效果。接着添加参数形成新的框架,进一步尝试绘制了圆柱体和球体,探索了Canvas在3D图形绘制的潜力。
摘要由CSDN通过智能技术生成
本节目标:
(1)  绘制椭圆
(2)  绘制简单三维图形

实现步骤:

采用贝氏曲线绘制椭圆

	//绘制椭圆
	function  BezierEllipse1(x, y, a, b, rotate) {
		//关键是bezierCurveTo中两个控制点的设置 
		//0.5和0.6是两个关键系数(在本函数中为试验而得) 
		var ox = 0.5 * a, 
		oy = 0.6 * b; 
		var rot = rotate ? -rotate : 0;
		context.save(); 
		context.rotate(rot);
		context.translate(x, y); 
		context.beginPath(); 
		//从椭圆纵轴下端开始逆时针方向绘制 
		context.moveTo(0, b); 
		context.bezierCurveTo(ox, b, a, oy, a, 0); 
		context.bezierCurveTo(a, -oy, ox, -b, 0, -b); 
		context.bezierCurveTo(-ox, -b, -a, -oy, -a, 0); 
		context.bezierCurveTo(-a, oy, -ox, b, 0, b); 
		context.closePath(); 
		context.stroke(); 
		context.restore(); 

	}


为了试验,我采取了一种并不是很好的方法来绘制长方体类图形。

	//绘制三维体
	var arr = [-0.5, -0.5, 0.5, - 0.5, 0.5, 0.5, -0.5, 0.5];
	var arr2 = [-0.5, -0.5, 0.5, - 0.5, 0.5, 0.5, -0.5, 0.5];
	var xtrans = [-0.5, 0, -0.5, 0, 0.5, 0, 0.5, 0];
	
	var len = arr.length;
	var point = Math.floor(arr.length / 2);
	var scale = 200;
	var ydown = 100;
	var xdown = 0;
	
	//上面
	//x
	for (var i = 0; i < len; i+=2) {
		arr[i] += xtrans[i];
		arr[i] = arr[i] * scale ;		
	}
	//y
	for (var i = 1; i < len; i+=2) {
		arr[i] += xtrans[i];
		arr[i] = -arr[i] * scale * 0.5-100;
	}
	
	//下面
	//x
	for (var i = 0; i < len; i+=2) {
		arr2[i] += xtrans[i];
		arr2[i] = arr2[i] * scale
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值