Tema 1471: [Copa Puente Azul] Intersección de área rectangular

Tema 1471: [Copa Puente Azul] Intersección de área rectangular


Cepille la Copa Blue Bridge con Teacher Ma

Enlace del tema del profesor Ma


1. Descripción del título

Hay dos rectángulos en el plano, sus lados son paralelos al eje X o Y del sistema de coordenadas cartesiano. Para cada rectángulo, damos las coordenadas de un par de vértices opuestos. Programe para calcular el área de intersección de los dos rectángulos.

2. Ingrese

La entrada contiene solo dos líneas, cada línea describe un rectángulo.

En cada fila se dan las coordenadas de un par de vértices relativos del rectángulo, y las coordenadas de cada punto están representadas por dos números reales cuyo valor absoluto no excede 10 ^ 7.

3. Salida

La salida contiene solo un número real, que es el área de intersección, que está reservada a dos lugares decimales.

4. Entrada de muestra

1 1 3 3 
2 2 4 4 

5. Salida de muestra

1.00

 6. Solución:

xy1 = list(map(float,input().split()))
xy2 = list(map(float,input().split()))
rx = min(max(xy1[0],xy1[2]),max(xy2[0],xy2[2]))
lx = max(min(xy1[0],xy1[2]),min(xy2[0],xy2[2]))
uy = min(max(xy1[1],xy1[3]),max(xy2[1],xy2[3]))
dy = max(min(xy1[1],xy1[3]),min(xy2[1],xy2[3]))
w,h = rx-lx,uy-dy
if w<=0.0 or h<=0.00:
    print("0.00")
else:
    #print((str(w*h)+"00").split(".")[0]+"."+(str(w*h)+"00").split(".")[1][:2:])    不进位输出小数点后两位
    print("%.2f"%(w*h))

El pensamiento del profesor Ma:

#思路:

# 要对矩形做规范化处理。即左上角的坐标要小于右下角的坐标。
# 根据不同情况分别确定相交矩形左右上下,四条边的x,y坐标。
# 根据坐标确定矩形的长与宽。
# 求出矩形的面积。



while True:
    try:
        a = list(map(float, input().strip().split()))
        b = list(map(float, input().strip().split()))
        
        # 对矩形做规范化处理
        a = [min(a[0], a[2]), min(a[1], a[3]), max(a[0], a[2]), max(a[1], a[3])]
        b = [min(b[0], b[2]), min(b[1], b[3]), max(b[0], b[2]), max(b[1], b[3])]
        
        # 确定每条边的坐标
        xl = max(a[0], b[0])
        xr = min(a[2], b[2])
        yup = max(a[1], b[1])
        ydown = min(a[3], b[3])
        
        # 确定矩阵的长与宽
        w = xr - xl
        h = ydown - yup
        
        # 求出矩形的面积
        if w > 0 and h > 0:
            print("%.2f" % (w * h))
        else:
            print("0.00")
    except:
        break

 

Supongo que te gusta

Origin blog.csdn.net/adminkeys/article/details/112972164
Recomendado
Clasificación