Purpose: A utility class that can be used to perform operations on 2D lines, triangles, and polygons.
About the System: This class will be used by a 2D renderer and a 3D renderer (and, perhaps, other classes).
Details
Vectors of Different Size:
Side Effects:
The area() Method:
/** * Compute the area of a triangle from its three vertices * * The verteces can be assumed to be ordered correctly * (i.e., obey the right-hand rule) * * @param a The first vertex * @param b The second vertex * @param c The third vertex */ public static double area(double[] a, double[] b, double[] c)
The intersect() Method:
/** * Find the intersection of two lines * * This method returns null if the lines are parallel. * Otherwise, it returns the (convex combination) weights * that define the intersection point. Letting * alpha denote the weight for line 0 and * beta denote the weight for line 1, the intersection * point is given by: * * x: alpha*p[0] + (1-alpha)*q[0] * y: alpha*p[1] + (1-alpha)*q[1] * * and or: * * x: beta*r[0] + (1-beta)*s[0] * y: beta*r[1] + (1-beta)*s[1] * * If alpha is in [0, 1] then the intersection point is * within the line segment from p to q. Similarly, * if beta is in [0, 1] then the intersection point is * within the line segment from r to s. * * @param p One endpoint of the line from p to q * @param q The other endpoint of the line from p to q * @param r One endpoint of the line from r to s * @param s The other endpoint of the line from r to s * @return The weights (alpha,beta) or null if the lines are parallel */ public static double[] intersect(double[] p, double[] q, double[] r, double[] s)
Copyright 2007