为什么 Python 中的 sin 和 cos 函数不适合我?

Phi*_*ipp -3 python math trigonometry

我对这种数学很陌生,在校机上没有它。所以我的问题是从球面坐标到网格(x 和 y 的半径和角度)的变化。首先,我将圆分成均匀的角度。到这里一切正常。当它们变形时,它们到中心的距离都相同,但接缝旋转是随机的。这可以从像 4 这样的低数字中看出。该项目的最终目的是绘制一个心形曲线,因为我需要一个带有点的圆。所以这是我的代码:

from tkinter import *
from math import *
import round_canvas as round

#settings
speed = 1 # in ms
window_size = 700
cellamount = 20
cell = window_size / cellamount
r = 300
pointSize = 20
animationSize = window_size - cell*4

#colors:
#48979b
#7cbeba
#a7c7b3
#d9beac
#f5e6d9

#window
win = Tk()
win.title("heart")
win.resizable(False, False)
win.geometry(str(window_size) + "x" + str(window_size))
win.configure(background="#f5e6d9")

# variables
point_amount = 4
point_cords = [] # saves point rotations in list (place in list coresponds to number of point)

# canvas
canvas = Canvas(win, width=window_size, height=window_size, bg="#f5e6d9", 
highlightthickness=0)
canvas.place(x=0,y=0)
canvas_overlay = round.round_rectangle(canvas, cell, cell, cell*cellamount-cell, 
cell*cellamount-cell, radius=40, fill="#d9beac")

# functions:
def drawPoints():
    for point in range(0, point_amount):
        #print(point)
        localPoint = 360/(point_amount)*point
        point_cords.append(localPoint)

def showPoints():
    for angle in point_cords:
        print(angle)
        localX = cos(angle)*r+window_size/2 # https://www.youtube.com/watch?v=O5wjXoFrau4&t=635s
        localY = sin(angle)*r+window_size/2
        print(localX, localY)
        visiblePoint = canvas.create_oval(localX-pointSize/2, localY-pointSize/2, localX+pointSize/2, localY+pointSize/2, width=0, fill="#7cbeba")

# main
def main():
    drawPoints()
    showPoints()

win.after(speed,main)
win.mainloop()
Run Code Online (Sandbox Code Playgroud)

dan*_*n04 7

Python 的三角函数以弧度为单位而不是度数来获取角度。

math.radians您可以使用和轻松地在两个单位之间进行转换math.degrees。

>>> math.sin(math.radians(45))
0.7071067811865476
Run Code Online (Sandbox Code Playgroud)

  • 对于我所知道的每种语言都是如此:C、C++、C#、Java、Kotlin、Python、R。我从未听说过任何语言实现三角函数以度数作为输入。 (2认同)