Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package MyGeometryLib;
- import org.jetbrains.annotations.Contract;
- public class Segment {
- private Vector begin;
- private Vector end;
- Segment(Vector begin, Vector end) {
- this.begin = begin;
- this.end = end;
- }
- @Contract(pure = true)
- private Vector getStart() {
- return begin;
- }
- @Contract(pure = true)
- private Vector getEnd() {
- return end;
- }
- double length() {
- return (this.end.sub(this.begin)).len();
- }
- double distanceTo(Vector point) {
- double lengthFirstSide = (point.sub(begin)).len();
- double lengthSecondeSide = (point.sub(end)).len();
- double lengthLastSide = (end.sub(begin)).len();
- if (lengthLastSide == 0.0) {
- return (end.sub(begin)).sub(point).len();
- }
- double halfPerimeter = (lengthFirstSide + lengthSecondeSide + lengthLastSide) / 2;
- return (2*Math.sqrt(halfPerimeter*(halfPerimeter - lengthFirstSide)*(halfPerimeter - lengthSecondeSide)*(halfPerimeter - lengthLastSide))/lengthLastSide);
- }
- @Override
- public boolean equals(Object obj) {
- if (obj == this) {
- return true;
- }
- if (obj == null || obj.getClass() != this.getClass()) {
- return false;
- }
- Segment segment = (Segment) obj;
- return this.begin.equals(segment.begin) &&
- this.end.equals(segment.end) &&
- (this.end.sub(this.begin)).len() == segment.length();
- }
- }
Add Comment
Please, Sign In to add comment