[ActionScript 3.0] AS3 绘制正四面体(线条)
package
{
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
import flash.geom.Point;
import flash.geom.Vector3D; /**
* @author Frost.Yen
* @E-mail 871979853@qq.com
* @create 2015-9-8 上午11:03:11
*
*/
[SWF(width="800",height="600")]
public class LineTetrahedron extends Sprite
{
private var _faceArr:Array = [];
private var _r:Number = 50;//顶点在各轴上的投影值
private var _focus:Number = 200;//焦距
private var _lineContainer:Sprite;
private var _container:Sprite;
private var _vertexArr:Array = [{x:-_r,y:_r,z:-_r},{x:_r,y:_r,z:_r},{x:-_r,y:-_r,z:_r},{x:_r,y:-_r,z:-_r}];
public function LineTetrahedron()
{
initViews();
initEventListeners();
}
private function initViews():void
{
_container = new Sprite();
_lineContainer = new Sprite();
_container.x = _lineContainer.x = 400;
_container.y = _lineContainer.y = 300;
this.addChild(_container);
this.addChild(_lineContainer);
createFace(); }
private function initEventListeners():void
{
this.addEventListener(Event.ENTER_FRAME,onEnterFrame);
}
private function onEnterFrame(e:Event):void
{
for (var i:int=0; i<_faceArr.length; i++)
{
_faceArr[i].transform.matrix3D.appendRotation((mouseX-_lineContainer.x)/50,Vector3D.Y_AXIS);
_faceArr[i].transform.matrix3D.appendRotation((mouseY-_lineContainer.y)/50,Vector3D.X_AXIS);
_faceArr[i].Z = (_faceArr[i] as MovieClip).transform.getRelativeMatrix3D(_container).position.z;
_faceArr[i].X = (_faceArr[i] as MovieClip).transform.getRelativeMatrix3D(_container).position.x*(_focus/(_focus+_faceArr[i].Z));
_faceArr[i].Y = (_faceArr[i] as MovieClip).transform.getRelativeMatrix3D(_container).position.y*(_focus/(_focus+_faceArr[i].Z));
//利用焦距实现透视
}
_lineContainer.graphics.clear();
_lineContainer.graphics.lineStyle(3,0x00ffff);
_lineContainer.graphics.moveTo(_faceArr[0].X,_faceArr[0].Y);
_lineContainer.graphics.lineTo(_faceArr[1].X,_faceArr[1].Y);
_lineContainer.graphics.lineTo(_faceArr[2].X,_faceArr[2].Y);
_lineContainer.graphics.lineTo(_faceArr[0].X,_faceArr[0].Y);
_lineContainer.graphics.lineTo(_faceArr[3].X,_faceArr[3].Y);
_lineContainer.graphics.lineTo(_faceArr[1].X,_faceArr[1].Y);
_lineContainer.graphics.moveTo(_faceArr[3].X,_faceArr[3].Y);
_lineContainer.graphics.lineTo(_faceArr[2].X,_faceArr[2].Y);
}
private function createFace():void
{
for(var i:int = 0;i<4;i++){
var mc:MovieClip = new MovieClip();
_container.addChild(mc);
_faceArr.push(mc);
mc.x = _vertexArr[i].x;
mc.y = _vertexArr[i].y;
mc.z = _vertexArr[i].z;
}
}
}
}
[ActionScript 3.0] AS3 绘制正四面体(线条)的更多相关文章
- [ActionScript 3.0] AS3 绘制正八面体(线条)
分析: 将八面体置于3D坐标系中,其中心的坐标位于原点(0,0,0),让八面体的六个顶点恰好位于3D坐标系的x轴.y轴和z轴上,则从八面体的中心到这六个顶点的距离是相等的.我们可以假设这个距离为r,则 ...
- [ActionScript 3.0] AS3 绘制正二十面体(线条)
分析: 正二十面体共有12个顶点.30条棱,其20个面都是正三角形.每条棱所对应的弧度值为1.1071487177940904弧度,这个弧度值可通过求Math.sqrt(5)/5的反余弦值求得.正二十 ...
- [ActionScript 3.0] AS3 绘制星形
package { import flash.display.Sprite; import flash.events.Event; /** * @author Frost.Yen * @E-mail ...
- [ActionScript 3.0] AS3 绘制12面体
package { import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; im ...
- [ActionScript 3.0] AS3 绘制立方体
package { import flash.display.Sprite; import flash.events.Event; import flash.geom.Vector3D; import ...
- [ActionScript 3.0] AS3 绘制任意三角形任意顶点到对边的高
注:顶点坐标可以点击 package { import flash.display.Shape; import flash.display.Sprite; import flash.events.Mo ...
- [ActionScript 3.0] as3处理xml的功能和遍历节点
as3比as2处理xml的功能增强了N倍,获取或遍历节点非常之方便,类似于json对像的处理方式. XML 的一个强大功能是它能够通过文本字符的线性字符串提供复杂的嵌套数据.将数据加载到 XML 对象 ...
- [ActionScript 3.0] AS3.0 动态加载显示内容
可以将下列任何外部显示资源加载到 ActionScript 3.0 应用程序中: 在 ActionScript 3.0 中创作的 SWF 文件 — 此文件可以是 Sprite.MovieClip 或扩 ...
- [ActionScript 3.0] AS3虚线绘制方法
import flash.geom.Point; import flash.display.MovieClip; import flash.display.Graphics; var mc:Movie ...
随机推荐
- Python_Day_5装饰器、字符串格式化、序列化、内置模块、生成器、迭代器之篇
一.装饰器 为什么要用装饰器??? 在实际的开发环境中应遵循开发封闭原则,虽然在这个原则是用的面向对象开发,但也适用于函数式编程,简单地说,它规定已经实现的功能代码不是允许修改的,但是可以被扩展: 封 ...
- MySQL分库分表环境下全局ID生成方案 转
在大型互联网应用中,随着用户数的增加,为了提高应用的性能,我们经常需要对数据库进行分库分表操作.在单表时代,我们可以完全依赖于数据库的自增ID来唯一标识一个用户或数据对象.但是当我们对数据库进行了分库 ...
- ASP.net MVC3 报错"未找到视图“Index”或其母版视图,或没有视图引擎支持搜索的位置 "的解决方法
注意添加MVC3视图不能直接在View文件下新建视图,而是在控制器的Index 右击添加视图,就会在View下面产生一个Product文件夹(包含Index.cshtml) 就可以解决这个问题. 具体 ...
- Activation successful 数据库邮件无法发送
问题现象: 配置好数据库邮件后发送测试邮件. 在数据库邮件发送日志中显示状态为:Activation successful.而邮件是无法收到的. 解决方法: 本次解决是将SQL Server Agen ...
- 【extjs】 ext5 Ext.grid.Panel 分页,搜索
带有分页,搜索的grid. <%@page language="java" contentType="text/html; charset=UTF-8" ...
- [Spring] IOC - study
Spring IOC简单注入例子,本例子使用JUnit进行测试.Spring版本:3.2 项目结构: Spring所需引用的JAR包: Spring XML配置: springContext.xml ...
- HTML5常识总结(一)
一.HTML5的发展历程 + html演变的几个版本: html2.0.html3.2.html4.0.html4.01.html5. + 其中在html4.01发布之后,还发布了xtml1.0,它是 ...
- Visual Studio Professional 2015 (x86 and x64) - DVD (Chinese-Simplified)
文件名cn_visual_studio_professional_2015_x86_x64_dvd_6846645.isoSHA1629E7154E2695F08A3C692C0B3F6CE19DF6 ...
- ScalaTour-1.基础
import java.io.{BufferedReader, File, FileInputStream, InputStreamReader} import java.util import ja ...
- 杀死future处理的阻塞线程
public class Test{ public static void main(String[] args){ ExecutorService pool = Executors.newFixed ...