package org.bruce.vertices.controller.geometry;/**
* @author BruceYang*/
public classCGGeometryLib {/**
* @param p0 第一个点的坐标
* @param p1 第二个点的坐标
* @return 两个点之间的距离
* 计算出两点之间的距离*/
public static doublegetDistanceBetween2Points(CGPoint p0, CGPoint p1) {double distance = Math.sqrt(Math.pow(p0.y - p1.y, 2) + Math.pow(p0.x - p1.x, 2));returndistance;
}/**
* @param p
* @param l
* @return 该方法用于获取某点在某条直线上的投影点的坐标*/
public staticCGPoint getProjectivePoint(CGPoint p, CGLine l) {
CGPoint target= null;if(l.iskExists()) {if(l.k != 0) {
CGLine newLine= new CGLine(-1/l.k, p.y -(-1/l.k)*p.x);
target=getCrossPoint(l, newLine);
}else { //如果直线l的斜率存在且斜率的值为0,明显是一条平行于x轴的直线~//此时,点 p 到直线 l 的距离为:Math.abs(p.y-l.b)
target = newCGPoint(p.x, l.b);
}
}else { //如果直线l的斜率不存在,明显是一条垂直于x轴的直线~//此时,点 p 到直线 l 的距离为:Math.abs(p.x-l.extraX)
target = newCGPoint(l.extraX, p.y);
}
CGDbg.println("点 ("+p.x+","+p.y+") 在直线:y="+l.k+"x+"+l.b+"上的投影点为 ("+target.x+","+target.y+")");returntarget;
}/**
* 该方法用于求出两条直线的交点坐标
* 这个方法是定制的,只有 l1, l2 均存在斜率 k 时方能使用(限制取消)~
* @para