Здравствуйте, гость ( Вход | Регистрация )

> Принадлежность точки области на плоскости
DarkMaster
сообщение 11.8.2021, 15:44
Сообщение #1


***********

Модератор UOPilot
Сообщений: 9.742
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29657
Пользователь №: 11.279



Первая часть задачи стоит в постороении ромба (коортинаты посчитать) отностиельно некоторой наклоненной прямой. Тут вроде синусами посчитать можно, но это надо садиться вспоминать.
А вот вторая интереснее. Нужно понять принажлежит ли некоторая точка данной области.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
cirus
сообщение 12.8.2021, 2:15
Сообщение #2


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26757
Пользователь №: 16.971
Возраст: 29



Вот вам заняться нечем, когда существуют готовые функции.
Код
--lua
local ffi = require("ffi")
log 'clear' log 'mode compact'

local WINDING = 2
ffi.cdef[[
    typedef long LONG;
    typedef int BOOL;
    typedef void *HGDIOBJ;
    typedef struct tagPOINT { LONG  x; LONG  y;} POINT, *PPOINT, *NPPOINT, *LPPOINT;
    struct HRGN__ { int unused; }; typedef struct HRGN__ *HRGN;
    BOOL PtInRegion(HRGN hrgn, int x, int y);
    HRGN CreatePolygonRgn(const POINT *pptl, int cPoint, int iMode);
    BOOL DeleteObject(HGDIOBJ ho);
]]

local rhomb = ffi.new('POINT[4]', {{50, 0}, {100, 50}, {50, 100}, {0, 50}}) -- координаты ромба

local region = ffi.C.CreatePolygonRgn(rhomb, 4, WINDING)  -- создать регион из 4х точек
if tonumber(ffi.cast('int', region)) ~= 0 then      -- если регион создался
    local result = ffi.C.PtInRegion(region, 50, 70)   -- входит ли точка в регион
    log (result)
    ffi.C.DeleteObject(ffi.cast('HGDIOBJ', region))       -- удалить регион
else
    log ("Регион не создан")
end

Собственно можно любую фигуру создать и проверить входит ли точка в неё.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения



Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 8.7.2025, 14:19
Designed by Nickostyle