Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /* 
   * Copyright 2011 Cologne University of Applied Sciences Licensed under the
   * Educational Community License, Version 2.0 (the "License"); you may
   * not use this file except in compliance with the License. You may
   * obtain a copy of the License at
   *
   * http://www.osedu.org/licenses/ECL-2.0
   *
   * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an "AS IS"
  * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
  * or implied. See the License for the specific language governing
  * permissions and limitations under the License.
  */
 package org.amcgala.framework.camera;
 
Eine naive Implementierung einer perspektivischen Kamera.

Author(s):
Robert Giacinto
 
 public final class SimplePerspectiveCamera extends AbstractCamera {
 
     private double d;
     private Quaternion quaternion;

    
Erzeugt eine neue Kamera an einer Position mit einem bestimmten Blickpunkt.

Parameters:
vup Das Oben der Kamera
position Die Position der Kamera
direction Der Punkt, zu dem die Kamera blickt
d der Abstand der Kamera zur Projektionsebene. Umso kleiner der Wert desto größer die perspektivische Wirkung
 
     public SimplePerspectiveCamera(Vector3d vupVector3d positionVector3d directiondouble d) {
         this. = vup;
         this. = position;
         this. = direction;
         this. = d;
          = new Quaternion(direction, 0);
         update();
     }
 
     @Override
     public Matrix getProjectionMatrix() {
         return ;
     }
 
     @Override
     public void update() {
         this. = .sub().times(-1);
         this. = .cross().normalize();
         this. = .cross().normalize();
 
         double[][] vdValues = {
                 {1, 0, 0, 0},
                 {0, 1, 0, 0},
                 {0, 0, 0, 0},
                 {0, 0, 1.0 / , 1}
         };
 
         Matrix vd = Matrix.constructWithCopy(vdValues);
 
         Vector3d d = Vector3d.createVector3d(.dot(), .dot(), .dot());
 
         double[][] viewValues = {
                 {...d.x},
                 {...d.y},
                 {...d.z},
                 {0, 0, 0, 1}
         };
         Matrix kt = Matrix.constructWithCopy(viewValues);
          = vd.times(kt);
     }

    
Gibt den Abstand der Kamera zur Projektionsebene zurück.

Returns:
der aktuelle Abstand
 
     public double getD() {
         return ;
     }

    
Ändert den Abstand der Kamera zur Projektionsebene.

Parameters:
d der neue Abstand
 
     public void setD(double d) {
        this. = d;
        update();
    }
    @Override
    public CVPoint getClippingSpaceCoordinates(Vector3d vector3d) {
        Matrix point = .times(vector3d.toMatrix());
        return new CVPoint(point.get(0, 0) / point.get(3, 0), point.get(1, 0) / point.get(3, 0),1);    }
    @Override
    public Pixel getImageSpaceCoordinates(Vector3d vector3d) {
        Matrix point = .times(vector3d.toMatrix());
        return new Pixel(point.get(0, 0) / point.get(3, 0), point.get(1, 0) / point.get(3, 0));
    }
    private static final Logger log = LoggerFactory.getLogger(OrthographicCamera.class);
New to GrepCode? Check out our FAQ X