gpt4 book ai didi

python - 带有 PhysUtil 程序的 GlowScript 未运行

转载 作者:行者123 更新时间:2023-12-01 08:16:39 25 4
gpt4 key购买 nike

这是我尝试执行的代码,但它显示了一些我无法理解的错误:

    GlowScript 2.7 VPython

### INITIALIZE VPYTHON
# -----------------------------------------------------------------------
# -*- coding: utf-8 -*-
from __future__ import division
from visual import *
get_library('https://cdn.rawgit.com/PERLMSU/physutil/master/js/physutil.js')
#from physutil import *
from visual.graph import *

### ΔΗΜΙΟΥΡΓΙΑ ΣΤΟΙΧΕΙΩΝ ΓΡΑΦΙΚΩΝ, ΕΞΟΜΟΙΩΣΗΣ, ΟΠΤΙΚΟΠΟΙΗΣΗΣ ΚΑΙ ΧΡΟΝΟΥ
# ------------------------------------------------------------------------

# ΔΗΜΙΟΥΡΓΙΑ ΠΑΡΑΘΥΡΟΥ ΤΙΤΛΟΥ
scene.title = "Horizontal Projectile" #Ορισμός τίτλου
scene.width= 1000
scene.center=vector (500,0,0)
scene.height= 1000

scene.background = (color.black) #Ορισμός ως χρώμα του background το μαύρο
scene.fullscreen = False
# ΔΗΜΙΟΥΡΓΙΑ ΑΝΤΙΚΕΙΜΝΕΝΩΝ ΣΚΗΝΙΚΟΥ (οι μονάδες ειναι σε μέτρα)
field = box(pos = vector(625, 0, 0), size = vector(1250, 0.5, 100), color = color.green, opacity = 0.5) #Δημιουργία του "γήπεδου" ως αντικείμενο box και ορίζονται τα χαρακτηριστικά του οπως διάνυσμα θεσης, μεγεθος, χρώμα και χρωματική διαπερατότητα.
ball = sphere(radius = 5, color = color.blue) #Δημιουργία της "μπάλας" ως αντικείμενο sphere.Ορισμός των χαρακτηριστικών του όπως ακτίνα και χρώμα.

# ΔΗΜΙΟΥΡΓΙΑ ΣΥΣΤΗΜΑΤΟΣ ΑΞΟΝΩΝ - Define axis marks the field with a specified number of tick marks

xaxis = PhysAxis(field, 6, # Ορισμός αριθμού των σημείων τιμών του άξονα Χ
axisType = "x", # Ορισμός ώς οριζόντιος άξονας.
labelOrientation = "down",
startPos = vector(0,0,0),
length = 1000) # Ορισμός αριθμού των σημείων τιμών του άξονα Υ
yaxis = PhysAxis(field, 6, # Ορισμός ώς κατακόρυφος άξονας.
axisType = "y",
labelOrientation = "left",
startPos = vector(0, 0, 0), #Ορισμός αρχής του άξονα Υ ίδιο με αυτής του άξονα Χ
length = 500) #Μονάδες ειναι σε μέτρα

# ΔΗΜΙΟΥΡΓΙΑ ΠΑΡΑΘΥΡΟΥ ΓΡΑΦΙΚΩΝ ΠΑΡΑΣΤΑΣΕΩΝ.--Set up graph with two plots
posgraph = PhysGraph(4, backgroundColor = color.black, xlabel=u'Χρόνος (sec)', #Δημιουργία 4 γραφικών παραστάσεων, ορισμός χρώματος υπόβαθρου το μαύρο, ορισμός ονόματος του άξονα Χ
ylabel=u'Θέση Χ (m)-[Kόκκινο], Θέση Υ (m)-[Πράσινo], Ux (m/s)-[Μπλέ], Uy (m/s)-[Κίτρινο]') #Ορισμός ονόματος του άξονα Υ τα ονόματα των γραφικών παραστάσεων και τα αντίστοιχα χρώματα τους


