以下介紹的是如何用程序 as3 (action script 3.0)畫出各種各樣的三角形:
一、根據(jù)三個(gè)頂點(diǎn)畫出三角形
這是最簡(jiǎn)單的畫法
package com.king{ /* author: ShangBin Feng QQ: 334973991 */ import flash.display.Sprite; import flash.geom.Point
public class testTriangle extends Sprite{ public function testTriangle(){ //已知條件 var pointA:Point=new Point(0,0); var pointB:Point=new Point(50,55); var pointC:Point=new Point(0,70);
//畫三角形
graphics.lineStyle(1, 0xff0000, 1); graphics.moveTo(pointA.x,pointA.y); graphics.lineTo(pointB.x,pointB.y); graphics.lineTo(pointC.x,pointC.y); graphics.lineTo(pointA.x,pointA.y); } } }
二、畫等腰三角形
1、等腰三角形可以看做其兩腰交叉的那個(gè)點(diǎn)在一個(gè)圓的圓心,那么其他兩個(gè)頂點(diǎn)則在這個(gè)圓上,假設(shè)圓心坐標(biāo)為(0,0),圓的半徑為r,兩腰夾角為Q,可得另個(gè)頂點(diǎn)坐標(biāo)為(r,0),最后個(gè)頂點(diǎn)坐標(biāo)為(r*cosQ,r*sinQ);
程序?yàn)?/p>
package com.king{ /* author: ShangBin Feng QQ: 334973991 */ import flash.display.Sprite; import flash.geom.Point public class testTriangle extends Sprite{ public function testTriangle(){ //已知條件 var r:Number=100; var Q:Number=30*(2*Math.PI/360);//這里得到是弧度,即30度對(duì)應(yīng)的弧度數(shù) //畫三角形 graphics.lineStyle(1, 0xff0000, 1); graphics.moveTo(0,0); graphics.lineTo(r,0); graphics.lineTo(r*Math.cos(Q),r*Math.sin(Q)); graphics.lineTo(0,0); } } }
2、等邊三角形可看做兩腰夾角為60度的等腰三角形,只需知道邊長(zhǎng),即可按照上面的方法畫出
3、如果已知條件為 兩腰夾角Q,底邊長(zhǎng)度d,那么兩腰的長(zhǎng)度即圓的半徑r 為d*Math.PI/(2*Q),再按照上面的方法也可畫出
4、如果知道等腰三角形的腰長(zhǎng)r 和底邊長(zhǎng)d 也可求出 假設(shè)兩腰夾角為x ,沿頂點(diǎn)畫出等腰三角形的垂直平分線,可看出sin(x/2)=(d/2)/r,可求出夾角Q=(Math.asin((d/2)/r))/2,再按照上面的方法也可畫出
三、畫普通的三角形
1、已知兩角一邊
package com.king{ /* author: ShangBin Feng QQ: 334973991 */ import flash.display.Sprite; import flash.geom.Point; public class testTriangle extends Sprite{ public function testTriangle(){ //已知條件 var a:Number=100; var A:Number=90*2*Math.PI/360; var B:Number=30*2*Math.PI/360; //畫三角形 var b:Number=a*Math.sin(A)/Math.tan(B)+a*Math.cos(A); graphics.lineStyle(1, 0xff0000, 1); graphics.moveTo(0,0); graphics.lineTo(a,0); graphics.lineTo(b*Math.cos(A),b*Math.sin(A)); graphics.lineTo(0,0); } } }
2、已知兩邊和此兩邊的夾角
package com.king{ /* author: ShangBin Feng QQ: 334973991 */ import flash.display.Sprite; import flash.geom.Point; public class testTriangle extends Sprite{ public function testTriangle(){ //已知條件 var a:Number=100; var b:Number=200; var A:Number=90*2*Math.PI/360; //畫三角形 graphics.lineStyle(1, 0xff0000, 1); graphics.moveTo(0,0); graphics.lineTo(a,0); graphics.lineTo(b*Math.cos(A),b*Math.sin(A)); graphics.lineTo(0,0); } } }
3、已知三條邊長(zhǎng),最大邊和最小邊之差不能大于第三邊
package com.king{ /* author: ShangBin Feng QQ: 334973991 */ import flash.display.Sprite; import flash.geom.Point; public class testTriangle extends Sprite{ public function testTriangle(){ //已知條件 var a:Number=100; var b:Number=200; var c:Number=250; //畫三角形 var x=(a*a+b*b-c*c)/(2*a); var y=Math.sqrt(b*b-x*x); graphics.lineStyle(1, 0xff0000, 1); graphics.moveTo(0,0); graphics.lineTo(a,0); graphics.lineTo(x,y); graphics.lineTo(0,0); } } }
經(jīng)典論壇交流: http://bbs.blueidea.com/thread-2957924-1-1.html
本文鏈接:http://m.95time.cn/tech/multimedia/2009/7218.asp
出處:藍(lán)色理想
責(zé)任編輯:bluehearts
◎進(jìn)入論壇RIA設(shè)計(jì)與應(yīng)用版塊參加討論
|