這個問題在這里已經有了答案: math.sin 不正確的結果 2 個答案 3 小時前關閉。
我是這種數學的新手,在學校的飛機上沒有。所以我的問題是從球坐標到網格的變化(半徑和角度到 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()
uj5u.com熱心網友回復:
Python 的三角函式以弧度而不是度數為單位。
math.radians您可以使用和在兩個單位之間輕松轉換math.degrees。
>>> math.sin(math.radians(45))
0.7071067811865476
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/454725.html
上一篇:如何從網路抓取中獲得的數字中洗掉浮動中的空白空間?錯誤:無法將字串轉換為浮點數:'1\xa0364'
下一篇:有沒有辦法讓字串作為串列索引?
