You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已知两点与长度,如何求解三角形的高及顶端坐标?

求解三角形高顶端坐标问题

我正在尝试求解三角形的高(示意图如下):
三角形示意图

我已获取startPoint、endPoint和Length,代码如下:

Point startPoint = Start.GetPoint();
Point endPoint = End.GetPoint();
double Length = panel.W + startPoint.X;

我已通过两点算出角度,代码如下:

double diffX = endPoint.X - startPoint.X;
double diffY = endPoint.Y - startPoint.Y;
double angleRad = Math.Atan2(diffY, diffX);
double angleDeg = angleRad * (180.0 / Math.PI);

我尝试过用Math.Cos、Math.Sin和Math.Tan相关公式,但均未成功。请问如何求解高?仅靠现有条件能否求出高顶端的(X,Y)坐标?


仅靠现有条件可以求出高顶端坐标,给你两种可行的实现方式:

方法一:利用向量垂直特性计算

  1. 先计算底边的方向向量和长度:
double dx = endPoint.X - startPoint.X;
double dy = endPoint.Y - startPoint.Y;
double baseLength = Math.Sqrt(dx * dx + dy * dy);
  1. 生成垂直于底边的单位向量(有两个方向,若结果方向不对,把-dy换成dy、dx换成-dx即可):
double perpUnitX = -dy / baseLength;
double perpUnitY = dx / baseLength;
  1. 计算高顶端坐标(假设从startPoint作高,若从endPoint出发则替换成endPoint的坐标):
double topX = startPoint.X + perpUnitX * Length;
double topY = startPoint.Y + perpUnitY * Length;

方法二:利用角度偏移计算

基于你已经算出的底边与X轴夹角,将角度偏移90度(垂直方向),再用三角函数计算坐标:

// 角度加90度得到垂直方向的弧度,方向不对就改成减90度(angleRad - Math.PI/2)
double perpAngleRad = angleRad + Math.PI / 2;
double topX = startPoint.X + Math.Cos(perpAngleRad) * Length;
double topY = startPoint.Y + Math.Sin(perpAngleRad) * Length;

两种方法本质一致,选你习惯的即可。需要注意:如果Length不是高的实际长度(你代码里Length = panel.W + startPoint.X逻辑较特殊),要先确保Length是你需要的高的长度值。

内容的提问来源于stack exchange,提问作者Contagrrla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 19:52:44