私の目標は、円の端を囲むランダムな端点と一定の開始点(円の中央)を使用して、パイゲームの線から円の形を作ることです。ですから、pygame.draw.line関数screen、aRandomColor、startingPosition、およびendingPositionを引数として渡すことにしました。終了位置はランダムに生成されたx値を含むタプルであり、ヘルパー関数は円の半径に基づいてy値を計算します。python距離式座標平面誤差
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の値を調整することを知っているが、それは違いを作る必要がありますか?角度のAA均一な分布が0
と2 * math.pi
間のランダムな角度theta
を生成し、ラインの終点の座標を見つけるために三角法を用いることであろう取得の
これらの見た目は[hyperbolas](https://en.wikipedia.org/wiki/Hyperbola)のように見えます... –
これはx軸を横切ってお互いの逆であり、そのため彼らは湾曲して見えます。 – Vityou
'abs(d)
Galax