Перейти к публикации
Форум - ComputerCraft
JaggerDer

Минибиблиотека rectangle

Рекомендованные сообщения

У меня в закромах завалялся небольшой файлик с функциями для работы с прямоугольниками. Лично мне эта библиотечка понадобилась всего пару раз(для создания кнопок). И я посчитал, что, может быть, все эти функции могут кому-то понадобиться.

 

Как всегда приведу краткое описание функций:

  • CreateRectXYWH(name:string, x:number, y:number, width:number, height:number):table
    Создает структуру прямоугольника используя информацию о местоположении(x, y),высоте и ширине.
  • CreateRectXYXY(name:string, sx:number, sy:number, ex:number, ey:number):table
    Создает структуру прямоугольника используя информацию о местоположении двух точкек.
  • CreateVoidRect(name:string):table
    Создает "пустой" прямоугольник, т.е. структуру с нулевыми значениями.


     
  • PointInRectFree(x:number, y:number, sx:number, sy:number, ex:number, ey:number):boolean
    Проверяет, лежит ли точка(x, y) внутри прямоугольника заданного двумя точками. Возвращает true, если точка лежит внутри прямоугольника, а false в противном случае.
  • PointInRect(x:number, y:number, rect:table):boolean
    Делает то же самое что и PointInRectFree, только с использованием структуры прямоугольника.
  • bIntersectRects(rect1:table, rect2:table):boolean
    Проверяет, пересеклись ли два прямоугольника, возвращает true, если да. False - если нет.
  • IntersectRects(rect1:table, rect2:table):table
    Делает то же самое, что и bIntersectRects, но возвращает прямоугольник образованный пересечением двух заданных.

 

Структура прямоугольника выглядит следующим образом:

local _rectangle =
{
	["name"] = name,
	["sx"] = x,
	["sy"] = y,
	["ex"] = x+width,
	["ey"] = y+height,
	["width"] = width,
	["height"] = height,
	["area"] = width * height
}
  1. name  - название прямоугольника.
  2. sx, sy - первая точка прямоугольника.
  3. ex, ey - вторая точка прямоугольника.
  4. width, height - ширина высота.
  5. area - площадь прямоугольника.

То что мне нравиться тут, так это то, что мы можем задать прямоугольник как x, y, width, height и такие параметры как sx, sy, ex, ey вычислятся автоматически. :3

 

Так же я написал "небольшой" пример, который использует все функции библиотеки и выдает следующее:

 

 

39dbf36320006f7ea04dff77cd8bac3a.png

81362a794a3d557221c4c69c76c42d7a.png

 

 

 

Скачать можно с репозитория гитхаба или установив с помощью следующей строки:

Библиотека: wget https://raw.githubusercontent.com/Pirnogion/OpenComputers_library/master/others/rectangle.lua lib/rectangle.lua
Пример: wget https://raw.githubusercontent.com/Pirnogion/OpenComputers_library/master/others/rectExample rectExample
Изменено пользователем JaggerDer
  • Like 6

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А че ты последние 2 метода написал в фигурных скобках? Это lua же)


И оператор "||"...

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А че ты последние 2 метода написал в фигурных скобках? Это lua же)

И оператор "||"...

Действительно, это же не будет работать. Я не уверен, что вообще скомпилируется. Нужно проверять свой код.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Действительно, это же не будет работать. Я не уверен, что вообще скомпилируется. Нужно проверять свой код.

 

Щас НЕО прибежит и будет тебя ругать.

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спокойно. Без паники. Только спокойствие. Исправил. Последние две функции я переписывал с JavaScript и немного накосячил. На всякий случай сейчас проверю их в майне.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Щас НЕО прибежит и будет тебя ругать.

Ругай, ты вообще про что?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ругай, ты вообще про что?

 

Действительно, это же не будет работать. Я не уверен, что вообще скомпилируется. Нужно проверять свой код.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

LeshaInc, успокойся. Уже можно не паниковать, т.к. все работает - проверено. :)

Изменено пользователем JaggerDer

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×