// Decompiled by Jad v1.5.7g. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) 
// Source File Name:   Vec3f.java

//package com.hermetica.vecmath;
package net.hblok.opengl.util;

import java.io.PrintStream;
import com.hermetica.vecmath.Vec3d;

// Referenced classes of package com.hermetica.vecmath:
//            Vec3d

public class Vec3f
{

    public Vec3f()
    {
        x = y = z = 0.0F;
    }

    public Vec3f(float f, float f1, float f2)
    {
        x = f;
        y = f1;
        z = f2;
    }

    public Vec3f(float af[])
    {
        x = af[0];
        y = af[1];
        z = af[2];
    }

    public Vec3f(Vec3f vec3f)
    {
        x = vec3f.x;
        y = vec3f.y;
        z = vec3f.z;
    }

    public  void add(Vec3f vec3f)
    {
        x += vec3f.x;
        y += vec3f.y;
        z += vec3f.z;
    }

    public  void add(Vec3f vec3f, Vec3f vec3f1)
    {
        x = vec3f.x + vec3f1.x;
        y = vec3f.y + vec3f1.y;
        z = vec3f.z + vec3f1.z;
    }

    public  void cross(Vec3f vec3f, Vec3f vec3f1)
    {
        x = vec3f.y * vec3f1.z - vec3f.z * vec3f1.y;
        y = vec3f.z * vec3f1.x - vec3f.x * vec3f1.z;
        z = vec3f.x * vec3f1.y - vec3f.y * vec3f1.x;
    }

    public  float distance(Vec3f vec3f)
    {
        System.err.println("Not implemented");
        return 0.0F;
    }

    public  float distanceSquared(Vec3f vec3f)
    {
        System.err.println("Not implemented");
        return 0.0F;
    }

    public  float dot(Vec3f vec3f)
    {
        return x * vec3f.x + y * vec3f.y + z * vec3f.z;
    }

    public  boolean equals(Vec3f vec3f)
    {
        return x == vec3f.x && y == vec3f.y && z == vec3f.z;
    }

    public  void get(float af[])
    {
        af[0] = x;
        af[1] = y;
        af[2] = z;
    }

    public int hashCode()
    {
        return (int)(x + y + z);
    }

    public  float length()
    {
        float f = (float)Math.sqrt(x * x + y * y + z * z);
        if(f == 0.0F)
            return 1.0F;
        else
            return f;
    }

    public  float lengthSquared()
    {
        return x * x + y * y + z * z;
    }

    public  void negate()
    {
        x = -x;
        y = -y;
        z = -z;
    }

    public  void negate(Vec3f vec3f)
    {
        x = -vec3f.x;
        y = -vec3f.y;
        z = -vec3f.z;
    }

    public  void normalize()
    {
        float f = length();
        x /= f;
        y /= f;
        z /= f;
    }

    public  void scale(float f)
    {
        x *= f;
        y *= f;
        z *= f;
    }

    public  void scale(float f, Vec3f vec3f)
    {
        x = f * vec3f.x;
        y = f * vec3f.y;
        z = f * vec3f.y;
    }

    public  void scaleAdd(float f, Vec3f vec3f, Vec3f vec3f1)
    {
        x = f * vec3f.x + vec3f1.x;
        y = f * vec3f.y + vec3f1.y;
        z = f * vec3f.z + vec3f1.z;
    }

    public  void set(float f, float f1, float f2)
    {
        x = f;
        y = f1;
        z = f2;
    }

    public  void set(float af[])
    {
        x = af[0];
        y = af[1];
        z = af[2];
    }

    public  void set(Vec3f vec3f)
    {
        x = vec3f.x;
        y = vec3f.y;
        z = vec3f.z;
    }

    public  void set(Vec3d vec3d)
    {
        x = (float)vec3d.x;
        y = (float)vec3d.y;
        z = (float)vec3d.z;
    }

    public  void sub(Vec3f vec3f)
    {
        x -= vec3f.x;
        y -= vec3f.y;
        z -= vec3f.z;
    }

    public  void sub(Vec3f vec3f, Vec3f vec3f1)
    {
        x = vec3f.x - vec3f1.x;
        y = vec3f.y - vec3f1.y;
        z = vec3f.z - vec3f1.z;
    }

    public String toString()
    {
        StringBuffer stringbuffer = new StringBuffer();
        //stringbuffer.append(getClass() + "@" + hashCode() + ": x = " + x + " y = " + y + " z = " + z);
        stringbuffer.append("x=" + x + " y=" + y + " z=" + z);
        return new String(stringbuffer);
    }

    private static  String VERSION = new String("$Revision: 1.5b $");
    public float x;
    public float y;
    public float z;

}
