问题一: public class GeometryUtils { public static void main(String[] args) { System.out.println(isPointInTriangle(1, 1, 0, 0, 2, 0, 0, 2, 1, 1)); System.out.println(findLineSegmentsIntersection(0, 0, 0, 1, 1, 0, 1, 1, 0)); } public static boolean isPointInTriangle(double px, double py, double ax, double ay, double bx, double by, double cx, double cy) { double sABC = Math.abs(ax * by + bx * cy + cx * ay - ax * cy - bx * ay - cx * by) / 2.0; double sPAB = Math.abs(px * ay + ax * by + bx * py - ax * py - px * by - bx * ay) / 2.0; double sPAC = Math.abs(px * ay + ax * cy + cx * py - ax * py - px * cy - cx * ay) / 2.0; double sPBC = Math.abs(px * by + bx * cy + cx * py - bx * py - px * cy - cx * by) / 2.0; return Math.abs(sPAB + sPAC + sPBC - sABC) = 0 && t = 0 && s <= 1) { result[0] = x1 + t * (x2 - x1); result[1] = y1 + t * (y2 - y1); result[2] = z1 + t * (z2 - z1); return result; } else { return null; // 线段无交点 } } }