[从头学数学] 第58节 角的度量

剧情提要:
[机器小伟]在[工程师阿伟]的陪同下进入练气期第七层功法的修炼,
这次要修炼的目标是[角的度量]。

正剧开始:

星历2016年01月23日 12:03:08, 银河系厄尔斯星球中华帝国江南行省。
[工程师阿伟]正在和[机器小伟]一起学习角度。




既然[人叫板老师]给出了题解器的设计图纸,小伟当然就会拥有它:

<span style="font-size:18px;">	/**
	* @usage
	* @author  mw
	* @date    2016年01月23日  星期六  11:00:30 
	* @param
	* @return
	*
	*/
	//Protractor 量角器
	this.protractor = function(xOffset, yOffset, r, rotate, showText) {
		r = r ? r : 100;
		
		plot.save()
			.setFillStyle('red')			
			.translate(xOffset, yOffset)
			.rotate(rotate);
		
		//r0 是刻度线内圆上的点,r是外圆上的点
		var r0 = 0.2 * r;
				
		var angle, sin1, cos1, sin2, cos2;
		
		plot.setTextAlign('center');
		
		for (var i = 0; i < 180; i+=5) {
			angle = -Math.PI/180 * i;
			
			if ( i % 90 == 0) {
				plot.setLineWidth(4)
					.setStrokeStyle('red');
				r0 = 0.1 * r;
			}
			else if (i % 15 == 0) {
				plot.setLineWidth(2)
					.setStrokeStyle('CC0000');
				r0 = 0.2 * r;
			}
			else {
				plot.setLineWidth(1)
					.setStrokeStyle('880000');
				r0 = 0.8 * r;
			}
			
			sin1 = r*Math.sin(angle);
			sin2 = r0*Math.sin(angle);
			cos1 = r*Math.cos(angle);
			cos2 = r0*Math.cos(angle);
			
			plot.beginPath()
				.moveTo(cos1, sin1)
				.lineTo(cos2, sin2)
				.closePath()
				.stroke();
			
			if (showText == true) {
				if (i % 15 == 0) {
					plot.fillText(i.toFixed(0), 1.2*cos1, 1.2*sin1, 20);
				}
			}
		}
		
		plot.setLineWidth(5)
			.setStrokeStyle('CC8888')
			.beginPath()  
			.arc(0, 0, r, Math.PI, 0)  
			.closePath()  
			.stroke();
			
		plot.restore();
	}</span>


<span style="font-size:18px;">function myDraw() {  
    var config = new PlotConfiguration();  
    config.init();  
    config.setPreference(); 
	config.setSector(1,1,1,1);
 
    //config.axis2D(0, 0, 180);  	
	
	var ruler = new Ruler();
	
	ruler.protractor(0, -20, 100,0,true);
	ruler.protractor(-20, 150, 150,0, false);

	
}</span>


可以看出,这个角是30度。

<span style="font-size:18px;">function myDraw() {  
    var config = new PlotConfiguration();  
    config.init();  
    config.setPreference(); 
	//config.setSector(1,1,1,1);
 
    //config.axis2D(0, 0, 180);  	
	
	var image = new Image();
	image.src = './1.jpg';
	
	image.onload = function() {

		plot.drawImage(image);
		
		var ruler = new Ruler();		
		var x = 241, y=326;		
		ruler.protractor(x, y, 80,0,true);
	

	}	
}</span>






<span style="font-size:18px;">function myDraw() {  
    var config = new PlotConfiguration();  
    config.init();  
    config.setPreference(); 
	config.setSector(1,1,1,1);
 
    //config.axis2D(0, 0, 180);  	
	


	//画角
	var ruler = new Ruler();		
	var x = 0, y=0;		
	ruler.protractor(x, y, 100,true);
	
	var angle = 60;
	
	var x0, y0, x1, y1, r=150;
	
	x0 = Math.cos(-Math.PI/180*angle)*r;
	y0 = Math.sin(-Math.PI/180*angle)*r;
	x1 = r;
	y1 = 0;
	
	plot.setLineWidth(3)
		.beginPath()
		.moveTo(0, 0)
		.lineTo(x0, y0)
		.moveTo(0, 0)
		.lineTo(x1, y1)
		.closePath()
		.stroke();
		
			plot.setLineWidth(1)
			.setStrokeStyle('CC8888')
			.beginPath()  
			.arc(0, 0, 20, -Math.PI/180*angle, 0)  
			.closePath()  
			.stroke();
			
			plot.fillText(angle.toFixed(0), Math.cos(-Math.PI/360*angle)*25,
				Math.sin(-Math.PI/360*angle)*25, 50);
			
}</span>






现在,小伟已经知道了各种角,还学会了画角和量角,进步真大。

本节到此结束,欲知后事如何,请看下回分解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值