# ΔΗΜΙΟΥΡΓΙΑ ΙΧΝΟΥΣ ΓΙΑ ΤΗΝ ΑΠΟΤΥΠΩΣΗ ΤΗΣ ΤΡΟΧΙΑΣ ΤΟΥ ΣΩΜΑΤΟΣ Set up trail to mark the ball's trajectory
trail = curve(color = color.white, radius = 1) #Ορισμός χρώματος και ακτίνας της καμπύλης του ίχνους. Οι μονάδες είναι σε μέτρα.

# ΔΗΜΙΟΥΡΓΙΑ ΠΕΔΙΟΥ ΚΙΝΗΣΗΣ ΤΟΥ ΣΩΜΑΤΟΣ--Set up motion map for ball
motionMap = MotionMap(ball, 5, #Αναμοενόμενος χρόνος ολοκλήρωσης προσομοίωσης.
4, #Αριθμός σημείων τροχιάς ανά αναμενόμενο χρόνο προσομοίωσης
markerScale=0.5,
labelMarkerOffset = vector(0, -20, 0),
dropTime = False) #Αν η τιμή είναι True εμφανίζει τη χρονική στιγμή του κάθε σημείου τροχιάς.

# ΟΡΙΣΜΟΣ ΧΡΟΝΟΜΕΤΡΟΥ ΣΤΟ ΠΑΡΑΘΥΡΟ ΠΡΟΣΟΜΟΙΩΣΗΣ Set timer in top right of screen
timerDisplay = PhysTimer(200, 200) #Ορισμός θέσης χρονόμετρου της εξομοίωσης(οι μονάδες είναι σε μέτρα)


### ΟΡΙΣΜΟΣ ΠΑΡΑΜΕΤΡΩΝ ΚΑΙ ΑΡΧΙΚΩΝ ΣΥΝΘΗΚΩΝ ΠΡΟΣΟΜΟΙΩΣΗΣ.
# ----------------------------------------------------------------------------------------

# Ορισμός παραμέτρων
ball.m = 0.6 # Μάζα σώματος σε κιλά Kg-mass of ball in kg
ball.pos = vector(0,100, 0) # Αρχική θέση σώματος σε μορφή συντεταγμένων (x,y,z), οι μονάδες είναι σε μέτρα.
ball.v = vector(150, 0, 0) # Αρχική ταχύτητα σώματος σε μορφή συντεταγμένων (Ux,Uy,Uz), οι μονάδες είναι σε m/s.
Xrand=50
g = vector(0, -9.81, 0) # Επιτάχυνση σώματος λόγω της βαρύτητας σε μορφή συντεταγμένων (ax,ay,az), οι μονάδες είναι σε m/s/s.

# Ορισμός χρονικών παράμετρων
t = 0 # Αρχική τιμή χρόνου
deltat = 0.001 # Ορίζεται το βήμα του χρόνου της εξομοίωσης.
scene.autoscale = False

### ΒΡΟΓΧΟΣ ΥΠΟΛΟΓΙΣΜΟΥ ΤΩΝ ΕΞΙΣΩΣΕΩΝ ΠΕΡΙΓΡΑΦΗΣ ΤΗΣ ΕΞΟΜΟΙΩΣΗΣ ΚΑΙ ΣΧΕΔΙΑΣΜΟΣ ΓΡΑΦΙΚΩΝ.
# ------------------------------------------------------------------------------------

while ball.pos.y > 0 : #Συνάρτηση που επιτρέπει να συνεχίζει να τρέχει ο κώδικας για όσο η τιμή της θέσης του σώματος στον Υ είναι > 0.

# Απαιτειται ώστε να ειναι ορατή η εξέλιξη της εξομοίωσης/ ανανέωση ομαλή ώστε
#να μην εκτελείται το πρόγραμμα περισσότερες από 1000 φορές/sec)
rate(1000)


Fnet = ball.m * g # Υπολογισμός ολικής δύναμης όπου δέχεται το σώμα


ball.v = ball.v + (Fnet/ball.m * deltat) # Συνάρτηση υπολογισμού και ανανέωσης ταχύτητας σώματος της μορφής (U=Uo+a*t) χρησιμοποιώντας το 2ο Νόμο Νεύτωνα.
#ballv = ball.v + (Fnet/ball.m * deltat)
ball.pos = ball.pos + ball.v * deltat
if ball.pos.y<=0:
break
#ball.v=ballv
#ball.pos = ballxy # Συνάρτηση υπολογισμού και ανανέωσης θέσης σώματος κάθε χρονική στιγμή της μορφής (X=Xo+U*t).


