मेरा लक्ष्य एक चक्र के किनारे के चारों ओर यादृच्छिक अंतराल और एक प्रारंभिक बिंदु (सर्कल के बीच) का उपयोग करके, पिगमेम में रेखाओं से बाहर सर्कल आकार बनाना है। तो मैंने फैसला किया कि मैं pygame.draw.line फ़ंक्शन देता हूं: स्क्रीन, aRandomColor, startPosition, और endingPosition तर्क के रूप में। समापन स्थिति एक टुपल है जिसमें यादृच्छिक रूप से जेनरेट किया गया x मान होता है, और एक सहायक फ़ंक्शन सर्कल के त्रिज्या के आधार पर y मान की गणना करेगा।पायथन दूरी सूत्र समन्वय विमान त्रुटि
import math
import random
def findY(pos1, pos2, distance, bothValues=False):
p1 =pos1
p2 = pos2
x1 = float(p1[0])
y1 = float(p1[1])
x2 = float(p2[0])
d = float(distance)
y2 = y1 - math.sqrt(d**2 - (x1-x2)**2)
_y2 = y1 + math.sqrt(d**2 - (x1-x2)**2)
if bothValues==True:
return y2, _y2
else:
return y2
और लाइन दराज:
width = 500
height = 500
def randLine(surface, color=rand, start=rand, end=rand,length=rand):
if start==rand:
start = randPos()
if end==rand:
end = randPos()
if color==rand:
color = randColor()
if length != rand:
end_x = float(random.randint(0,width))
end_pos = (end_x, "y")
y2=findMissing(start_pos, end_pos,l,bothValues=True)
a = random.randint(0,1)
if a==0:
y2 = float(y2[0])
else:
y2 = float(y2[1])
lst = list(end_pos)
lst[1] = y2
end_pos = tuple(lst)
pygame.draw.line(surface, color, start_pos, end_pos)
तब:
drawRandLine(screen,start=(200,200),lenght=100)
(अन्य कार्यों है कि नहीं कर रहे उन लोगों randPos तरह तथाकथित 'मेरा पहला समारोह इस तरह y मान की गणना समस्या नहीं है)। किसी कारण से यह एक त्रुटि उत्पन्न हुई जिसे मैंने math.sqrt() के अंदर मान के रूप में निदान किया था, ऋणात्मक संख्या थी। लेकिन ऐसा नहीं हो सकता है, क्योंकि इसमें हर मूल्य 2 की शक्ति में उठाया जाता है, और यही वह है जो मैं उलझन में हूं। इसलिए मैंने math.sqrt() के भीतर मान को अपने पूर्ण मान में बदल दिया। यह बनाया समारोह किसी भी त्रुटि उठाना नहीं है, लेकिन वृत्त तैयार इस तरह देखा:
मुझे पता है कि pygame के विमान के y मूल्यों समन्वय उल्टा है, लेकिन यह एक फर्क करना चाहिए?
वे देखें * संदिग्ध * जैसे [हाइपरबोलस] (https://en.wikipedia.org/wiki/Hyperbola) ... –
वे एक्स अक्ष में एक दूसरे के विपरीत हैं, यही कारण है कि वे घुमावदार दिखते हैं। – Vityou
'math.sqrt (d ** 2 - (x1-x2) ** 2 में' sqrt' के अंदर मान 'वास्तव में ऋणात्मक संख्या हो सकता है, यदि 'abs (d)
Galax