Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
 /// <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));
 }