All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.opencv.core.Point3 Maven / Gradle / Ivy

package org.opencv.core;

/**
 * 

template class CV_EXPORTS Point3_

* *

// C++ code:

* * *

public:

* *

typedef _Tp value_type;

* *

// various constructors

* *

Point3_();

* *

Point3_(_Tp _x, _Tp _y, _Tp _z);

* *

Point3_(const Point3_& pt);

* *

explicit Point3_(const Point_<_Tp>& pt);

* *

Point3_(const CvPoint3D32f& pt);

* *

Point3_(const Vec<_Tp, 3>& v);

* *

Point3_& operator = (const Point3_& pt);

* *

//! conversion to another data type

* *

template operator Point3_<_Tp2>() const;

* *

//! conversion to the old-style CvPoint...

* *

operator CvPoint3D32f() const;

* *

//! conversion to cv.Vec<>

* *

operator Vec<_Tp, 3>() const;

* *

//! dot product

* *

_Tp dot(const Point3_& pt) const;

* *

//! dot product computed in double-precision arithmetics

* *

double ddot(const Point3_& pt) const;

* *

//! cross product of the 2 3D points

* *

Point3_ cross(const Point3_& pt) const;

* *

_Tp x, y, z; //< the point coordinates

* *

};

* *

Template class for 3D points specified by its coordinates

* *

x, y and z. * An instance of the class is interchangeable with the C structure * CvPoint2D32f. Similarly to Point_, the coordinates * of 3D points can be converted to another type. The vector arithmetic and * comparison operations are also supported. * The following Point3_<> aliases are available:

* *

// C++ code:

* *

typedef Point3_ Point3i;

* *

typedef Point3_ Point3f;

* *

typedef Point3_ Point3d;

* * @see org.opencv.core.Point3_ */ public class Point3 { public double x, y, z; public Point3(double x, double y, double z) { this.x = x; this.y = y; this.z = z; } public Point3() { this(0, 0, 0); } public Point3(Point p) { x = p.x; y = p.y; z = 0; } public Point3(double[] vals) { this(); set(vals); } public void set(double[] vals) { if (vals != null) { x = vals.length > 0 ? vals[0] : 0; y = vals.length > 1 ? vals[1] : 0; z = vals.length > 2 ? vals[2] : 0; } else { x = 0; y = 0; z = 0; } } public Point3 clone() { return new Point3(x, y, z); } public double dot(Point3 p) { return x * p.x + y * p.y + z * p.z; } public Point3 cross(Point3 p) { return new Point3(y * p.z - z * p.y, z * p.x - x * p.z, x * p.y - y * p.x); } @Override public int hashCode() { final int prime = 31; int result = 1; long temp; temp = Double.doubleToLongBits(x); result = prime * result + (int) (temp ^ (temp >>> 32)); temp = Double.doubleToLongBits(y); result = prime * result + (int) (temp ^ (temp >>> 32)); temp = Double.doubleToLongBits(z); result = prime * result + (int) (temp ^ (temp >>> 32)); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (!(obj instanceof Point3)) return false; Point3 it = (Point3) obj; return x == it.x && y == it.y && z == it.z; } @Override public String toString() { return "{" + x + ", " + y + ", " + z + "}"; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy