import java.awt.*; import java.awt.event.*; import java.util.*; public class Vedge implements java.io.Serializable{ InsertionP p1,p2; Vedge einv = null; Vedge enext = null; Vedge hnext = null; Dtriangle tri = null; /* explicit form of vector to line expression ax + by +c = 0 */ double a,b,c; public Vedge(InsertionP p1, InsertionP p2){ Update(p1,p2); } public void Update(InsertionP dp1, InsertionP dp2){ p1 = dp1; p2 = dp2; this.setLineCoefficients(); this.setp1edge(); } public Vedge getReverse(){ Vedge e = new Vedge(p2,p1); this.setInverse(e); return e; } public void setLineCoefficients(){ a = (p2.y - p1.y); b = (p1.x - p2.x); c = (p2.x*p1.y - p1.x*p2.y); } public void setp1edge(){ p1.edge = this; } public Vedge getHead(){ Vedge dedge; Vedge medge = this; while(((dedge = next(next(medge)).einv) != null )&&(dedge != this)){ medge = dedge; } return next(next(medge)); } public void setInverse(Vedge v){ this.einv = v; if(v != null)v.einv = this; } public int Region(InsertionP ds){ double dv = (a*ds.x+b*ds.y+c); if(dv > 0.0){ return 1; }else if(dv < 0.0){ return -1; }else{ return 0; } } private Vedge next(Vedge dv){ return (dv.enext); } }