view src/main/java/alice/test/topology/aquarium/ViewChange.java @ 618:41a5977e754c dispose

aquarium
author suruga
date Wed, 26 Jul 2017 16:17:33 +0900
parents aefbe41fcf12
children 32e849e09c88
line wrap: on
line source

package alice.test.topology.aquarium;

import com.sun.j3d.utils.universe.SimpleUniverse;
import com.sun.j3d.utils.universe.ViewingPlatform;

import javax.media.j3d.Canvas3D;
import javax.media.j3d.Transform3D;
import javax.media.j3d.TransformGroup;
import javax.vecmath.Vector3f;
import java.awt.*;

import static com.sun.java.accessibility.util.AWTEventMonitor.addMouseMotionListener;

public class ViewChange extends Canvas3D {

    private static final long serialVersionUID = 1L;
    float sensitivity;
    float distance = 2.5f;
    float camera_x, camera_y, camera_z, camera_xz, camera_xy, camera_yz = 0;
    float phi =  0; // flow
    float theta = 0;

    SimpleUniverse universe;
    TransformGroup Camera;
    Transform3D Transform_camera_pos;
    Transform3D Transform_camera_phi;
    Transform3D Transform_camera_theta;
    Vector3f Vector_camera_pos;

    public ViewChange(float x, float Sensitivity, GraphicsConfiguration config){
        super(config);

        sensitivity = Sensitivity;
        universe = new SimpleUniverse(this);
        ViewingPlatform vp = universe.getViewingPlatform();
        Camera = vp.getViewPlatformTransform();

        camera_y = distance * (float)Math.sin(theta);
        camera_xz = distance * (float)Math.cos(theta);
        System.out.println(x);
        camera_x = x;
        camera_z =  camera_xz * (float)Math.cos(phi);

        Vector_camera_pos = new Vector3f(camera_x, camera_y, camera_z);
        Transform_camera_pos = new Transform3D();
        Transform_camera_pos.setTranslation(Vector_camera_pos);
        Transform_camera_phi = new Transform3D();
        Transform_camera_theta = new Transform3D();
        Transform_camera_theta.rotX(-theta);
        Transform_camera_phi.rotY(phi);
        Transform_camera_theta.mul(Transform_camera_phi);
        Transform_camera_pos.mul(Transform_camera_theta);

        Camera.setTransform(Transform_camera_pos);

        addMouseMotionListener(new MouseViewEvent(this));

    }



}