AS3.0实用代码:绘制各种各样三角形

作者:网络 来源:佚名 更新时间:2009-11-20 12:50:15 点击:

以下介绍的是如何用程序 as3 (action script 3.0)画出各种各样的三角形:

一、根据三个顶点画出三角形

这是最简单的画法

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、等腰三角形可以看做其两腰交叉的那个点在一个圆的圆心,那么其他两个顶点则在这个圆上,假设圆心坐标为(0,0),圆的半径为r,两腰夹角为q,可得另个顶点坐标为(r,0),最后个顶点坐标为(r*cosq,r*sinq);

程序为

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度对应的弧度数
   //画三角形
   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度的等腰三角形,只需知道边长,即可按照上面的方法画出

3、如果已知条件为 两腰夹角q,底边长度d,那么两腰的长度即圆的半径r 为d*math.pi/(2*q),再按照上面的方法也可画出

4、如果知道等腰三角形的腰长r 和底边长d 也可求出
假设两腰夹角为x ,沿顶点画出等腰三角形的垂直平分线,可看出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、已知三条边长,最大边和最小边之差不能大于第三边

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);
  }
}
}