目录
一、基本公式
A、直线公式
是直线
上的其中一点;
是直线
上的另外一点;
是直线
外的一点;
是直线
外的一点
在
上的投影;
a.推理
B、向量垂直公式
是直线
上的其中一点;
是直线
上的另外一点;
是直线
外的一点;
是直线
外的一点
在
上的投影;
a.推理
二、结合公式1【直线公式】与公式2【向量垂直公式】
1.原始计算
2.替换计算
三、简化计算结果
其中:
是直线
上的其中一点;
是直线
上的另外一点;
是直线
外的一点;
是直线
外的一点
在
上的投影;
是
到
的向量
,
,
;
四、公式在C#代码中的应用
/// <summary> /// 求直线上的投影点 /// </summary> /// <param name="P1">直线上的点1</param> /// <param name="P2">直线上的点2</param> /// <param name="P3">直线外的点</param> /// <returns></returns> public PointF LinePointProjection(PointF P1,PointF P2,PointF P3) { double a1 = P2.X - P1.X; double b1 = P2.Y - P1.Y; double y1 = P1.Y; double x1 = P1.X; double y2 = P2.Y; double x2 = P2.X; double y3 = P3.Y; double x3 = P3.X; double a1a1 = Math.Pow(a1, 2.0); double b1b1 = Math.Pow(b1, 2.0); double denominator = a1a1 + b1b1; if (denominator == 0) return P3; double x1y2 = x1 * y2; double x2y1 = x2 * y1; double a1b1 = a1 * b1; double moleculey = b1b1 * y3 - a1b1 * x3 - a1 * x1y2 + a1 * x2y1; double moleculex = a1a1 * x3 - a1b1 * y3 - b1 * x2y1 + b1 * x1y2; return new PointF((float)(moleculex/denominator),(float)(moleculey/denominator)); }
来源:https://blog.csdn.net/chenlu5201314/article/details/99697392
是直线
上的其中一点;
是直线
上的另外一点;
是直线
外的一点;
是直线
外的一点
在
上的投影;
是直线
上的其中一点;
是直线
上的另外一点;
是直线
外的一点;
是直线
外的一点
在
上的投影;
是直线
上的其中一点;
是直线
上的另外一点;
是直线
外的一点;
是直线
外的一点
在
上的投影;
是
到
的向量
,
,
;