[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Java3Djp:00664] Re: NormalTest.java



■■ 免疫滋養植物性醗酵食品オリーゼ ■■■■■■■■■■■■■■■■■■
======== 糖尿・肝臓・腎臓・高血圧・便秘でお悩みの方!!  朗報!! 
初めてご応募の方全員にオリーゼ1箱(60包、3000円)を無料進呈
====== 創業昭和19年 オリーゼ本舗 http://www.matsuronet.ne.jp/ori-ze/
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

>>とにかく、Vector3f には normalize() というメソッドがあるので、
>>それを使ったほうがいいかもしれないです。
>
>おお、ご指摘ありがとうございます。
>考えてみればその通りです。早速直しておきます。(^^;;;)

  private Vector3f calcFaceNormal(Point3d[] vertices) {
    double ax = vertices[2].x - vertices[1].x;
    double ay = vertices[2].y - vertices[1].y;
    double az = vertices[2].z - vertices[1].z;
    double bx = vertices[0].x - vertices[1].x;
    double by = vertices[0].y - vertices[1].y;
    double bz = vertices[0].z - vertices[1].z;
    
    double nx = ay * bz - az * by;
    double ny = az * bx - ax * bz;
    double nz = ax * by - ay * bx;

    Vector3f normal = new Vector3f( (float)nx,
                                    (float)ny,
                                    (float)nz );
    nommal.normalize();

    //DEBUG
    System.out.println("nx=" + normal.x + ", ny=" + normal.y + ", nz=" + normal.z);

    return  normal;
  }

いちおうこのように書きなおしました。
-- 
えんどう やすゆき <yasuyuki@xxxxxxxxxx>
http://www.javaopen.org/jfriends/ (Java互助会ホームページ)