gpt4 book ai didi

javascript - 所以我有一个三 Angular 形,点 (100, 90) 距离 (11) 和线的 Angular (45º) 我可以找到线的另一个点吗?如何?

转载 作者:行者123 更新时间:2023-11-30 12:47:51 26 4
gpt4 key购买 nike

好的,所以我正在尝试在 JavaScript Canvas 上绘制一个三 Angular 形,该三 Angular 形可以完全随机

所以我得到了三 Angular 形 ABC 的 Angular 和边(这不是我在代码中所说的)

侧面

AB(11)
AC(12)
BC(13)

在函数中求解的 Angular

BAC(69)
ABC(52)
BCA(59)

三 Angular 形的起点在(100, 90)

我遇到的问题是如何找到三 Angular 形的其他点我认为最简单的绘制方法是绘制一条指向每个点的线

所以我用这段代码厌倦了数学(我在另一页上找到了但是)

function FindTriPoints(){
//Y2 = H(Sin(A)) + Y1
//X2 = Sqrt((H^2)-(Y2^2)) + X1
pointX1 = 100;
pointY1 = 90;

pointY2 = s3 * (Math.sin(angle1*Math.PI/180)) + pointY1;
pointX2 = Math.sqrt((s3 * s3) - (pointY2 * pointY2)) + pointX1;

alert("X2 = " + pointX2 + "\n Y2 = " + pointY2)
}

但 X2 最终变成了 NaN,因为它是一个正试图求平方根的负值。

编辑感谢 Cbroe 和 Jing3142 帮助我完成 Y2

最佳答案

好吧,如果你知道有效的三 Angular 形边长 (l1,l2,l3) 和它们的 Angular (a,b,c) ...

  • 那么用矢量数学就很简单了...

triangle

// compute directions
a1=0;
a2=180-b;
a3=a2+180-c;
a3=-b-c;
a3=-a;
// convert them from [deg] to [rad]
a1*=Math.pi/180.0;
a2*=Math.pi/180.0;
a3*=Math.pi/180.0;
// compute points
A=(x0,y0); // your start point is known
B=A+l1*dir(a0)=(x0+l1*Math.cos(a0),y0+l1*Math.sin(a0));
B=A+l1*dir( 0)=(x0+l1 ,y0 ); // a0 is always zero
C=A-l3*dir(a3)=(x0-l3*Math.cos(a3),y0-l3*Math.sin(a3)); // C from A point
C=B+l2*dir(a2)=(x0+l1+l2*Math.cos(a2),y0+l2*Math.sin(a2)); // C from B point

[注释]

  • 如您所见,某些变量有更多替代方案 选择您喜欢的一个
  • 不要忘记检查 l1+l2>l3 和 l1+l3>l2 和 l2+l3>l1
  • 如果不是那么你的长度不是有效的三 Angular 形边
  • 也是 a+b+c = 180
  • 如果不是那么你的 Angular 计算是错误的
  • 如果您想过度检查三 Angular 形,则根据AB 点计算C
  • 如果它们不相同(它们的距离 > 某个精度常数,例如 0.001)
  • 那么它不是一个有效的三 Angular 形

关于javascript - 所以我有一个三 Angular 形,点 (100, 90) 距离 (11) 和线的 Angular (45º) 我可以找到线的另一个点吗?如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21941121/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com