【发布时间】:2017-07-20 06:38:22
【问题描述】:
好的,所以我需要在 JavaScript 中弄清楚如何在三角形上绘制第三个点。见下图。
A 和 B 将是随机点(可能是正数或负数,具体取决于它们相对于 0,0 原点的位置。)
因此 A 和 B 是已知点(x 和 y)。
我已经想出了如何根据 A 和 B 绘制 C。
我想要控制的 C 和 D 之间的距离。例如我想说“C和D之间的距离现在是20px...D在哪里?”
所以我想例如我们可以说 C&D 之间的距离是 20px。这意味着我有 CD 和 CB,但没有 DB。我也知道 C(x,y) 和 B(x,y)。
我现在需要找到 D...我不是一个数学头脑,所以请像我 5 岁一样向我解释它。我已经用谷歌搜索了多次,尝试使用多个示例,但我仍然丢失了...例如:我看到一些提到phi的方程式..什么是phi?如何在 JavaScript 术语中使用 phi 等...
总结:
A(x,y) is known (randomized)
B(x,y) is known (randomized)
C(x,y) is known (midpoint of AB)
CB is known (using distance formula)
CD = 20 pixels (or whatever I set it to).
DB = ???
D(x,y) = ???
这是我目前所拥有的,但它可能是错误的..
var Aeh = {x:50, y:75};
var Bee = {x:300, y:175};
var Cee = {x:0, y:0};
var Dee = {x:0, y:0};
window.onload = function(){
refreshPoints();
solveForC();
}
function refreshPoints(){
TweenLite.set("#pointA", {x:Aeh.x, y:Aeh.y});
TweenLite.set("#pointB", {x:Bee.x, y:Bee.y});
TweenLite.set("#pointC", {x:Cee.x, y:Cee.y});
TweenLite.set("#pointD", {x:Dee.x, y:Dee.y});
}
function solveForC() {
Cee.x = (Bee.x + Aeh.x)/2;
Cee.y = (Bee.y + Aeh.y)/2;
refreshPoints();
solveForD();
}
function solveForD() {
// Dee.x = AB * Cos(Φ) + x_1
// Dee.y = AB * Sin(Φ) + y_1
Dee.x = (Cee.x+Bee.x/2) * Math.cos((1 + Math.sqrt(5)) / 2) + Cee.x;
Dee.y = (Cee.y+Bee.y/2) * Math.sin((1 + Math.sqrt(5)) / 2) + Cee.y;
refreshPoints();
}
【问题讨论】:
-
你有没有试过任何代码?
-
我根据其他人在网上发布的一些方程式尝试了上面发布的代码。不过,我有点在黑暗中拍摄,因为我不懂数学。
-
你需要知道 C 到 A 或 B 之间的距离,除非 C 是 AB 的中点?而且我们还需要知道 AB D 的哪一边,否则会有两种解决方案。
-
C 是中点,所以我可以很容易地找到 C 和 B 之间的距离。我希望能够将 D 随机翻转到任一侧,所以,我不确定这将如何工作..我想我需要这两种解决方案.. 摘要:A 已知(随机) B 已知(随机) C = 已知(AB 的中点) CB 已知 CD = 20 像素(或我设置的任何值)。 DB = ???
标签: javascript html animation math trigonometry