/*
* Copyright (C) 2011-2015, Peter Abeles. All Rights Reserved.
*
* This file is part of Geometric Regression Library (GeoRegression).
*
* Licensed under the Apache 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.apache.org/licenses/LICENSE-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 georegression.struct.plane;
import java.io.Serializable;
/**
* <p>
* Represents the line using four parameters such that any point on the planes obeys the
* following formula, A*x + B*y + C*z = D. Any 3D plane can be represented using this notation.
* This formulation is also known as scalar.
* </p>
*
* <p>
* If in Hessian normal form, then (A,B,C) is the unit normal, and D is distance of the plane from the origin. The
* sign of D determines the side on the plane on which the origin is located.
* </p>
*
* <p>
* NOTE: The normal of the plane is the vector (A,B,C)
* </p>
*
* @author Peter Abeles
*/
public class PlaneGeneral3D_F64 implements Serializable {
/**
* Coefficients which define the plane.
*/
public double A,B,C,D;
public PlaneGeneral3D_F64( PlaneGeneral3D_F64 src ) {
set(src);
}
public PlaneGeneral3D_F64(double a, double b, double c, double d) {
set(a,b,c,d);
}
public PlaneGeneral3D_F64() {
}
public double getA() {
return A;
}
public double getB() {
return B;
}
public double getC() {
return C;
}
public double getD() {
return D;
}
public void set(double a, double b, double c, double d) {
this.A = a;
this.B = b;
this.C = c;
this.D = d;
}
public void set( PlaneGeneral3D_F64 src ) {
this.A = src.A;
this.B = src.B;
this.C = src.C;
this.D = src.D;
}
public void setA(double a) {
A = a;
}
public void setB(double b) {
B = b;
}
public void setC(double c) {
C = c;
}
public void setD(double d) {
D = d;
}
public String toString() {
return getClass().getSimpleName()+"( A = "+A+" B = "+B+" C = "+C+" D = "+D+" )";
}
}