2017-10-31 4 views
-1

以上です。問題があります。 与えられた行のセット内にある三角形の数を調べるために、プログラムを作成します。私は、行の交差点でそれを計算したいと思います。python:問題は

私は線の交差点に問題があります。私の問題は、交差点が線分にあるかどうかを調べることです。ここに私のコードは次のとおりです。

def Schnittkorrekt (xs,ys,x1,x2,y1,y2): 
    global y 
    global x 
    global z 
    global w 
    global c 
    global x3 
    global y3 
    global z2 
    global w2 
    global x21 
    global x22 
    global y21 
    global y22 
    print (Schnittpunkt(x1,x2,y1,y2,x21,x22,y21,y22)) 
    if (x1 <= xs) and (y1 <= ys) and (xs <= x2) and (ys <= y2): 
     return ('cool') 
    elif (x1 <= xs) and (y2 <= ys) and (xs <= x2) and (ys <= y1): 
     return ('cool') 
    elif (x2 <= xs) and (y1 <= ys) and (xs <= x1) and (ys <= y2): 
     return ('cool') 
    elif (x2 <= xs) and (y2 <= ys) and (xs <= x1) and (ys <= y1): 
     return ('cool') 
    else: 
     return ('uncool') 

X1、X2、Y1、Y2はインクルードは

X21、X22、Y21、Y22最初のラインセグメントの先頭/エンドポイントですされているインクルードがの始まり/エンドポイントですされています第二線分

XS、YSが交差点

の座標であり、それは常に「格好悪い」アウト与えるテスト目的のために右

すべきではありません私は、これらの座標のXSとYSと

x1=4 
x2=5 
y1=4 
y2=6 
x21 = 8 
x22 = 1 
y21 = 1 
y22 = 8 

を選んだは、それはあなたがグローバル定数を参照される方法に起因する可能性があり、事前

+1

入力した入力を 'xs = 4.33'と' ys = 4.66'で試してみましたが、これはあなたが意味するものです。それは正常に働いた。 [mcve]を投稿してください。 – khelwood

+0

あなたのロジックはここにあります(私も「クール」になります)。しかし、 'retutn'を使うと関数を使うと思います。だからあなたの間違いは関数の使用が間違っているためです(おそらく変数の範囲を調べる必要があります) –

答えて

0

で4,33と4,66

感謝しています。 (あなたの完全な機能なしでは分かりません)グローバル定数は、function definition if you wish to reference themglobalキーワードで宣言する必要があります。

次の関数は、文字列coolを返します。

def intersections(xs, ys): 
    # global variable declarations 
    global x1 
    global x2 
    global y1 
    global y2 
    global x21 
    global x22 
    global y21 
    global y22 
    str_test = '' 
    if (x1 <= xs) and (y1 <= ys) and (xs <= x2) and (ys <= y2): 
     str_test = 'cool' 
    elif (x1 <= xs) and (y2 <= ys) and (xs <= x2) and (ys <= y1): 
     str_test = 'cool' 
    elif (x2 <= xs) and (y1 <= ys) and (xs <= x1) and (ys <= y2): 
     str_test = 'cool' 
    elif (x2 <= xs) and (y2 <= ys) and (xs <= x1) and (ys <= y1): 
     str_test = 'cool' 
    else: 
     str_test = 'uncool' 
    return str_test 

print intersections(4.33, 4.66) 
+0

その部分のコード全体を追加します。ありがとう – Banana