2

我对三角学一无所知,尽管早在学校就学过三角学,而且我认为这应该很简单,但是在网上浏览大量三角学东西会让我头疼:)所以也许有人可以帮助我...

标题准确地解释了我想要做什么,我有一条线:x1,y1 和 x2,y2 并且想要一个函数来找到 x3,y3 以在给定高度的情况下完成一个等腰三角形。

为了清楚起见,线 x1,y2 -> x2,y2 将是基础,它不会与任何轴对齐(它将以随机角度..)

有没有人有一个简单的功能?

4

3 回答 3

4

构造向量 (x1,y1)->(x2,y2) 的法线。将它放在中点 ((x1+x2)/2,(y1+y2)/2) 并走出一段距离 h。

法线看起来像(-(y2-y1),x2-x1)。将其设为单位向量(http://en.wikipedia.org/wiki/Unit_vector)。

将 h 乘以这个单位向量到中点。

于 2008-12-07T22:55:18.430 回答
2

第三个点在你的底边的垂直平分线上,与altitude这条线相距单位。

  1. 通过平均 x 和 y 坐标来计算底的中点。
  2. 计算海拔的斜率:-dx/dy(垂直于 dy/dx)。你现在有了你的线(点和斜率)。
    • y - 我的 = -dx/dy * (x - mx)
  3. 在距离公式中替换您的变量:d = sqrt(dx^2 + dy^2)
    1. d = sqrt((x - mx)^2 + (y - my)^2)
    2. d = sqrt((x - mx)^2 + (-dx/dy * (x - mx))^2)
    3. d^2 = (x - mx)^2 + (-dx/dy * (x - mx))^2
    4. d^2 - (x - mx)^2 = (-dx/dy * (x - mx))^2
    5. ±sqrt(d^2 - (x - mx)^2) = -dx/dy * (x - mx)
    6. ±sqrt(d^2 - (x - mx)^2) * dy/dx = x - mx
    7. ±sqrt(d^2 - (x - mx)^2) * dy/dx + mx = x
    8. x = ±sqrt(d^2 - (x - mx)^2) * dy/dx + mx
  4. 使用您的线方程(来自#2)计算另一个变量(此处为 y)。
  5. 你现在有两点;选择你想要的...

在伪代码中:

dx = x1 - x2
midpoint = ((x1 + x2) / 2, (y1 + y2) / 2)
slope = -dx / (y1 - y2)
x = sqrt(altitude*altitude - dx*dx) / slope + midpoint.x
y = slope * (x - midpoint.x) + midpoint.y

这可能不是最理想的方法。不确定它是否有效。xD

于 2008-12-07T22:51:14.820 回答
0

我记得的是,等腰三角形的边长相等,底角相等。如果你有高度,那么你就有最终坐标,因为这将是交点,对吧?

于 2008-12-07T22:53:08.980 回答