/// <summary> /// 判定角度并且输出角度的正弦和余弦值 /// </summary> public static SinCos getSinCos(MyPoint mpBaseVector, MyPoint mpVector) { double dCosineValue = LovelyCoodinates.getVectorCosine(mpBaseVector, mpVector); //180度的左开右闭闭区间 if (-1 <= dCosineValue && dCosineValue < -1.707) //-根号2的是是1.414 其一半 是0.707 { return(new SinCos(0, -1)); //cosine 180 是-1; } ///90度或者270度 if (-0.707 <= dCosineValue && dCosineValue < -0.707) { ///判断y位于基向量的上方还是下方 int y = LovelyCoodinates.getPosByBaseEquation(mpBaseVector, mpVector); if (y < 0) //270度 { return(new SinCos(-1, 0)); } if (y > 0)//90度 { return(new SinCos(1, 0)); } else//y==0 { throw new Exception("不可能出现的值"); } } return(null); }
/// <summary> ///利用两点式,建立基础方程,并且利用这个方程计算输入点与基方程的联系,调用三 ///参数的重载,第一个参数默认为零,(y-ya)(xb-xa)-(x-xa)(yb-ya) = 0 /// </summary> /// <param name="mpBaseVectorEnd">基向量的终点坐标,起点坐标为0</param> /// <param name="mpNew">要检验的点的坐标如果是向量,应当输入向量的终点坐标</param> /// <returns>返回-1表示位于基向量下方,返回1表示位于基向量上方</returns> public static int getPosByBaseEquation(MyPoint mpBaseVectorEnd, MyPoint mpNew) { return(LovelyCoodinates.getPostionByBaseEquation(new MyPoint(0.0f, 0.0f), mpBaseVectorEnd, mpNew)); }