| 首页 | 新闻 | 网页 | 设计 | 色彩 | 原创 | 视觉 | 素材 | 动漫 | 酷站 | 策划 | 文案 | 访谈 | 运营 | 编程 | 数据库 | 服务器 | 下载 | 图库 | 
您的位置: 幽幽天空 > 网页 > 网页制作 > Flash教程 > ActionScript教程 > 文章正文 用户登录
用Flash和FlashFo
二维、三维矢量类
关于FLASH绘制CAR
mc长时间绘制多消
AS实现动态正弦曲
实例解析Flash绘制
纯AS绘制圆形的一
直线绘制方法之“
从球形绳的制作学
Flash 与三维全景

绘制三维曲线           

绘制三维曲线

作者:佚名 来源:闪吧 作者: 雪の猫 更新:2007-1-13 20:46:31 错误报告 我要投稿

上次“极坐标应用”的贴里边,有人要画曲面,我翻了些书。但愿可以做好。今天的这个是准备活动。趁着还没有上课,我尽量把最终的效果做好发上来吧。

因为i没有编译器,不能上穿效果了。大家只好来看代码。

Flash是不能靠原有的APIs绘制3D曲线的,所以我要在2D平面得到3D的投影来表示,可是不能是平凡的投影,还要考虑透视效果。

我的基本想法是“截面”,就是对Z轴不同的点 n 建立一个平面坐标XznY,这个新的坐标有自己的一套参X0,Y0,和单位长度。然后我们根据空间原始的x,y,z得到坐标XznY的一点,在对应的转化到XZ0Y,就是真正划线的那个平面。

这个是坐标XznY的代码,

class ZC {
var scale;//坐标的缩放系数
var x0, y0; //坐标原点
static var zc:Array = new Array; //储存实例
private var ID; //坐标编号
static var mapping; //映射参数,还没有实现
private static var Max = 550;//影射常数参数

//构造函数,我要使用应用singleton
private function ZC(z) {
this.ID = z;
scale = 1-z/Max;
var oo1 = z*Math.tan(Math.PI/8);
x0 = oo1*Math.cos(Math.PI/6);
y0 = oo1*Math.sin(Math.PI/6);
}
//创造坐标实例
public static function getZC(z) {
if(z >= Max||z<=-Max)
return ;
if (zc.length != 0)
for (var i = 0; i<zc.length; i++)
if (zc[i].ID == z) //bug
return zc[i];
zc.push(new ZC(z));
return zc[zc.length-1];
}
//坐标实例的ID
function getID() {
return this.ID;
}
}


在代码中有算法意义的也就是构造函数那部分了,他原则上对空间曲线的每一个点都建立一个坐标,储存准备转化到XZ0Y的信息。scale是一个XznY单位长度和XZ0Y单位长度的比

转化函数

function transfer(x, y, z) {
if (z == undefined || z == null) {
z = 0;
}
var aZC = ZC.getZC(z);
var point = new Object();
point.x = aZC.x0+x*aZC.scale;
point.y = aZC.y0+y*aZC.scale;
return point;
}


测试我画了一个圆在XY0Z平面:

import ZC;
#include "transfer.as"

var rad = 0;
onEnterFrame = function () {
var x = 150*Math.cos(rad);
var z = 150*Math.sin(rad);
var point = transfer(x, 0, z);
if (rad == 0) {
_root.moveTo(point.x, point.y);
}
_root.lineTo(point.x, point.y);
rad += .1;
_root.lineStyle(1, 0, 50);
};
_root._x = _root._y=200;
_root._yscale = -100;
文章录入:skyuu    责任编辑:skyuu 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    发表评论:
    姓名:  评 分: 1分 2分 3分 4分 5分
     
  • 严禁发表危害国家安全、政治、黄色淫秽等内容的评论。
  • 用户需对自己在使用幽幽天空服务过程中的行为承担法律责任。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表机友个人观点,与本网站立场无关。