+++ /dev/null
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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 org.apache.lucene.spatial.geometry.shape;
-
-
-/**
- * 2D vector
- *
- * <p><font color="red"><b>NOTE:</b> This API is still in
- * flux and might change in incompatible ways in the next
- * release.</font>
- */
-public class Vector2D {
- private double x;
- private double y;
-
- /**
- * Create a vector from the origin of the coordinate system to the given
- * point
- *
- * @param x
- * @param y
- */
- public Vector2D(double x, double y) {
- this.x = x;
- this.y = y;
- }
-
- /**
- * Create a vector from the origin of the coordinate system to the given
- * point
- */
- public Vector2D(Point2D p) {
- this(p.getX(), p.getY());
- }
-
- /**
- * Create a vector from one point to another
- *
- * @param from
- * @param to
- */
- public Vector2D(Point2D from, Point2D to) {
- this(to.getX() - from.getX(), to.getY() - from.getY());
- }
-
- public Vector2D() {
- this.x = 0;
- this.y = 0;
- }
-
- public Vector2D(Vector2D other) {
- this.x = other.x;
- this.y = other.y;
- }
-
- public double getX() {
- return x;
- }
-
- public double getY() {
- return y;
- }
-
- public void setX(double x) {
- this.x = x;
- }
-
- public void setY(double y) {
- this.y = y;
- }
-
- public void set(double x, double y) {
- this.x = x;
- this.y = y;
- }
-
- public boolean equals(Vector2D other) {
- return other != null && x == other.x && y == other.y;
- }
-
- public double dot(Vector2D in) {
- return ((x) * in.x) + (y * in.y);
- }
-
- /**
- * Vector length (magnitude) squared
- */
- public double normSqr() {
- // Cast to F to prevent overflows
- return (x * x) + (y * y);
- }
-
- public double norm() {
- return Math.sqrt(normSqr());
- }
-
- public Vector2D mult(double d) {
- return new Vector2D(x*d, y*d);
- }
-
- @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));
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- Vector2D other = (Vector2D) obj;
- if (Double.doubleToLongBits(x) != Double.doubleToLongBits(other.x))
- return false;
- if (Double.doubleToLongBits(y) != Double.doubleToLongBits(other.y))
- return false;
- return true;
- }
-
-}