返回列表 发帖
Originally posted by 第八个孩子 at 2005-10-8 09:04:
嗯,不错
希望你继续下去
好好弄个系列的

呵呵~~有了老八的支持,那今天我就把剩下的方法都写出来吧~:P
欢迎光临我的个人空间:★四维空间★

TOP

创立副本的方法,其实就是复制自己的方法。

重设方法,其实我感觉还不如直接初始化的方便。

  1. // v3d 创建副本方法
  2. v3d.prototype.clone = function() {
  3.         return new this.constructor(this.x, this.y, this.z);
  4. };
  5. // v3d 重设方法
  6. v3d.prototype.reset = function(x, y, z) {
  7.         this.constructor(x, y, z);
  8. };
复制代码
欢迎光临我的个人空间:★四维空间★

TOP

求已知向量的逆向量的方法。

  1. // v3d 向量求逆方法
  2. v3d.prototype.negate = function() {
  3.         return new this.constructor(-this.x, -this.y, -this.z);
  4. };
复制代码
欢迎光临我的个人空间:★四维空间★

TOP

对已知向量设置缩放倍数的方法

  1. // v3d 向量缩放方法
  2. v3d.prototype.scale = function(s) {
  3.         return new this.constructor(this.x*s, this.y*s, this.z*s);
  4. };
复制代码
欢迎光临我的个人空间:★四维空间★

TOP

对已知向量求模和设置模的方法

  1. // v3d 向量求模方法
  2. v3d.prototype.getmod = function() {
  3.         return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z);
  4. };
  5. // v3d 向量设模方法
  6. v3d.prototype.setmod = function(len) {
  7.         var r = this.getmod();
  8.         if (r) {
  9.                 var n = this.scale(len/r);
  10.                 this.x = n.x;
  11.                 this.y = n.y;
  12.                 this.z = n.z;
  13.         } else {
  14.                 this.x = len;
  15.         }
  16. };
复制代码
欢迎光临我的个人空间:★四维空间★

TOP

两个向量之间求夹角

  1. // v3d 向量夹角方法
  2. v3d.prototype.angle = function(v, b) {
  3.         var dp = this.dot(v);
  4.         var cosAngle = dp/(this.getmod()*v.getmod());
  5.         var angle = Math.acos(cosAngle);
  6.         if (b) {
  7.                 return angle*180/Math.PI;
  8.         } else {
  9.                 return angle;
  10.         }
  11. };
复制代码
欢迎光临我的个人空间:★四维空间★

TOP

所有的方法都发完了,下面给出语法规则参考使用:

  1. /*
  2. Vector 3D 功能语法列表
  3. my3d=new v3d(x,y,z); //创建构造函数
  4. my3d.string(); //返回my3d的字符串
  5. my3d.reset(); //重设my3d的x,y坐标
  6. your3d=my3d.clone(); //返回my3d的副本给your3d
  7. your3d.equal(my3d); //返回布尔值,比较两个向量是否相等
  8. his3d=your3d.plus(my3d); //返回两个向量的和
  9. his3d=your3d.minus(my3d); //返回两个向量的差
  10. your3d=my3d.negate(); //返回my3d的逆向量
  11. your3d=my3d.scale(s); //返回my3d的s倍放缩
  12. my3d.getmod(); //返回向量的模
  13. my3d.setmod(len); //设置向量的模
  14. my3d.dot(your3d); //返回两个向量的点积
  15. my3d.cross(your3d); //返回两个向量的叉积
  16. my3d.angle(your3d,boolean); //返回两个向量的差角,true为角度,flase为弧度
  17. my2d=my3d.v3dtov2d(distance); //返回三维向量在距离为distance平面投影的二维向量
  18. your3d=my3d.Xrotate(xw,boolean); //将向量绕X轴旋转xw并返回,true为角度,flase为弧度
  19. your3d=my3d.Yrotate(yw,boolean); //将向量绕Y轴旋转yw并返回,true为角度,flase为弧度
  20. your3d=my3d.Zrotate(zw,boolean); //将向量绕Z轴旋转zw并返回,true为角度,flase为弧度
  21. your3d=my3d.Xrotate2(cos,sin); //将向量绕X轴旋转并返回,cos sin 分别为旋转角度的三角函数值
  22. your3d=my3d.Yrotate2(cos,sin); //将向量绕Y轴旋转并返回,cos sin 分别为旋转角度的三角函数值
  23. your3d=my3d.Zrotate2(cos,sin); //将向量绕Z轴旋转并返回,cos sin 分别为旋转角度的三角函数值
  24. */
复制代码
欢迎光临我的个人空间:★四维空间★

TOP

下面给出这个源文件的下载

Vector3D.as (5.27 KB)

欢迎光临我的个人空间:★四维空间★

TOP

在程序中可以通过下面的命令引用这个三维类,然后像正常的命令一样使用就可以了。

注意,必须和程序保存在一个文件夹下。

  1. #include<Vector3D.as>
复制代码
欢迎光临我的个人空间:★四维空间★

TOP

不错不错
我也学习了
从小就牛B

TOP

返回列表