⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vec.java

📁 MPI for java for Distributed Programming
💻 JAVA
字号:
/***************************************************************************                                                                         **             Java Grande Forum Benchmark Suite - MPJ Version 1.0         **                                                                         **                            produced by                                  **                                                                         **                  Java Grande Benchmarking Project                       **                                                                         **                                at                                       **                                                                         **                Edinburgh Parallel Computing Centre                      **                                                                         **                email: epcc-javagrande@epcc.ed.ac.uk                     **                                                                         **                 Original version of this code by                        **            Florian Doyon (Florian.Doyon@sophia.inria.fr)                **              and  Wilfried Klauser (wklauser@acm.org)                   **                                                                         **      This version copyright (c) The University of Edinburgh, 2001.      **                         All rights reserved.                            **                                                                         ***************************************************************************/package jgf_mpj_benchmarks.section3.raytracer;//package raytracer; /** * This class reflects the 3d vectors used in 3d computations */public class Vec implements java.io.Serializable {  /**   * The x coordinate   */  public double x;   /**   * The y coordinate   */  public double y;  /**   * The z coordinate   */  public double z;  /**   * Constructor   * @param a the x coordinate   * @param b the y coordinate   * @param c the z coordinate   */  public Vec(double a, double b, double c) {    x = a;    y = b;    z = c;  }  /**   * Copy constructor   */  public Vec(Vec a) {    x = a.x;    y = a.y;    z = a.z;  }  /**   * Default (0,0,0) constructor   */  public Vec() {    x = 0.0;    y = 0.0;     z = 0.0;  }  /**   * Add a vector to the current vector   * @param: a The vector to be added   */  public final void add(Vec a) {    x+=a.x;    y+=a.y;    z+=a.z;  }    /**   * adds: Returns a new vector such as   * new = sA + B   */  public static Vec adds(double s, Vec a, Vec b) {    return new Vec(s * a.x + b.x, s * a.y + b.y, s * a.z + b.z);  }      /**   * Adds vector such as:   * this+=sB   * @param: s The multiplier   * @param: b The vector to be added   */  public final void adds(double s,Vec b){      x+=s*b.x;      y+=s*b.y;      z+=s*b.z;  }  /**   * Substracs two vectors   */  public static Vec sub(Vec a, Vec b) {    return new Vec(a.x - b.x, a.y - b.y, a.z - b.z);  }  /**   * Substracts two vects and places the results in the current vector   * Used for speedup with local variables -there were too much Vec to be gc'ed   * Consumes about 10 units, whether sub consumes nearly 999 units!!    * cf thinking in java p. 831,832   */  public final void sub2(Vec a,Vec b) {    this.x=a.x-b.x;    this.y=a.y-b.y;    this.z=a.z-b.z;  }  public static Vec mult(Vec a, Vec b) {    return new Vec(a.x * b.x, a.y * b.y, a.z * b.z);  }  public static Vec cross(Vec a, Vec b) {    return      new Vec(a.y*b.z - a.z*b.y,	      a.z*b.x - a.x*b.z,	      a.x*b.y - a.y*b.x);  }  public static double dot(Vec a, Vec b) {    return a.x*b.x + a.y*b.y + a.z*b.z;  }  public static Vec comb(double a, Vec A, double b, Vec B) {    return      new Vec(a * A.x + b * B.x,	      a * A.y + b * B.y,	      a * A.z + b * B.z);  }  public final void comb2(double a,Vec A,double b,Vec B) {    x=a * A.x + b * B.x;    y=a * A.y + b * B.y;    z=a * A.z + b * B.z;        }  public final void scale(double t) {    x *= t;    y *= t;    z *= t;  }  public final void negate() {    x = -x;    y = -y;    z = -z;  }  public final double normalize() {    double len;    len = Math.sqrt(x*x + y*y + z*z);    if (len > 0.0) {      x /= len;      y /= len;      z /= len;    }    return len;  }  public final String toString() {    return "<" + x + "," + y + "," + z + ">";  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -