class Line { Node a,b; String name; Line(Node a, Node b) { if (a != null && b != null) { if (a.x <= b.x) { this.a=a; this.b=b; } else { this.a=b; this.b=a; } } if (a != null) { a.lines.addElement(this); } if (b != null) { b.lines.addElement(this); } name = ""; } void draw() { line(a.x,a.y,b.x,b.y); } float angle() { return atan2(b.y-a.y,b.x-a.x); } float length() { // TODO check != 0 return sqrt(sq(b.y-a.y)+sq(b.x-a.x)); } float distance(Node c) { float u = ( ((c.x-a.x)*(b.x-a.x)) + ((c.y-a.y)*(b.y-a.y)) ) / (sq(b.y-a.y)+sq(b.x-a.x)); float x = a.x + (u * (b.x-a.x)); float y = a.y + (u * (b.y-a.y)); float d = c.distance(new Node(x,y)); //if (keyPressed) println(d); return d; } boolean mouseOver() { return distance(new Node(mouseX,mouseY)) < 7.5; } }