zoukankan      html  css  js  c++  java
  • 判断坐标每4点是否成矩形

    在坐标点表CUX_POINTS里,找出每4个点是否围成矩形,如ABCD, EFGH, IJKL 成矩形。

     

     

    CREATE TABLE CUX_POINTS

    (

    SEGMENT1 VARCHAR2(30 BYTE),

    ROW_POSITION NUMBER,

    COLUMN_POSITION NUMBER

    )

     

    --A(1,1),B(1,2),C21),D22),E(3,3),F34),G(4,3),H44

     

    ----------------------------------------------------------------------------

     

     

     

    BEGIN

     

    INSERT INTO CUX_POINTS VALUES('A', 1, 1);

    INSERT INTO CUX_POINTS VALUES('B', 1, 2);

    INSERT INTO CUX_POINTS VALUES('C', 2, 1);

    INSERT INTO CUX_POINTS VALUES('D', 2, 2);

     

    INSERT INTO CUX_POINTS VALUES('E', 3, 3);

    INSERT INTO CUX_POINTS VALUES('F', 3, 4);

    INSERT INTO CUX_POINTS VALUES('G', 4, 3);

    INSERT INTO CUX_POINTS VALUES('H', 4, 4);

     

    INSERT INTO CUX_POINTS VALUES('I', 5, 5);

    INSERT INTO CUX_POINTS VALUES('J', 5, 6);

    INSERT INTO CUX_POINTS VALUES('K', 6, 5);

    INSERT INTO CUX_POINTS VALUES('L', 6, 6);

     

    COMMIT;

     

    END;

     

    ----------------------------------------------------------------------------

     

    SELECT REPLACE(E.RECT, ',', '') RECT, E.RECT_POSITION

    FROM(

    SELECT D.RECT, D.RECT_POSITION, ROW_NUMBER() OVER(PARTITION BY D.RECT ORDER BY D.RECT) ID

    FROM

    (

    SELECT (CASE WHEN ASCII(C1.LINE)<ASCII(C2.LINE) THEN (C1.LINE|| ',' ||C2.LINE) ELSE (C2.LINE|| ',' ||C1.LINE) END) RECT,

    (C1.POSITION1||'('||C1.X1||','||C1.Y1||')' || ' ' ||C1.POSITION2||'('||C1.X2||','||C1.Y2||')'

    || ' ' || C2.POSITION1||'('||C2.X1||','||C2.Y1||')' || ' ' ||C2.POSITION2||'('||C2.X2||','||C2.Y2||')') RECT_POSITION

    FROM

    (

    SELECT B.LINE, B.POSITION1, B.X1, B.Y1, B.POSITION2, B.X2, B.Y2, B.ID

    FROM(

    SELECT A.LINE, A.POSITION1, A.X1, A.Y1, A.POSITION2, A.X2, A.Y2, ROW_NUMBER() OVER(PARTITION BY A.LINE ORDER BY A.LINE) ID

    FROM(

    SELECT (CASE WHEN ASCII(P1.SEGMENT1)<ASCII(P2.SEGMENT1) THEN (P1.SEGMENT1|| ',' ||P2.SEGMENT1) ELSE (P2.SEGMENT1|| ',' ||P1.SEGMENT1) END) LINE,

    P1.SEGMENT1 POSITION1, P1.ROW_POSITION X1, P1.COLUMN_POSITION Y1, P2.SEGMENT1 POSITION2, P2.ROW_POSITION X2, P2.COLUMN_POSITION Y2

    FROM CUX_POINTS P1, CUX_POINTS P2

    WHERE 1=1

    AND P1.ROW_POSITION = P2.ROW_POSITION

    AND P1.SEGMENT1 <> P2.SEGMENT1

    ) A

    ) B

    WHERE 1=1

    AND B.ID = 1

    ) C1

    ,

    (

    SELECT B.LINE, B.POSITION1, B.X1, B.Y1, B.POSITION2, B.X2, B.Y2, B.ID

    FROM(

    SELECT A.LINE, A.POSITION1, A.X1, A.Y1, A.POSITION2, A.X2, A.Y2, ROW_NUMBER() OVER(PARTITION BY A.LINE ORDER BY A.LINE) ID

    FROM(

    SELECT (CASE WHEN ASCII(P1.SEGMENT1)<ASCII(P2.SEGMENT1) THEN (P1.SEGMENT1|| ',' ||P2.SEGMENT1) ELSE (P2.SEGMENT1|| ',' ||P1.SEGMENT1) END) LINE,

    P1.SEGMENT1 POSITION1, P1.ROW_POSITION X1, P1.COLUMN_POSITION Y1, P2.SEGMENT1 POSITION2, P2.ROW_POSITION X2, P2.COLUMN_POSITION Y2

    FROM CUX_POINTS P1, CUX_POINTS P2

    WHERE 1=1

    AND P1.ROW_POSITION = P2.ROW_POSITION

    AND P1.SEGMENT1 <> P2.SEGMENT1

    ) A

    ) B

    WHERE 1=1

    AND B.ID = 1

    ) C2

    WHERE 1=1

    AND C1.Y1 = C2.Y1

    AND C1.Y2 = C2.Y2

    AND SUBSTR(TRIM(C1.LINE), 1, INSTR(TRIM(C1.LINE), ',', 1)-1) <> SUBSTR(TRIM(C2.LINE), 1, INSTR(TRIM(C2.LINE), ',', 1)-1)

    AND SUBSTR(TRIM(C1.LINE), 1, INSTR(TRIM(C1.LINE), ',', 1)-1) <> SUBSTR(TRIM(C2.LINE), INSTR(TRIM(C2.LINE), ',', 1)+1)

    AND SUBSTR(TRIM(C2.LINE), INSTR(TRIM(C1.LINE), ',', 1)+1) <> SUBSTR(TRIM(C2.LINE), 1, INSTR(TRIM(C2.LINE), ',', 1)-1)

    AND SUBSTR(TRIM(C1.LINE), INSTR(TRIM(C1.LINE), ',', 1)+1) <> SUBSTR(TRIM(C2.LINE), INSTR(TRIM(C2.LINE), ',', 1)+1)

    ) D

    ) E

    WHERE 1=1

    AND E.ID = 1

     

  • 相关阅读:
    Node.js安装及环境配置之Windows篇
    盘点.NET JIT在Release下由循环体优化所产生的不确定性Bug
    开源!一款功能强大的高性能二进制序列化器Bssom.Net
    开源 , KoobooJson一款高性能且轻量的JSON框架
    通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?
    .Net Web开发技术栈
    web安全:通俗易懂,以实例讲述破解网站的原理及如何进行防护!如何让网站变得更安全。
    .Net高级进阶,教你如何构建企业模型数据拦截层,动态控制字段验证
    .Net 如何模拟会话级别的信号量,对http接口调用频率进行限制(有demo)
    .Net高级进阶,在复杂的业务逻辑下,如何以最简练的代码,最直观的编写事务代码?
  • 原文地址:https://www.cnblogs.com/quanweiru/p/2698874.html
Copyright © 2011-2022 走看看