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.shape.shape3d;
 
 
Ein 3d Kreis, der mithilfe des Bresenham Algorithmus gezeichnet wird.

Author(s):
Steffen Tröster
 
 public class Circle extends Shape {
 
     private double xy;
     private double radius;
     private Vector3d pos;
     private final double z;

    
Ein Kreis im 3d-Raum mit dem Mittelpunkt an der Position (x,y,z).

Parameters:
x die x-Position des Mittelpunkts
y die y-Position des Mittelpunkts
z die z-Position des Mittelpunkts
radius der Radius
 
     public Circle(double xdouble ydouble zdouble radius) {
         this. = x;
         this. = y;
         this. = z;
         this. = radius;
          = new Vector3d(xyz);
     }

    
Setzt den Radius des Kreises auf den übergebenen Wert.

Parameters:
r
 
     public void setRadius(double r) {
         this. = r;
     }

    
Gibt den Radius des Kreises zurück.

Returns:
 
     public double getRadius() {
         return this.;
     }

    
Setzt den Kreis auf die übergebene Position.
 
     public void setPosition(double xdouble y) {
         this. = x;
         this. = y;
     }

    
Gibt die Position in Form eines Vektors zurück.

Returns:
 
     public Vector3d getPosition() {
         return new Vector3d(this.this.this.);
     }

    
 
     @Override
     public void render(Matrix transformationCamera cameraRenderer renderer) {
         /*
            * Einbeziehen der Transformationsgruppen. Um Animationen zu
            * beruecksichtigen, die auf die einzelnen Felder zugegriffen
            * haben, wird der pos Vektor aktualisiert, bevor er mit
            * der Transformationsmatrix multipliziert wird.
           */
         = new Vector3d().transform(transformation);
         = .;
         = .;
        double f = 1 - ;
        double ddF_x = 0;
        double ddF_y = -2 * ;
        double x1 = 0;
        double y1 = ;
        // Eckpunkte zeichnen
        renderer.putPixel(new Pixel( + ), this.);
        renderer.putPixel(new Pixel( - ), this.);
        renderer.putPixel(new Pixel( + ), this.);
        renderer.putPixel(new Pixel( - ), this.);
        while (x1 < y1) {
            if (f >= 0) {
                y1--;
                ddF_y += 2;
                f += ddF_y;
            }
            x1++;
            ddF_x += 2;
            f += ddF_x + 1;
            // Zeichne jeweiligen Randsegmente
            renderer.putPixel(new Pixel(this. + x1this. + y1), this.);
            renderer.putPixel(new Pixel(this. - x1this. + y1), this.);
            renderer.putPixel(new Pixel(this. + x1this. - y1), this.);
            renderer.putPixel(new Pixel(this. - x1this. - y1), this.);
            renderer.putPixel(new Pixel(this. + y1this. + x1), this.);
            renderer.putPixel(new Pixel(this. - y1this. + x1), this.);
            renderer.putPixel(new Pixel(this. + y1this. - x1), this.);
            renderer.putPixel(new Pixel(this. - y1this. - x1), this.);
        }
        /*
         * Ende Bresenham Algorithmus
         */
    }

    
    @Override
    public String toString() {
        return "Circle3d{" + "x=" +  + ", y=" +  + ", radius=" + 
                + ", pos=" +  + '}';
    }
    private static final Logger log = LoggerFactory.getLogger(Circle.class.getName());
New to GrepCode? Check out our FAQ X