zoukankan      html  css  js  c++  java
  • p点到(a,b)点两所在直线的垂点坐标及p点是否在(a,b)两点所在直线上

     /// <summary>
            
    ///  p点到(a,b)点两所在直线的垂点坐标
            
    /// </summary>
            
    /// <param name="a">直线上a点</param>
            
    /// <param name="b">直线上b点</param>
            
    /// <param name="p"></param>
            
    /// <returns>垂点坐标</returns>
            public static Vector2D GetVerticalPosition(Vector2D a, Vector2D b, Vector2D p)
            {
                double fa = b.Y - a.Y;
                double fb = a.X - b.X;
                double fc = a.Y * b.X - a.X * b.Y;

                Vector2D vpt = new Vector2D();//垂足
                vpt.X = (fb * fb * p.X - fa * fb * p.Y - fa * fc) / (fa * fa + fb * fb);
                vpt.Y = (fa * fa * p.Y - fa * fb * p.X - fb * fc) / (fa * fa + fb * fb);

                return vpt;
            }
            /// <summary>
            
    /// p点是否在(a,b)两点所在直线上
            
    /// </summary>
            
    /// <param name="a"></param>
            
    /// <param name="b"></param>
            
    /// <param name="foot"></param>
            
    /// <returns></returns>
            public static bool DotIsOnLine(Vector2D a, Vector2D b, Vector2D foot)
            {
                return Math.Min(a.X, b.X) <= foot.X && foot.X <= Math.Max(a.X, b.X) && Math.Min(a.Y, b.Y) <= foot.Y && foot.Y <= Math.Max(a.Y, b.Y);
            }
  • 相关阅读:
    XtraForm中OfficeSkins以及BonusSkin皮肤的设置
    XtraForm中更换皮肤
    XtraForm默认皮肤的显示
    wcf异常汇总
    使用JS意识到自己主动提交表单
    怎么样sourceforge开源项目发现,centos安装-同htop安装案例
    战国评论(三)---一起
    Mesos-error
    iOS 执行ScrollView在空白空间-解
    【2014 Multi-University Training Contest 2 1002】/【HDU 4873】 ZCC Loves Intersection
  • 原文地址:https://www.cnblogs.com/94cool/p/4654287.html
Copyright © 2011-2022 走看看