# Update motion map, graph, timer, and trail
motionMap.update(t, ball.v)
posgraph.plot(t, ball.pos.x, ball.pos.y, ball.v.x, ball.v.y) #Δημιουργία γραφικής παράστασης για X,Y,Ux,Uy ως προς τον χρόνο
trail.append(pos = ball.pos)
timerDisplay.update(t)


t = t + deltat # Ανανέωση χρόνου εξέλιξης της προσομοίωσης


### ΑΠΟΤΕΛΕΣΜΑ ΚΩΔΙΚΑ
# --------------------------------------------------------------------------------------

# Print the final time and the ball's final position
print ('Ο χρόνος που χρειάζεται για να φτάσει στο έδαφος είναι t='), t,'sec' #Εντολή υπολογισμού και εκτύπωσης χρόνου οριζόντιας βολής
print ('\n') #Κενή γραμμή.
#print 'Το βεληνεκές ειναι:' ,ball.pos.x,"m" #Εντολή υπολογισμού και εκτύπωσης βεληνεκούς οριζόντιας βολής.
#print "\n" #Κενή γραμμή.
#print u'Η τελική θέση στον άξονα Y ειναι:' ,ball.pos.y, "m" #Εντολή υπολογισμού και εκτύπωσης βεληνεκούς οριζόντιας βολής.
#print "\n" #Κενή γραμμή.
#print u'Η συνιστώσα της ταχύτητας στον άξονα Χ τη χρονική στιγμή πριν ακουμπήσει το έδαφος είναι:', ball.v.x, "m/s" #Εντολή υπολογισμού και εκτύπωσης οριζόντιας συνιστώσας ταχύτητας της οριζόντιας βολής.
#print "\n" #Κενή γραμμή.
#print u'Η συνιστώσα της ταχύτητας στον άξονα Y τη χρονική στιγμή πριν ακουμπήσει το έδαφος είναι:', ball.v.y, "m/s" #Εντολή υπολογισμού και εκτύπωσης κατακόρυφης συνιστώσας ταχύτητας της οριζόντιας βολής.
#print "\n" #Κενή γραμμή.
#print u'Ο λόγος του βεληνεκούς προς την αρχική ταχύτητα του σώματος (s/u) ειναι:', ball.pos.x/ball.v.x #Εντολή υπολογισμού και εκτύπωσης του λόγοςυ του βεληνεκούς προς την αρχική ταχύτητα του σώματος (s/u).
#print "\n" #Κενή γραμμή.
#print u' Η κατακόρυφη μετατόπιση του σώματος όταν στον άξονα των Χ βρίσκεται στη θέση Χ=', Xrand, u'm είναι:', (g.y*Xrand**2/(2*ball.v.x**2)) ,"m" #Εντολή υπολογισμού και εκτύπωσης κατακόρυφης μετατόπισης του σώματος από το αρχικό του ύψος της οριζόντιας βολής.
#print "\n"
#print ball.pos

此代码显示以下错误:

ReferenceError: PhysAxis is not defined

ReferenceError: PhysAxis is not defined

At or near line 29: xaxis = PhysAxis(field, 6,

这是第一个错误,接下来可能会显示更多错误。该代码在使用 vidle 和 vpython 的 Windows 计算机上成功执行,但 GlowScript 不接受它。该错误似乎与我在代码第 8 行导入的 PhysUtil 库有关。另外,该代码是来自 PhysUtil 网站的工作示例。在我的 Windows 机器中,定义了 PhysAxis 类,但在 Javascript 文件中显然没有定义。我找不到该文件有什么问题。 GlowScript 对于我想要的用途来说是必不可少的。

如果您找不到 PhysUtil 库:

https://perlmsu.github.io/physutil/installation/

最佳答案

此问题已在 GlowScript 论坛中得到解决。

关于python - 带有 PhysUtil 程序的 GlowScript 未运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54949581/

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