gpt4 book ai didi

以增加的角度绘制线条

转载 作者:行者123 更新时间:2023-12-04 23:08:38 25 4
gpt4 key购买 nike

我不太擅长数学或几何,但我想以增加的角度绘制一些线段。我想画的是当你举起你的手并分开你的手指时:从一个共同点开始并以它们之间具有相等差异的角度扩展的线。

我试过这个:

len = 300;
angle = 10;

for (i = 0; i <= 5; ++i) {
endPointX = 50 + len * Math.cos(angle);
endPointY = 50 + len * Math.tan(angle);
draw.Line(50, 50, endPointX, endPointY);
angle += 10;
}

然而,这是完全错误的,并产生了这样的东西

http://i.stack.imgur.com/taX40.png

但我想要这样的东西(糟糕的 mspaint,抱歉):

http://i.stack.imgur.com/8xfpp.png

什么是正确的数学方法?

最佳答案

您的问题中有两个独立的问题,我将分别介绍。

这是您的情况的ASCII图片:

                   B                   +                  /|                 / |                /  |               /   |         len  /    | y             /     |            /      |           /       |          /      __|         / θ    |  |        +----------+      A      x       C

This is a right triangle. It has three sides:

  • The diagonal side in the picture opposite to the 90° angle is called the hypotenuse and has a length len. The hypotenuse is what you're trying to draw.
  • The vertical side is the side opposite to the angle θ and has a length y.
  • The horizontal side is the side adjacent to the angle θ and has a length x.

Given the above illustration the following equations are true:

cos(θ) = x/len
sin(θ) = y/len

这些方程是另一种说法:
  • 角的余弦等于相邻边的长度除以斜边的长度。
  • 角的正弦等于对边的长度除以斜边的长度。

  • 求解 x 的方程时和 y , 你得到:
    x = len * cos(θ)
    y = len * sin(θ)

    所以你想要 sin()cos() ,不是 cos()tan() .如果点 A不在原点,您需要偏移 xy另外,像这样:
    x = len * cos(θ) + 50
    y = len * sin(θ) + 50

    使用 x 的值和 y ,您可以找到点 B 的坐标在三角形上,从而能够画出你的线条。

    此外,假设您使用 Java 编程, Math 中的三角函数类(class)期待 radians 中的角度,不是度数。很多提供三角函数的编程语言都是这样的。

    弧度和度数测量相同的东西,但以度为单位的完整旋转来自 0360°而弧度的完整旋转来自 0 .

    要将以度为单位的角度转换为弧度,请将角度乘以 π/180 .在 Java 中,常量 πMath.PI 提供.

    例如,10° 度角相当于 10 * π/180 , 或 π/18弧度。

    关于以增加的角度绘制线条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5559895/

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