From 73c6ec80c71dd43125b6a9b00dd9e940b827f29f Mon Sep 17 00:00:00 2001 From: Andrew Guschin Date: Tue, 10 Nov 2020 01:15:07 +0300 Subject: =?UTF-8?q?=D0=A0=D0=B0=D0=B7=D0=B4=D0=B5=D0=BB=D0=B8=D0=BB=205=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B4=D0=B0=D1=87=D1=83=20=D0=BD=D0=B0=20=D0=B4?= =?UTF-8?q?=D0=B2=D0=B0=20=D0=BF=D1=80=D0=BE=D0=B5=D0=BA=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- task05/Guschin/Clip.h | 54 --------------------------------------------------- 1 file changed, 54 deletions(-) delete mode 100644 task05/Guschin/Clip.h (limited to 'task05/Guschin/Clip.h') diff --git a/task05/Guschin/Clip.h b/task05/Guschin/Clip.h deleted file mode 100644 index 10a613a..0000000 --- a/task05/Guschin/Clip.h +++ /dev/null @@ -1,54 +0,0 @@ -#pragma once -#include "Matrix.h" -#include - -unsigned int codeKS(vec2 P, float minX, float minY, float maxX, float maxY) { - unsigned int code = 0; - - if (P.x < minX) { - code += 1; - } - else if (P.x > maxX) { - code += 2; - } - if (P.y < minY) { - code += 4; - } - else if (P.y > maxY) { - code += 8; - } - - return code; -} - -bool clip(vec2 & A, vec2 & B, float minX, float minY, float maxX, float maxY) { - unsigned int codeA = codeKS(A, minX, minY, maxX, maxY); - unsigned int codeB = codeKS(B, minX, minY, maxX, maxY); - while (codeA | codeB) { - if (codeA & codeB) { - return false; - } - if (codeA == 0) { - std::swap(A, B); - std::swap(codeA, codeB); - } - if (codeA & 1) { - A.y = A.y + (B.y - A.y) * (minX - A.x) / (B.x - A.x); - A.x = minX; - } - else if (codeA & 2) { - A.y = A.y + (B.y - A.y) * (maxX - A.x) / (B.x - A.x); - A.x = maxX; - } - else if (codeA & 4) { - A.x = A.x + (B.x - A.x) * (minY - A.y) / (B.y - A.y); - A.y = minY; - } - else { - A.x = A.x + (B.x - A.x) * (maxY - A.y) / (B.y - A.y); - A.y = maxY; - } - codeA = codeKS(A, minX, minY, maxX, maxY); - } - return true; -} -- cgit v1.2.3