当前位置: 首页 > 图文教程 > Flash动画 > Flash动画制作 > AS3.0实用代码:绘制各种各样三角形

Flash动画制作
FLASH MX 2004右键菜单秀
轻松打造Flash帧速率测试器
Flash制作马赛克效果
一些Flash经验法则
Flash MX 2004 UI组件系列教程(2)
Flash加载外部文件(1)
Flash加载外部文件(4)
Flash MX 2004 UI组件系列教程(6)
Flash MX 2004 UI组件系列教程(5)
Flash MX 2004 UI组件系列教程(7)
Flash MX 2004滚动文本框的两种做法
Flash MX 2004 UI组件系列教程(1)
Flash 8中文版视频教程 滤镜-渐变发光
Flash 8中文版视频教程 滤镜-斜角
Flash 8中文版视频教程 滤镜-渐变斜角
PowerPoint中使用Flash的两点技巧
Flash动画 让其巧妙的设置成桌面上的布景
Flash 8中文版视频教程 滤镜-调整颜色
Flash 8中文版视频教程 绘画-联合
Flash 8中文版视频教程 绘画-裁切

Flash动画制作 中的 AS3.0实用代码:绘制各种各样三角形


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-04   浏览: 123 ::
收藏到网摘: n/a

以下介绍的是如何用程序 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);
  }
}
}